Index: cinnamon-settings-daemon/plugins/power/csd-power-manager.c =================================================================== --- cinnamon-settings-daemon.orig/plugins/power/csd-power-manager.c 2014-07-26 21:44:58.490885083 +0200 +++ cinnamon-settings-daemon/plugins/power/csd-power-manager.c 2014-07-26 22:11:41.186589948 +0200 @@ -236,6 +236,10 @@ static void lock_screensaver (CsdPowerManager *manager); static void kill_lid_close_safety_timer (CsdPowerManager *manager); +#if UP_CHECK_VERSION(0,99,0) +static void device_properties_changed_cb (UpDevice *device, GParamSpec *pspec, CsdPowerManager *manager); +#endif + G_DEFINE_TYPE (CsdPowerManager, csd_power_manager, G_TYPE_OBJECT) static gpointer manager_object = NULL; @@ -990,6 +994,16 @@ "engine-state-old", GUINT_TO_POINTER(state)); } + +#if UP_CHECK_VERSION(0,99,0) + g_ptr_array_add (manager->priv->devices_array, g_object_ref(device)); + + g_signal_connect (device, "notify::state", + G_CALLBACK (device_properties_changed_cb), manager); + g_signal_connect (device, "notify::warning-level", + G_CALLBACK (device_properties_changed_cb), manager); +#endif + } static gboolean @@ -1714,7 +1728,11 @@ } static void +#if UP_CHECK_VERSION(0,99,0) +device_properties_changed_cb (UpDevice *device, GParamSpec *pspec, CsdPowerManager *manager) +#else engine_device_changed_cb (UpClient *client, UpDevice *device, CsdPowerManager *manager) +#endif { UpDeviceKind kind; UpDeviceState state; @@ -3986,12 +4004,12 @@ G_CALLBACK (engine_device_added_cb), manager); g_signal_connect (manager->priv->up_client, "device-removed", G_CALLBACK (engine_device_removed_cb), manager); - g_signal_connect (manager->priv->up_client, "device-changed", - G_CALLBACK (engine_device_changed_cb), manager); #if UP_CHECK_VERSION(0,99,0) g_signal_connect_after (manager->priv->up_client, "notify::lid-is-closed", G_CALLBACK (lid_state_changed_cb), manager); #else + g_signal_connect (manager->priv->up_client, "device-changed", + G_CALLBACK (engine_device_changed_cb), manager); g_signal_connect_after (manager->priv->up_client, "changed", G_CALLBACK (up_client_changed_cb), manager); #endif