diff --git a/gdk/gdkseatdefault.c b/gdk/gdkseatdefault.c index a83901a692..98ea6335fa 100644 --- a/gdk/gdkseatdefault.c +++ b/gdk/gdkseatdefault.c @@ -396,6 +396,7 @@ gdk_seat_default_remove_slave (GdkSeatDefault *seat, priv->capabilities |= device_get_capability (GDK_DEVICE (l->data)); gdk_seat_device_removed (GDK_SEAT (seat), device); + g_object_unref (device); } else if (g_list_find (priv->slave_keyboards, device)) { @@ -405,6 +406,7 @@ gdk_seat_default_remove_slave (GdkSeatDefault *seat, priv->capabilities &= ~GDK_SEAT_CAPABILITY_KEYBOARD; gdk_seat_device_removed (GDK_SEAT (seat), device); + g_object_unref (device); } } diff --git a/gdk/x11/gdkdevicemanager-xi2.c b/gdk/x11/gdkdevicemanager-xi2.c index 135a0512aa..00e64d2a84 100644 --- a/gdk/x11/gdkdevicemanager-xi2.c +++ b/gdk/x11/gdkdevicemanager-xi2.c @@ -643,14 +643,14 @@ remove_device (GdkX11DeviceManagerXI2 *device_manager, if (device) { detach_from_seat (device); - device_manager->devices = g_list_remove (device_manager->devices, device); - - g_signal_emit_by_name (device_manager, "device-removed", device); - - g_object_run_dispose (G_OBJECT (device)); g_hash_table_remove (device_manager->id_table, GINT_TO_POINTER (device_id)); + + device_manager->devices = g_list_remove (device_manager->devices, device); + g_signal_emit_by_name (device_manager, "device-removed", device); + g_object_run_dispose (G_OBJECT (device)); + g_object_unref (device); } }