[mutter/wip/carlosg/repeat-source-leak: 2/2] backends/native: Unref/unset key repeat GSource when cleared




commit b4a7f35146a32cdcd8638eb97b8a84d236cd4e75
Author: Carlos Garnacho <carlosg gnome org>
Date:   Fri Apr 23 22:53:27 2021 +0200

    backends/native: Unref/unset key repeat GSource when cleared
    
    This GSource is not being properly unref nor the variable holding it
    cleared. This on one hand leaks the GSource memory, on the other hand
    may trigger warnings in keyboard_repeat() as the source may be
    (reentrantly) cleared, yet we don't exit early as
    seat_impl->repeat_source is never NULL.
    
    Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1839>

 src/backends/native/meta-seat-impl.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)
---
diff --git a/src/backends/native/meta-seat-impl.c b/src/backends/native/meta-seat-impl.c
index 9137dc3c9c..a7613627f3 100644
--- a/src/backends/native/meta-seat-impl.c
+++ b/src/backends/native/meta-seat-impl.c
@@ -244,8 +244,10 @@ meta_seat_impl_clear_repeat_source (MetaSeatImpl *seat_impl)
   if (seat_impl->repeat_source)
     {
       g_source_destroy (seat_impl->repeat_source);
-      g_clear_object (&seat_impl->repeat_device);
+      g_clear_pointer (&seat_impl->repeat_source, g_source_unref);
     }
+
+  g_clear_object (&seat_impl->repeat_device);
 }
 
 static void


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]