diff options
| author | Albrecht Schlosser <albrechts.fltk@online.de> | 2024-06-21 17:55:36 +0200 |
|---|---|---|
| committer | Albrecht Schlosser <albrechts.fltk@online.de> | 2024-06-21 17:59:50 +0200 |
| commit | a053b424458a7c1d7762e7d8f43d22042cc0d7d0 (patch) | |
| tree | e940e287c4975a6d22ec26bc9ad2bed24e095287 /src | |
| parent | 456d53c403c478dd7a5eaf08abead6a7ac2808a0 (diff) | |
Fix Wayland memory leak (#991)
Diffstat (limited to 'src')
| -rw-r--r-- | src/drivers/Wayland/Fl_Wayland_Screen_Driver.cxx | 8 |
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); |
