aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortaw27 <taw27@bf6ca9ba-c028-0410-8290-897cf20841d1>2007-02-14 14:13:42 +0000
committertaw27 <taw27@bf6ca9ba-c028-0410-8290-897cf20841d1>2007-02-14 14:13:42 +0000
commit7144216342686b49e4f759c2fdd8de4946db8fdb (patch)
tree1fedc52bfdded273bae0fb9bb34c3e74a5f71ce3
parent10ece6fb4017738589e4cad309b9d4091a2745a3 (diff)
Trap further downstream if IPR fails
git-svn-id: svn://cook.msm.cam.ac.uk:745/diff-tomo/dtr@7 bf6ca9ba-c028-0410-8290-897cf20841d1
-rw-r--r--src/ipr.c6
-rw-r--r--src/ipr.h2
-rw-r--r--src/main.c4
3 files changed, 7 insertions, 5 deletions
diff --git a/src/ipr.c b/src/ipr.c
index 720369f..5fa7ace 100644
--- a/src/ipr.c
+++ b/src/ipr.c
@@ -243,13 +243,13 @@ static void ipr_sort(ReflectionContext *rctx) {
}
-void ipr_reduce(ControlContext *ctx) {
+int ipr_reduce(ControlContext *ctx) {
Basis *basis;
basis = ipr_choose_initial_basis(ctx);
- if ( !basis ) return;
ctx->reflectionctx->basis = basis;
+ if ( !basis ) return -1;
/* Get rid of the original list and replace it with the prediction list */
reflection_clear(ctx->reflectionctx);
@@ -259,5 +259,7 @@ void ipr_reduce(ControlContext *ctx) {
/* Sort the reflections into order of increasing g */
ipr_sort(ctx->reflectionctx);
+
+ return 0;
}
diff --git a/src/ipr.h b/src/ipr.h
index 149e523..3fcb40d 100644
--- a/src/ipr.h
+++ b/src/ipr.h
@@ -18,6 +18,6 @@
#include "control.h"
-extern void ipr_reduce(ControlContext *ctx);
+extern int ipr_reduce(ControlContext *ctx);
#endif /* IPR_H */
diff --git a/src/main.c b/src/main.c
index a89fdf9..7f5d5c9 100644
--- a/src/main.c
+++ b/src/main.c
@@ -58,8 +58,8 @@ static gint main_method_window_response(GtkWidget *method_window, gint response,
val = mrc_read(ctx);
}
- if ( ctx->rmode == RECONSTRUCTION_PREDICTION ) {
- ipr_reduce(ctx);
+ if ( !val && (ctx->rmode == RECONSTRUCTION_PREDICTION) ) {
+ val = ipr_reduce(ctx);
}
if ( val == 0 ) {