From 88f7be23b0d3d6e69ad8d99f22c567c022564e18 Mon Sep 17 00:00:00 2001 From: Harry Jeffery Date: Fri, 12 Jul 2019 22:19:28 +0100 Subject: Fix event loop hanging --- src/imv.c | 10 +++------- src/window.c | 2 +- 2 files changed, 4 insertions(+), 8 deletions(-) (limited to 'src') diff --git a/src/imv.c b/src/imv.c index b81d9a8..299dddb 100644 --- a/src/imv.c +++ b/src/imv.c @@ -896,13 +896,6 @@ int imv_run(struct imv *imv) while (!imv->quit) { - imv_window_pump_events(imv->window, event_handler, imv); - - /* if we're quitting, don't bother drawing any more images */ - if (imv->quit) { - break; - } - /* Check if navigator wrapped around paths lists */ if (!imv->loop_input && imv_navigator_wrapped(imv->navigator)) { break; @@ -1069,6 +1062,9 @@ int imv_run(struct imv *imv) /* Go to sleep until an input/internal event or the timeout expires */ imv_window_wait_for_event(imv->window, timeout); + + /* Handle the new events that have arrived */ + imv_window_pump_events(imv->window, event_handler, imv); } if (imv->list_files_at_exit) { diff --git a/src/window.c b/src/window.c index 34c5da1..1709468 100644 --- a/src/window.c +++ b/src/window.c @@ -424,7 +424,7 @@ void imv_window_push_event(struct imv_window *window, struct imv_event *e) void imv_window_pump_events(struct imv_window *window, imv_event_handler handler, void *data) { - wl_display_dispatch_pending(window->wl_display); + wl_display_dispatch(window->wl_display); pthread_mutex_lock(&window->events.mutex); if (handler) { -- cgit v1.2.3