summaryrefslogtreecommitdiff
path: root/src/drivers
diff options
context:
space:
mode:
authorAlbrecht Schlosser <albrechts.fltk@online.de>2024-06-21 17:55:36 +0200
committerAlbrecht Schlosser <albrechts.fltk@online.de>2024-06-21 17:59:50 +0200
commita053b424458a7c1d7762e7d8f43d22042cc0d7d0 (patch)
treee940e287c4975a6d22ec26bc9ad2bed24e095287 /src/drivers
parent456d53c403c478dd7a5eaf08abead6a7ac2808a0 (diff)
Fix Wayland memory leak (#991)
Diffstat (limited to 'src/drivers')
-rw-r--r--src/drivers/Wayland/Fl_Wayland_Screen_Driver.cxx8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/drivers/Wayland/Fl_Wayland_Screen_Driver.cxx b/src/drivers/Wayland/Fl_Wayland_Screen_Driver.cxx
index 98fcc5b8e..15aede7a9 100644
--- a/src/drivers/Wayland/Fl_Wayland_Screen_Driver.cxx
+++ b/src/drivers/Wayland/Fl_Wayland_Screen_Driver.cxx
@@ -774,8 +774,12 @@ static void wl_keyboard_key(void *data, struct wl_keyboard *wl_keyboard,
} else {
remove_int_vector(key_vector, for_key_vector);
// Under KDE, the time value received doesn't change at each keystroke as it should,
- // so we remove any key repeat timer at each FL_KEYUP event.
- Fl::remove_timeout((Fl_Timeout_Handler)key_repeat_timer_cb);
+ // so we remove any (i.e. the next) key repeat timer at each FL_KEYUP event.
+ void *key_repeat_data = NULL;
+ int removed = Fl::remove_next_timeout((Fl_Timeout_Handler)key_repeat_timer_cb,
+ NULL, &key_repeat_data);
+ if (removed)
+ delete (key_repeat_data_t *)key_repeat_data;
}
Fl::e_text = buf;
Fl::e_length = (int)strlen(buf);