diff options
| author | Evan Broder <evan@ebroder.net> | 2012-04-11 00:19:06 -0700 |
|---|---|---|
| committer | Richard Hughes <richard@hughsie.com> | 2012-04-11 17:54:11 +0100 |
| commit | 6fb36eb5eb85386d2e1c5d9fb760d68053d8afc5 (patch) | |
| tree | cfab325383cd8f9ce342c9daa3b21c7e2b91cc0d | |
| parent | 1bb2b11b24b8538275705533c15160afee0176e2 (diff) | |
Re-coldplug dock status when resuming from sleep
It's possible for the docked state of a laptop (i.e. the display
connectivity state) to change while the laptop is asleep.
Signed-off-by: Evan Broder <evan@ebroder.net>
Signed-off-by: Richard Hughes <richard@hughsie.com>
| -rw-r--r-- | src/linux/up-dock.c | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/src/linux/up-dock.c b/src/linux/up-dock.c index 78fb7d3..f9a7c67 100644 --- a/src/linux/up-dock.c +++ b/src/linux/up-dock.c @@ -33,6 +33,7 @@ struct UpDockPrivate UpDaemon *daemon; GUdevClient *gudev_client; guint poll_id; + guint notify_resume_id; }; G_DEFINE_TYPE (UpDock, up_dock, G_TYPE_OBJECT) @@ -120,6 +121,17 @@ up_dock_set_should_poll (UpDock *dock, gboolean should_poll) } /** + * up_dock_notify_resume_cb + */ +static void +up_dock_notify_resume_cb (UpDaemon *daemon, + const gchar *sleep_kind, + UpDock *dock) +{ + up_dock_refresh (dock); +} + +/** * up_dock_coldplug: **/ gboolean @@ -127,6 +139,9 @@ up_dock_coldplug (UpDock *dock, UpDaemon *daemon) { /* save daemon */ dock->priv->daemon = g_object_ref (daemon); + dock->priv->notify_resume_id = g_signal_connect (dock->priv->daemon, "notify-resume", + G_CALLBACK (up_dock_notify_resume_cb), + dock); return up_dock_refresh (dock); } @@ -170,6 +185,8 @@ up_dock_finalize (GObject *object) g_return_if_fail (dock->priv != NULL); g_object_unref (dock->priv->gudev_client); + if (dock->priv->notify_resume_id != 0) + g_signal_handler_disconnect (dock->priv->daemon, dock->priv->notify_resume_id); if (dock->priv->daemon != NULL) g_object_unref (dock->priv->daemon); if (dock->priv->poll_id != 0) |
