aboutsummaryrefslogtreecommitdiff
path: root/src/gui_peaksearch.c
diff options
context:
space:
mode:
authorThomas White <taw@physics.org>2020-08-26 15:39:04 +0200
committerThomas White <taw@physics.org>2020-08-26 15:39:04 +0200
commitdef8f985760d3f2b9a40e02fc4a971d82e8acbea (patch)
tree7b3a698a83d5d7a806f9c8472d0191cb9904f6fc /src/gui_peaksearch.c
parent76ff5be086e96a8f763fd99d21acbc170ff76036 (diff)
Only update peak search values if they have changed
This fixes the speed regression caused by the previous commit.
Diffstat (limited to 'src/gui_peaksearch.c')
-rw-r--r--src/gui_peaksearch.c25
1 files changed, 19 insertions, 6 deletions
diff --git a/src/gui_peaksearch.c b/src/gui_peaksearch.c
index 93afbbe1..09988588 100644
--- a/src/gui_peaksearch.c
+++ b/src/gui_peaksearch.c
@@ -127,6 +127,7 @@ struct param_callback_vals
{
float *pfval;
int *pival;
+ char *str_val;
struct crystfelproject *proj;
};
@@ -152,9 +153,14 @@ static void int_param_callback(GtkWidget *entry,
return;
}
- *(cbvals->pival) = val;
- cbvals->proj->unsaved = 1;
- update_peaks(cbvals->proj);
+ /* Only update peaks if value has changed */
+ if ( strcmp(cbvals->str_val, text) != 0 ) {
+ *(cbvals->pival) = val;
+ cbvals->proj->unsaved = 1;
+ update_peaks(cbvals->proj);
+ free(cbvals->str_val);
+ cbvals->str_val = strdup(text);
+ }
}
@@ -178,9 +184,14 @@ static void float_param_callback(GtkWidget *entry,
return;
}
- *(cbvals->pfval) = val;
- cbvals->proj->unsaved = 1;
- update_peaks(cbvals->proj);
+ /* Only update peaks if value has changed */
+ if ( strcmp(cbvals->str_val, text) != 0 ) {
+ *(cbvals->pfval) = val;
+ cbvals->proj->unsaved = 1;
+ update_peaks(cbvals->proj);
+ free(cbvals->str_val);
+ cbvals->str_val = strdup(text);
+ }
}
@@ -225,6 +236,7 @@ static void add_int_param(GtkWidget *params_box, const char *labeltext,
if ( cbvals != NULL ) {
cbvals->proj = proj;
cbvals->pival = pval;
+ cbvals->str_val = strdup(tmp);
g_signal_connect_data(G_OBJECT(entry),
"activate",
G_CALLBACK(int_param_callback),
@@ -265,6 +277,7 @@ static void add_float_param(GtkWidget *params_box, const char *labeltext,
if ( cbvals != NULL ) {
cbvals->proj = proj;
cbvals->pfval = pval;
+ cbvals->str_val = strdup(tmp);
g_signal_connect_data(G_OBJECT(entry),
"activate",
G_CALLBACK(float_param_callback),