From 801c5e03d47e4a7fc2b940f1e4ca596b62c1ecff Mon Sep 17 00:00:00 2001 From: IoIxD Date: Tue, 5 May 2026 19:04:19 -0700 Subject: [PATCH] fix opengl wayland flicklering --- src/backend/wayland/interfaces.c | 6 +++++- src/backend/wayland/wayland.c | 5 ----- src/core.c | 1 + 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/backend/wayland/interfaces.c b/src/backend/wayland/interfaces.c index 427be52..d7565fd 100644 --- a/src/backend/wayland/interfaces.c +++ b/src/backend/wayland/interfaces.c @@ -783,7 +783,11 @@ static void keyboard_key(void* data, if(key != -1) { if(state == WL_KEYBOARD_KEY_STATE_PRESSED) { - MwLLDispatch(self, key, &key); + MwLL topmost_parent = self; + while(topmost_parent->wayland.parent) { + MwLLDispatch(topmost_parent, key, &key); + topmost_parent = topmost_parent->wayland.parent; + } } else { MwLLDispatch(self, key_released, &key); } diff --git a/src/backend/wayland/wayland.c b/src/backend/wayland/wayland.c index f3fc349..449e343 100644 --- a/src/backend/wayland/wayland.c +++ b/src/backend/wayland/wayland.c @@ -1108,11 +1108,6 @@ static int MwLLPendingImpl(MwLL handle) { if((pending = wl_display_dispatch_pending(handle->wayland.display)) < 0) { wl_display_cancel_read(handle->wayland.display); } - } - - if(MwWaylandAlwaysRender) { - handle->wayland.did_event_loop_early = MwTRUE; - event_loop(handle); return pending; } diff --git a/src/core.c b/src/core.c index d30f538..2a7b579 100644 --- a/src/core.c +++ b/src/core.c @@ -870,6 +870,7 @@ void MwDispatchUserHandler(MwWidget handle, const char* key, void* handler_data) int ind = shgeti(handle->handler, key); int p = handle->prop_event; int i; + if(ind == -1) return; if(handle->destroyed) return;