diff options
author | Landry Breuil <landry@openbsd.org> | 2022-08-10 09:02:47 +0200 |
---|---|---|
committer | Landry Breuil <landry@openbsd.org> | 2022-08-10 09:02:47 +0200 |
commit | b643f272a70edb5ee4107c861a77973efdc94213 (patch) | |
tree | d3e2e6b91a44d42c75e80d1541553c44af4a022a | |
parent | d4259c009b3ca1169dfd19231a040c233fc3b58d (diff) | |
download | upower-b643f272a70edb5ee4107c861a77973efdc94213.tar.gz |
openbsd: move most initialization code from _init to _coldplug (fixes #201)
regression from the refactoring in bd488fac
-rw-r--r-- | src/openbsd/up-backend.c | 113 |
1 files changed, 55 insertions, 58 deletions
diff --git a/src/openbsd/up-backend.c b/src/openbsd/up-backend.c index d84ad3f..f648682 100644 --- a/src/openbsd/up-backend.c +++ b/src/openbsd/up-backend.c @@ -33,6 +33,7 @@ static void up_backend_init (UpBackend *backend); static void up_backend_finalize (GObject *object); static gboolean up_backend_apm_get_power_info(struct apm_power_info*); +static gpointer up_backend_apm_event_thread(gpointer object); UpDeviceState up_backend_apm_get_battery_state_value(u_char battery_state); static void up_backend_update_acpibat_state(UpDevice*, struct sensordev); static void up_backend_update_lid_status(UpDaemon*); @@ -127,10 +128,63 @@ up_apm_device_get_online (UpDevice *device, gboolean * online) gboolean up_backend_coldplug (UpBackend *backend, UpDaemon *daemon) { - backend->priv->daemon = g_object_ref (daemon); + GError *err = NULL; + UpDeviceClass *device_class; + gint64 current_time; + backend->priv = up_backend_get_instance_private (backend); + backend->priv->daemon = g_object_ref (daemon); + backend->priv->is_laptop = up_native_is_laptop(); + g_debug("is_laptop:%d",backend->priv->is_laptop); if (backend->priv->is_laptop) { + UpApmNative *acnative = NULL; + UpApmNative *battnative = NULL; + + acnative = up_apm_native_new("/ac"); + battnative = up_apm_native_new("/batt"); + + backend->priv->ac = UP_DEVICE(up_device_new (backend->priv->daemon, G_OBJECT(acnative))); + backend->priv->battery = UP_DEVICE(up_device_new (backend->priv->daemon, G_OBJECT(battnative))); + + g_object_unref (acnative); + g_object_unref (battnative); + + device_class = UP_DEVICE_GET_CLASS (backend->priv->battery); + device_class->get_on_battery = up_apm_device_get_on_battery; + device_class->get_online = up_apm_device_get_online; + device_class->refresh = up_apm_device_refresh; + device_class = UP_DEVICE_GET_CLASS (backend->priv->ac); + device_class->get_on_battery = up_apm_device_get_on_battery; + device_class->get_online = up_apm_device_get_online; + device_class->refresh = up_apm_device_refresh; + /* creates thread */ + if((backend->priv->apm_thread = (GThread*) g_thread_try_new("apm-poller",(GThreadFunc)up_backend_apm_event_thread, (void*) backend, &err)) == NULL) + { + g_warning("Thread create failed: %s", err->message); + g_error_free (err); + } + + /* setup dummy */ + current_time = g_get_real_time () / G_USEC_PER_SEC; + g_object_set (backend->priv->battery, + "type", UP_DEVICE_KIND_BATTERY, + "power-supply", TRUE, + "is-present", TRUE, + "is-rechargeable", TRUE, + "has-history", TRUE, + "state", UP_DEVICE_STATE_UNKNOWN, + "percentage", 0.0f, + "time-to-empty", (gint64) 0, + "update-time", (guint64) current_time, + (void*) NULL); + g_object_set (backend->priv->ac, + "type", UP_DEVICE_KIND_LINE_POWER, + "online", TRUE, + "power-supply", TRUE, + "update-time", (guint64) current_time, + (void*) NULL); + up_backend_update_lid_status(daemon); if (!g_initable_init (G_INITABLE (backend->priv->ac), NULL, NULL)) g_warning ("failed to coldplug ac"); @@ -142,7 +196,6 @@ up_backend_coldplug (UpBackend *backend, UpDaemon *daemon) else g_signal_emit (backend, signals[SIGNAL_DEVICE_ADDED], 0, backend->priv->battery); } - return TRUE; } @@ -597,63 +650,7 @@ up_backend_class_init (UpBackendClass *klass) static void up_backend_init (UpBackend *backend) { - GError *err = NULL; - UpDeviceClass *device_class; - gint64 current_time; - backend->priv = up_backend_get_instance_private (backend); - backend->priv->is_laptop = up_native_is_laptop(); - g_debug("is_laptop:%d",backend->priv->is_laptop); - if (backend->priv->is_laptop) - { - UpApmNative *acnative = NULL; - UpApmNative *battnative = NULL; - - acnative = up_apm_native_new("/ac"); - battnative = up_apm_native_new("/batt"); - - backend->priv->ac = UP_DEVICE(up_device_new (backend->priv->daemon, G_OBJECT(acnative))); - backend->priv->battery = UP_DEVICE(up_device_new (backend->priv->daemon, G_OBJECT(battnative))); - - g_object_unref (acnative); - g_object_unref (battnative); - - device_class = UP_DEVICE_GET_CLASS (backend->priv->battery); - device_class->get_on_battery = up_apm_device_get_on_battery; - device_class->get_online = up_apm_device_get_online; - device_class->refresh = up_apm_device_refresh; - device_class = UP_DEVICE_GET_CLASS (backend->priv->ac); - device_class->get_on_battery = up_apm_device_get_on_battery; - device_class->get_online = up_apm_device_get_online; - device_class->refresh = up_apm_device_refresh; - /* creates thread */ - if((backend->priv->apm_thread = (GThread*) g_thread_try_new("apm-poller",(GThreadFunc)up_backend_apm_event_thread, (void*) backend, &err)) == NULL) - { - g_warning("Thread create failed: %s", err->message); - g_error_free (err); - } - - /* setup dummy */ - current_time = g_get_real_time () / G_USEC_PER_SEC; - g_object_set (backend->priv->battery, - "type", UP_DEVICE_KIND_BATTERY, - "power-supply", TRUE, - "is-present", TRUE, - "is-rechargeable", TRUE, - "has-history", TRUE, - "state", UP_DEVICE_STATE_UNKNOWN, - "percentage", 0.0f, - "time-to-empty", (gint64) 0, - "update-time", (guint64) current_time, - (void*) NULL); - g_object_set (backend->priv->ac, - "type", UP_DEVICE_KIND_LINE_POWER, - "online", TRUE, - "power-supply", TRUE, - "update-time", (guint64) current_time, - (void*) NULL); - } - backend->priv->config = up_config_new (); backend->priv->seat_manager_proxy = g_dbus_proxy_new_for_bus_sync (G_BUS_TYPE_SYSTEM, 0, |