diff options
| author | Federico Angelilli <code@fedang.net> | 2024-02-08 11:01:29 +0100 |
|---|---|---|
| committer | Federico Angelilli <code@fedang.net> | 2024-02-08 11:01:29 +0100 |
| commit | 042dde0ef9b3ba213285066aacae105740422ac2 (patch) | |
| tree | ba7432cf98ba98cdce65e5b5a7f5e6007d2811c2 /src/state.c | |
| parent | c13a74d93c62e8e867afcbed487bcbc7955b29e7 (diff) | |
Experimental change to state_redraw
Diffstat (limited to 'src/state.c')
| -rw-r--r-- | src/state.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/src/state.c b/src/state.c index 0054076..0debb1f 100644 --- a/src/state.c +++ b/src/state.c @@ -10,6 +10,7 @@ State *state_create(Window *win, Drawable *draw) state->win = win; state->draw = draw; state->btns = NULL; + state->id = 0; return state; } @@ -25,6 +26,7 @@ static gboolean redraw_and_layout(gpointer data) State *state = data; draw_compute_layout(state->draw, state->win, state->btns); draw_paint(state->draw, state->win); + state->id = 0; return G_SOURCE_REMOVE; } @@ -32,6 +34,7 @@ static gboolean redraw(gpointer data) { State *state = data; draw_paint(state->draw, state->win); + state->id = 0; return G_SOURCE_REMOVE; } @@ -40,7 +43,11 @@ static gboolean redraw(gpointer data) // This could probably be fixed by implementing a redraw source... void state_redraw(State *state, bool changed_layout) { - g_idle_add_full(G_PRIORITY_HIGH_IDLE, changed_layout ? redraw_and_layout : redraw, state, NULL); + // XXX: Override old redraw + if (state->id != 0) + g_source_remove(state->id); + + state->id = g_idle_add_full(G_PRIORITY_HIGH_IDLE, changed_layout ? redraw_and_layout : redraw, state, NULL); } void state_destroy(State *state) |
