diff --git a/src/backends/meta-input-settings.c b/src/backends/meta-input-settings.c index cb5bf1473..86c3ef641 100644 --- a/src/backends/meta-input-settings.c +++ b/src/backends/meta-input-settings.c @@ -53,6 +53,7 @@ struct _DeviceMappingInfo MetaInputSettings *input_settings; ClutterInputDevice *device; GSettings *settings; + guint changed_id; #ifdef HAVE_LIBWACOM WacomDevice *wacom_device; #endif @@ -1208,6 +1209,7 @@ device_mapping_info_free (DeviceMappingInfo *info) if (info->wacom_device) libwacom_destroy (info->wacom_device); #endif + g_signal_handler_disconnect (info->settings, info->changed_id); g_object_unref (info->settings); g_slice_free (DeviceMappingInfo, info); } @@ -1252,8 +1254,9 @@ check_add_mappable_device (MetaInputSettings *input_settings, } #endif - g_signal_connect (settings, "changed", - G_CALLBACK (mapped_device_changed_cb), info); + info->changed_id = g_signal_connect (settings, "changed", + G_CALLBACK (mapped_device_changed_cb), + info); g_hash_table_insert (priv->mappable_devices, device, info);