X-Git-Url: https://git.draconx.ca/gitweb/liblbx.git/blobdiff_plain/256cc05240e58eb10bb4ffd44e942ed28f00c27e..355bc49a264c582f780710a09338ed30dbeb1475:/src/gui/lbxgui.c diff --git a/src/gui/lbxgui.c b/src/gui/lbxgui.c index da03cfb..2c1235a 100644 --- a/src/gui/lbxgui.c +++ b/src/gui/lbxgui.c @@ -83,7 +83,7 @@ static void tick(void *p, double delta) struct lbx_imginfo info; GtkSpinButton *spin; GtkToggleButton *play; - unsigned frame; + unsigned frame, newframe; if (!image) return; @@ -97,20 +97,22 @@ static void tick(void *p, double delta) return; elapsed += delta; + newframe = frame; while (elapsed > seconds_per_frame) { elapsed -= seconds_per_frame; - if (++frame >= info.nframes) { + if (++newframe >= info.nframes) { if (!info.looping) { gtk_toggle_button_set_active(play, FALSE); break; } - frame = info.loopstart; + newframe = info.loopstart; } - - gtk_spin_button_set_value(spin, frame); } + + if (frame != newframe) + gtk_spin_button_set_value(spin, newframe); } static gboolean timeout(gpointer data) @@ -492,7 +494,7 @@ int main(int argc, char **argv) init_interface(); gtk_builder_connect_signals(builder, window); - g_timeout_add(10, timeout, NULL); + g_timeout_add_full(G_PRIORITY_DEFAULT_IDLE, 10, timeout, NULL, NULL); gtk_widget_show_all(window); init_background(canvas->window);