mirror of
https://gitlab.freedesktop.org/upower/upower.git
synced 2025-12-20 06:40:04 +01:00
Add an option for polling dock devices in UPower.conf, defaulting to false
This commit is contained in:
parent
11301ae3d6
commit
38199e44ff
5 changed files with 62 additions and 3 deletions
|
|
@ -20,3 +20,12 @@ SleepTimeout=1000
|
|||
# default=true
|
||||
AllowHibernateEncryptedSwap=true
|
||||
|
||||
|
||||
# Poll the kernel for dock state changes.
|
||||
#
|
||||
# Some drivers are still broken, and do not send out uvents when the
|
||||
# connected state changes.
|
||||
#
|
||||
# default=false
|
||||
PollDockDevices=false
|
||||
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ INCLUDES = \
|
|||
-DUP_COMPILATION \
|
||||
-DG_UDEV_API_IS_SUBJECT_TO_CHANGE \
|
||||
-DG_LOG_DOMAIN=\"UPower-Linux\" \
|
||||
-DPACKAGE_SYSCONF_DIR=\""$(sysconfdir)"\" \
|
||||
-I$(top_srcdir)/libupower-glib \
|
||||
$(USB_CFLAGS) \
|
||||
$(GIO_CFLAGS) \
|
||||
|
|
|
|||
|
|
@ -283,6 +283,38 @@ up_backend_uevent_signal_handler_cb (GUdevClient *client, const gchar *action,
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* up_backend_should_poll_docks:
|
||||
**/
|
||||
static gboolean
|
||||
up_backend_should_poll_docks (void)
|
||||
{
|
||||
gboolean ret;
|
||||
GKeyFile *keyfile;
|
||||
GError *error = NULL;
|
||||
|
||||
/* get the settings from the config file */
|
||||
keyfile = g_key_file_new ();
|
||||
ret = g_key_file_load_from_file (keyfile,
|
||||
PACKAGE_SYSCONF_DIR "/UPower/UPower.conf",
|
||||
G_KEY_FILE_NONE,
|
||||
&error);
|
||||
if (!ret) {
|
||||
g_error ("Failed to get poll setting, assuming FALSE: %s",
|
||||
error->message);
|
||||
g_error_free (error);
|
||||
goto out;
|
||||
}
|
||||
ret = g_key_file_get_boolean (keyfile,
|
||||
"UPower",
|
||||
"PollDockDevices",
|
||||
NULL);
|
||||
g_debug ("Polling docks: %s", ret ? "YES" : "NO");
|
||||
out:
|
||||
g_key_file_free (keyfile);
|
||||
return ret;
|
||||
}
|
||||
|
||||
/**
|
||||
* up_backend_coldplug:
|
||||
* @backend: The %UpBackend class instance
|
||||
|
|
@ -323,6 +355,8 @@ up_backend_coldplug (UpBackend *backend, UpDaemon *daemon)
|
|||
|
||||
/* add dock update object */
|
||||
backend->priv->dock = up_dock_new ();
|
||||
ret = up_backend_should_poll_docks ();
|
||||
up_dock_set_should_poll (backend->priv->dock, ret);
|
||||
ret = up_dock_coldplug (backend->priv->dock, daemon);
|
||||
if (!ret)
|
||||
g_warning ("failed to coldplug dock devices");
|
||||
|
|
|
|||
|
|
@ -103,6 +103,22 @@ up_dock_poll_cb (UpDock *dock)
|
|||
return TRUE;
|
||||
}
|
||||
|
||||
/**
|
||||
* up_dock_coldplug:
|
||||
**/
|
||||
void
|
||||
up_dock_set_should_poll (UpDock *dock, gboolean should_poll)
|
||||
{
|
||||
if (should_poll && dock->priv->poll_id == 0) {
|
||||
dock->priv->poll_id = g_timeout_add_seconds (UP_DOCK_POLL_TIMEOUT,
|
||||
(GSourceFunc) up_dock_poll_cb,
|
||||
dock);
|
||||
} else if (dock->priv->poll_id > 0) {
|
||||
g_source_remove (dock->priv->poll_id);
|
||||
dock->priv->poll_id = 0;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* up_dock_coldplug:
|
||||
**/
|
||||
|
|
@ -111,9 +127,6 @@ up_dock_coldplug (UpDock *dock, UpDaemon *daemon)
|
|||
{
|
||||
/* save daemon */
|
||||
dock->priv->daemon = g_object_ref (daemon);
|
||||
dock->priv->poll_id = g_timeout_add_seconds (UP_DOCK_POLL_TIMEOUT,
|
||||
(GSourceFunc) up_dock_poll_cb,
|
||||
dock);
|
||||
return up_dock_refresh (dock);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -51,6 +51,8 @@ GType up_dock_get_type (void);
|
|||
UpDock *up_dock_new (void);
|
||||
gboolean up_dock_coldplug (UpDock *dock,
|
||||
UpDaemon *daemon);
|
||||
void up_dock_set_should_poll (UpDock *dock,
|
||||
gboolean should_poll);
|
||||
|
||||
G_END_DECLS
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue