From e7e9156fe9f7ba3aaec7056e8a5fa10a9ec85259 Mon Sep 17 00:00:00 2001 From: Cosimo Cecchi Date: Sat, 30 May 2015 12:32:39 -0700 Subject: [PATCH] daemon: port UpDaemon to GDBus --- src/Makefile.am | 11 +- src/up-daemon.c | 420 ++++++++++-------------------------------------- src/up-daemon.h | 17 +- 3 files changed, 96 insertions(+), 352 deletions(-) diff --git a/src/Makefile.am b/src/Makefile.am index c9dd2a1..d159835 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -36,8 +36,9 @@ AM_CPPFLAGS = \ UPOWER_LIBS = $(top_builddir)/libupower-glib/libupower-glib.la BUILT_SOURCES = \ - up-daemon-glue.h \ up-device-glue.h \ + up-daemon-generated.h \ + up-daemon-generated.c \ up-kbd-backlight-generated.h \ up-kbd-backlight-generated.c \ up-wakeups-generated.h \ @@ -51,8 +52,12 @@ up-marshal.h: up-marshal.list up-marshal.c: up-marshal.list echo "#include \"up-marshal.h\"" > $@ && glib-genmarshal $< --prefix=up_marshal --body >> $@ -up-daemon-glue.h: org.freedesktop.UPower.xml Makefile.am - dbus-binding-tool --prefix=up_daemon --mode=glib-server --output=up-daemon-glue.h $(srcdir)/org.freedesktop.UPower.xml +up-daemon-generated.h: org.freedesktop.UPower.xml Makefile.am + $(AM_V_GEN) gdbus-codegen --interface-prefix org.freedesktop.UPower. \ + --generate-c-code up-daemon-generated \ + --c-namespace Up \ + --annotate "org.freedesktop.UPower" "org.gtk.GDBus.C.Name" ExportedDaemon \ + $(srcdir)/org.freedesktop.UPower.xml up-device-glue.h: org.freedesktop.UPower.Device.xml Makefile.am dbus-binding-tool --prefix=up_device --mode=glib-server --output=up-device-glue.h $(srcdir)/org.freedesktop.UPower.Device.xml diff --git a/src/up-daemon.c b/src/up-daemon.c index a4ff3e1..7460ca6 100644 --- a/src/up-daemon.c +++ b/src/up-daemon.c @@ -29,8 +29,6 @@ #include #include #include -#include -#include #include "up-config.h" #include "up-device-list.h" @@ -38,32 +36,13 @@ #include "up-backend.h" #include "up-daemon.h" -#include "up-daemon-glue.h" +#include "up-daemon-generated.h" #include "up-marshal.h" -enum -{ - PROP_0, - PROP_DAEMON_VERSION, - PROP_ON_BATTERY, - PROP_LID_IS_CLOSED, - PROP_LID_IS_PRESENT, - PROP_LAST -}; - -enum -{ - SIGNAL_DEVICE_ADDED, - SIGNAL_DEVICE_REMOVED, - SIGNAL_LAST, -}; - -static guint signals[SIGNAL_LAST] = { 0 }; - struct UpDaemonPrivate { - DBusGConnection *connection; - DBusGProxy *proxy; + GDBusConnection *connection; + UpExportedDaemon *skeleton; UpConfig *config; UpBackend *backend; UpDeviceList *power_devices; @@ -72,14 +51,7 @@ struct UpDaemonPrivate GHashTable *idle_signals; /* Properties */ - gboolean on_battery; UpDeviceLevel warning_level; - gboolean lid_is_closed; - gboolean lid_is_present; - - /* PropertiesChanged to be emitted */ - GHashTable *changed_props; - guint props_idle_id; /* Display battery properties */ UpDevice *display_device; @@ -112,6 +84,7 @@ G_DEFINE_TYPE (UpDaemon, up_daemon, G_TYPE_OBJECT) #define UP_DAEMON_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), UP_TYPE_DAEMON, UpDaemonPrivate)) #define UP_DAEMON_ACTION_DELAY 20 /* seconds */ +#define UP_INTERFACE_PREFIX "org.freedesktop.UPower." /** * up_daemon_get_on_battery_local: @@ -417,8 +390,10 @@ up_daemon_refresh_battery_devices (UpDaemon *daemon) /** * up_daemon_enumerate_devices: **/ -gboolean -up_daemon_enumerate_devices (UpDaemon *daemon, DBusGMethodInvocation *context) +static gboolean +up_daemon_enumerate_devices (UpExportedDaemon *skeleton, + GDBusMethodInvocation *invocation, + UpDaemon *daemon) { guint i; GPtrArray *array; @@ -428,14 +403,16 @@ up_daemon_enumerate_devices (UpDaemon *daemon, DBusGMethodInvocation *context) /* build a pointer array of the object paths */ object_paths = g_ptr_array_new_with_free_func (g_free); array = up_device_list_get_array (daemon->priv->power_devices); - for (i=0; ilen; i++) { + for (i = 0; i < array->len; i++) { device = (UpDevice *) g_ptr_array_index (array, i); g_ptr_array_add (object_paths, g_strdup (up_device_get_object_path (device))); } g_ptr_array_unref (array); + g_ptr_array_add (object_paths, NULL); /* return it on the bus */ - dbus_g_method_return (context, object_paths); + up_exported_daemon_complete_enumerate_devices (skeleton, invocation, + (const gchar **) object_paths->pdata); /* free */ g_ptr_array_unref (object_paths); @@ -445,22 +422,26 @@ up_daemon_enumerate_devices (UpDaemon *daemon, DBusGMethodInvocation *context) /** * up_daemon_get_display_device: **/ -gboolean -up_daemon_get_display_device (UpDaemon *daemon, - DBusGMethodInvocation *context) +static gboolean +up_daemon_get_display_device (UpExportedDaemon *skeleton, + GDBusMethodInvocation *invocation, + UpDaemon *daemon) { - dbus_g_method_return (context, up_device_get_object_path (daemon->priv->display_device)); + up_exported_daemon_complete_get_display_device (skeleton, invocation, + up_device_get_object_path (daemon->priv->display_device)); return TRUE; } /** * up_daemon_get_critical_action: **/ -gboolean -up_daemon_get_critical_action (UpDaemon *daemon, - DBusGMethodInvocation *context) +static gboolean +up_daemon_get_critical_action (UpExportedDaemon *skeleton, + GDBusMethodInvocation *invocation, + UpDaemon *daemon) { - dbus_g_method_return (context, up_backend_get_critical_action (daemon->priv->backend)); + up_exported_daemon_complete_get_display_device (skeleton, invocation, + up_backend_get_critical_action (daemon->priv->backend)); return TRUE; } @@ -471,37 +452,31 @@ static gboolean up_daemon_register_power_daemon (UpDaemon *daemon) { GError *error = NULL; - gboolean ret = FALSE; UpDaemonPrivate *priv = daemon->priv; - priv->connection = dbus_g_bus_get (DBUS_BUS_SYSTEM, &error); - if (priv->connection == NULL) { - if (error != NULL) { - g_critical ("error getting system bus: %s", error->message); - g_error_free (error); - } - goto out; + priv->connection = g_bus_get_sync (G_BUS_TYPE_SYSTEM, NULL, &error); + if (error != NULL) { + g_critical ("error getting system bus: %s", error->message); + g_error_free (error); + return FALSE; + } + + /* export our interface on the bus */ + g_dbus_interface_skeleton_export (G_DBUS_INTERFACE_SKELETON (priv->skeleton), + connection, + "/org/freedesktop/UPower", + &error); + + if (error != NULL) { + g_critical ("error registering daemon on system bus: %s", error->message); + g_error_free (error); + return FALSE; } /* Register the display device */ - up_device_register_display_device (daemon->priv->display_device, - daemon); + up_device_register_display_device (daemon->priv->display_device, daemon); - /* connect to DBUS */ - priv->proxy = dbus_g_proxy_new_for_name (priv->connection, - DBUS_SERVICE_DBUS, - DBUS_PATH_DBUS, - DBUS_INTERFACE_DBUS); - - /* register GObject */ - dbus_g_connection_register_g_object (priv->connection, - "/org/freedesktop/UPower", - G_OBJECT (daemon)); - - /* success */ - ret = TRUE; -out: - return ret; + return TRUE; } /** @@ -515,7 +490,13 @@ up_daemon_startup (UpDaemon *daemon) UpDeviceLevel warning_level; UpDaemonPrivate *priv = daemon->priv; - /* stop signals and callbacks */ + /* register on bus */ + ret = up_daemon_register_power_daemon (daemon, connection); + if (!ret) { + g_warning ("failed to register"); + goto out; + } + g_debug ("daemon now coldplug"); /* coldplug backend backend */ @@ -532,16 +513,8 @@ up_daemon_startup (UpDaemon *daemon) up_daemon_set_on_battery (daemon, on_battery); up_daemon_set_warning_level (daemon, warning_level); - /* start signals and callbacks */ g_debug ("daemon now not coldplug"); - /* register on bus */ - ret = up_daemon_register_power_daemon (daemon); - if (!ret) { - g_warning ("failed to register"); - goto out; - } - out: return ret; } @@ -573,132 +546,6 @@ up_daemon_get_device_list (UpDaemon *daemon) return g_object_ref (daemon->priv->power_devices); } -static void -changed_props_add_to_msg (gpointer key, - gpointer _value, - gpointer user_data) -{ - GVariant *value = _value; - const gchar *property = key; - DBusMessageIter *subiter = user_data; - DBusMessageIter v_iter; - DBusMessageIter dict_iter; - - dbus_message_iter_open_container (subiter, DBUS_TYPE_DICT_ENTRY, NULL, &dict_iter); - dbus_message_iter_append_basic (&dict_iter, DBUS_TYPE_STRING, &property); - - if (g_variant_is_of_type (value, G_VARIANT_TYPE_UINT32)) { - guint32 val = g_variant_get_uint32 (value); - dbus_message_iter_open_container (&dict_iter, DBUS_TYPE_VARIANT, "u", &v_iter); - dbus_message_iter_append_basic (&v_iter, DBUS_TYPE_UINT32, &val); - } else if (g_variant_is_of_type (value, G_VARIANT_TYPE_BOOLEAN)) { - gboolean val = g_variant_get_boolean (value); - dbus_message_iter_open_container (&dict_iter, DBUS_TYPE_VARIANT, "b", &v_iter); - dbus_message_iter_append_basic (&v_iter, DBUS_TYPE_BOOLEAN, &val); - } else if (g_variant_is_of_type (value, G_VARIANT_TYPE_STRING)) { - const gchar *val = g_variant_get_string (value, NULL); - dbus_message_iter_open_container (&dict_iter, DBUS_TYPE_VARIANT, "s", &v_iter); - dbus_message_iter_append_basic (&v_iter, DBUS_TYPE_STRING, &val); - } else if (g_variant_is_of_type (value, G_VARIANT_TYPE_DOUBLE)) { - gdouble val = g_variant_get_double (value); - dbus_message_iter_open_container (&dict_iter, DBUS_TYPE_VARIANT, "d", &v_iter); - dbus_message_iter_append_basic (&v_iter, DBUS_TYPE_DOUBLE, &val); - } else if (g_variant_is_of_type (value, G_VARIANT_TYPE_UINT64)) { - guint64 val = g_variant_get_uint64 (value); - dbus_message_iter_open_container (&dict_iter, DBUS_TYPE_VARIANT, "t", &v_iter); - dbus_message_iter_append_basic (&v_iter, DBUS_TYPE_UINT64, &val); - } else if (g_variant_is_of_type (value, G_VARIANT_TYPE_INT64)) { - gint64 val = g_variant_get_int64 (value); - dbus_message_iter_open_container (&dict_iter, DBUS_TYPE_VARIANT, "x", &v_iter); - dbus_message_iter_append_basic (&v_iter, DBUS_TYPE_INT64, &val); - } else { - g_assert_not_reached (); - } - dbus_message_iter_close_container (&dict_iter, &v_iter); - dbus_message_iter_close_container (subiter, &dict_iter); -} - -void -up_daemon_emit_properties_changed (DBusGConnection *gconnection, - const gchar *object_path, - const gchar *interface, - GHashTable *props) -{ - DBusConnection *connection; - DBusMessage *message; - DBusMessageIter iter; - DBusMessageIter subiter; - - g_return_if_fail (gconnection != NULL); - g_return_if_fail (object_path != NULL); - g_return_if_fail (interface != NULL); - g_return_if_fail (props != NULL); - - connection = dbus_g_connection_get_connection (gconnection); - message = dbus_message_new_signal (object_path, - "org.freedesktop.DBus.Properties", - "PropertiesChanged"); - dbus_message_iter_init_append (message, &iter); - dbus_message_iter_append_basic (&iter, DBUS_TYPE_STRING, &interface); - /* changed */ - dbus_message_iter_open_container (&iter, DBUS_TYPE_ARRAY, "{sv}", &subiter); - - g_hash_table_foreach (props, changed_props_add_to_msg, &subiter); - - dbus_message_iter_close_container (&iter, &subiter); - - /* invalidated */ - dbus_message_iter_open_container (&iter, DBUS_TYPE_ARRAY, "s", &subiter); - dbus_message_iter_close_container (&iter, &subiter); - - dbus_connection_send (connection, message, NULL); - dbus_message_unref (message); -} - -static gboolean -changed_props_idle_cb (gpointer user_data) -{ - UpDaemon *daemon = user_data; - - /* D-Bus */ - up_daemon_emit_properties_changed (daemon->priv->connection, - "/org/freedesktop/UPower", - "org.freedesktop.UPower", - daemon->priv->changed_props); - g_clear_pointer (&daemon->priv->changed_props, g_hash_table_unref); - daemon->priv->props_idle_id = 0; - - return G_SOURCE_REMOVE; -} - -/** - * up_daemon_queue_changed_property: - **/ -static void -up_daemon_queue_changed_property (UpDaemon *daemon, - const gchar *property, - GVariant *value) -{ - g_return_if_fail (UP_IS_DAEMON (daemon)); - - if (daemon->priv->connection == NULL) { - g_variant_unref (value); - return; - } - - if (!daemon->priv->changed_props) { - daemon->priv->changed_props = g_hash_table_new_full (g_str_hash, g_str_equal, - NULL, (GDestroyNotify) g_variant_unref); - } - - g_hash_table_insert (daemon->priv->changed_props, - (gpointer) property, - value); - - if (daemon->priv->props_idle_id == 0) - daemon->priv->props_idle_id = g_idle_add (changed_props_idle_cb, daemon); -} - /** * up_daemon_set_lid_is_closed: **/ @@ -714,10 +561,7 @@ up_daemon_set_lid_is_closed (UpDaemon *daemon, gboolean lid_is_closed) } g_debug ("lid_is_closed = %s", lid_is_closed ? "yes" : "no"); - priv->lid_is_closed = lid_is_closed; - g_object_notify (G_OBJECT (daemon), "lid-is-closed"); - - up_daemon_queue_changed_property (daemon, "LidIsClosed", g_variant_new_boolean (lid_is_closed)); + up_exported_daemon_set_lid_is_closed (priv->skeleton, lid_is_closed); } /** @@ -735,10 +579,7 @@ up_daemon_set_lid_is_present (UpDaemon *daemon, gboolean lid_is_present) } g_debug ("lid_is_present = %s", lid_is_present ? "yes" : "no"); - priv->lid_is_present = lid_is_present; - g_object_notify (G_OBJECT (daemon), "lid-is-present"); - - up_daemon_queue_changed_property (daemon, "LidIsPresent", g_variant_new_boolean (lid_is_present)); + up_exported_daemon_set_lid_is_present (priv->skeleton, lid_is_present); } /** @@ -749,10 +590,7 @@ up_daemon_set_on_battery (UpDaemon *daemon, gboolean on_battery) { UpDaemonPrivate *priv = daemon->priv; g_debug ("on_battery = %s", on_battery ? "yes" : "no"); - priv->on_battery = on_battery; - g_object_notify (G_OBJECT (daemon), "on-battery"); - - up_daemon_queue_changed_property (daemon, "OnBattery", g_variant_new_boolean (on_battery)); + up_exported_daemon_set_on_battery (priv->skeleton, on_battery); } static gboolean @@ -862,9 +700,8 @@ up_daemon_update_warning_level (UpDaemon *daemon) /* Check if the on_battery and warning_level state has changed */ ret = (up_daemon_get_on_battery_local (daemon) && !up_daemon_get_on_ac_local (daemon)); - if (ret != priv->on_battery) { - up_daemon_set_on_battery (daemon, ret); - } + up_daemon_set_on_battery (daemon, ret); + warning_level = up_daemon_get_warning_level_local (daemon); if (warning_level != priv->warning_level) up_daemon_set_warning_level (daemon, warning_level); @@ -1071,7 +908,7 @@ up_daemon_device_added_cb (UpBackend *backend, GObject *native, UpDevice *device g_warning ("INTERNAL STATE CORRUPT (device-added): not sending NULL, native:%p, device:%p", native, device); return; } - g_signal_emit (daemon, signals[SIGNAL_DEVICE_ADDED], 0, object_path); + up_exported_daemon_emit_device_added (daemon->priv->skeleton, object_path); } /** @@ -1099,7 +936,7 @@ up_daemon_device_removed_cb (UpBackend *backend, GObject *native, UpDevice *devi g_warning ("INTERNAL STATE CORRUPT (device-removed): not sending NULL, native:%p, device:%p", native, device); return; } - g_signal_emit (daemon, signals[SIGNAL_DEVICE_REMOVED], 0, object_path); + up_exported_daemon_emit_device_removed (daemon->priv->skeleton, object_path); /* finalise the object */ g_object_unref (device); @@ -1176,68 +1013,37 @@ up_daemon_init (UpDaemon *daemon) daemon->priv->poll_timeouts = g_hash_table_new_full (g_direct_hash, g_direct_equal, NULL, g_free); daemon->priv->idle_signals = g_hash_table_new (g_direct_hash, g_direct_equal); + + daemon->priv->skeleton = up_exported_daemon_skeleton_new (); + up_exported_daemon_set_daemon_version (daemon->priv->skeleton, PACKAGE_VERSION); + + g_signal_connect (daemon->priv->skeleton, "handle-enumerate-devices", + G_CALLBACK (up_daemon_enumerate_devices), daemon); + g_signal_connect (daemon->priv->skeleton, "handle-get-critical-action", + G_CALLBACK (up_daemon_get_critical_action), daemon); + g_signal_connect (daemon->priv->skeleton, "handle-get-display-device", + G_CALLBACK (up_daemon_get_display_device), daemon); } +static const GDBusErrorEntry up_daemon_error_entries[] = { + { UP_DAEMON_ERROR_GENERAL, UP_INTERFACE_PREFIX "GeneralError" }, + { UP_DAEMON_ERROR_NOT_SUPPORTED, UP_INTERFACE_PREFIX "NotSupported" }, + { UP_DAEMON_ERROR_NO_SUCH_DEVICE, UP_INTERFACE_PREFIX "NoSuchDevice" }, +}; + /** * up_daemon_error_quark: **/ GQuark up_daemon_error_quark (void) { - static GQuark ret = 0; - if (ret == 0) - ret = g_quark_from_static_string ("up_daemon_error"); - return ret; -} + static volatile gsize quark_volatile = 0; -#define ENUM_ENTRY(NAME, DESC) { NAME, "" #NAME "", DESC } -/** - * up_daemon_error_get_type: - **/ -GType -up_daemon_error_get_type (void) -{ - static GType etype = 0; - - if (etype == 0) { - static const GEnumValue values[] = { - ENUM_ENTRY (UP_DAEMON_ERROR_GENERAL, "GeneralError"), - ENUM_ENTRY (UP_DAEMON_ERROR_NOT_SUPPORTED, "NotSupported"), - ENUM_ENTRY (UP_DAEMON_ERROR_NO_SUCH_DEVICE, "NoSuchDevice"), - { 0, 0, 0 } - }; - g_assert (UP_DAEMON_NUM_ERRORS == G_N_ELEMENTS (values) - 1); - etype = g_enum_register_static ("UpDaemonError", values); - } - return etype; -} - -/** - * up_daemon_get_property: - **/ -static void -up_daemon_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) -{ - UpDaemon *daemon = UP_DAEMON (object); - UpDaemonPrivate *priv = daemon->priv; - - switch (prop_id) { - case PROP_DAEMON_VERSION: - g_value_set_string (value, PACKAGE_VERSION); - break; - case PROP_ON_BATTERY: - g_value_set_boolean (value, priv->on_battery); - break; - case PROP_LID_IS_CLOSED: - g_value_set_boolean (value, priv->lid_is_closed); - break; - case PROP_LID_IS_PRESENT: - g_value_set_boolean (value, priv->lid_is_present); - break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); - break; - } + g_dbus_error_register_error_domain ("up_daemon_error", + &quark_volatile, + up_daemon_error_entries, + G_N_ELEMENTS (up_daemon_error_entries)); + return quark_volatile; } /** @@ -1248,61 +1054,8 @@ up_daemon_class_init (UpDaemonClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); object_class->finalize = up_daemon_finalize; - object_class->get_property = up_daemon_get_property; g_type_class_add_private (klass, sizeof (UpDaemonPrivate)); - - signals[SIGNAL_DEVICE_ADDED] = - g_signal_new ("device-added", - G_OBJECT_CLASS_TYPE (klass), - G_SIGNAL_RUN_LAST | G_SIGNAL_DETAILED, - 0, NULL, NULL, - g_cclosure_marshal_generic, - G_TYPE_NONE, 1, DBUS_TYPE_G_OBJECT_PATH); - - signals[SIGNAL_DEVICE_REMOVED] = - g_signal_new ("device-removed", - G_OBJECT_CLASS_TYPE (klass), - G_SIGNAL_RUN_LAST | G_SIGNAL_DETAILED, - 0, NULL, NULL, - g_cclosure_marshal_generic, - G_TYPE_NONE, 1, DBUS_TYPE_G_OBJECT_PATH); - - g_object_class_install_property (object_class, - PROP_DAEMON_VERSION, - g_param_spec_string ("daemon-version", - "Daemon Version", - "The version of the running daemon", - NULL, - G_PARAM_READABLE)); - - g_object_class_install_property (object_class, - PROP_LID_IS_PRESENT, - g_param_spec_boolean ("lid-is-present", - "Is a laptop", - "If this computer is probably a laptop", - FALSE, - G_PARAM_READABLE)); - - g_object_class_install_property (object_class, - PROP_ON_BATTERY, - g_param_spec_boolean ("on-battery", - "On Battery", - "Whether the system is running on battery", - FALSE, - G_PARAM_READABLE)); - - g_object_class_install_property (object_class, - PROP_LID_IS_CLOSED, - g_param_spec_boolean ("lid-is-closed", - "Laptop lid is closed", - "If the laptop lid is closed", - FALSE, - G_PARAM_READABLE)); - - dbus_g_object_type_install_info (UP_TYPE_DAEMON, &dbus_glib_up_daemon_object_info); - - dbus_g_error_domain_register (UP_DAEMON_ERROR, NULL, UP_DAEMON_TYPE_ERROR); } /** @@ -1316,17 +1069,13 @@ up_daemon_finalize (GObject *object) if (priv->action_timeout_id != 0) g_source_remove (priv->action_timeout_id); - if (priv->props_idle_id != 0) - g_source_remove (priv->props_idle_id); g_clear_pointer (&priv->poll_timeouts, g_hash_table_destroy); g_clear_pointer (&priv->idle_signals, g_hash_table_destroy); - g_clear_pointer (&daemon->priv->changed_props, g_hash_table_unref); - if (priv->proxy != NULL) - g_object_unref (priv->proxy); - if (priv->connection != NULL) - dbus_g_connection_unref (priv->connection); + g_clear_object (&priv->connection); + + g_object_unref (priv->skeleton); g_object_unref (priv->power_devices); g_object_unref (priv->display_device); g_object_unref (priv->config); @@ -1344,3 +1093,8 @@ up_daemon_new (void) return UP_DAEMON (g_object_new (UP_TYPE_DAEMON, NULL)); } +GDBusConnection * +up_daemon_get_dbus_connection (UpDaemon *daemon) +{ + return g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (daemon->priv->skeleton)); +} diff --git a/src/up-daemon.h b/src/up-daemon.h index 87857b3..deddb1e 100644 --- a/src/up-daemon.h +++ b/src/up-daemon.h @@ -22,7 +22,6 @@ #define __UP_DAEMON_H__ #include -#include #include "up-types.h" #include "up-device-list.h" @@ -59,9 +58,6 @@ typedef enum #define UP_DAEMON_ERROR up_daemon_error_quark () -GType up_daemon_error_get_type (void); -#define UP_DAEMON_TYPE_ERROR (up_daemon_error_get_type ()) - GQuark up_daemon_error_quark (void); GType up_daemon_get_type (void); UpDaemon *up_daemon_new (void); @@ -73,6 +69,7 @@ guint up_daemon_get_number_devices_of_type (UpDaemon *daemon, UpDeviceList *up_daemon_get_device_list (UpDaemon *daemon); gboolean up_daemon_startup (UpDaemon *daemon); void up_daemon_shutdown (UpDaemon *daemon); +GDBusConnection *up_daemon_get_dbus_connection (UpDaemon *daemon); void up_daemon_set_lid_is_closed (UpDaemon *daemon, gboolean lid_is_closed); void up_daemon_set_lid_is_present (UpDaemon *daemon, @@ -87,23 +84,11 @@ UpDeviceLevel up_daemon_compute_warning_level(UpDaemon *daemon, gboolean power_supply, gdouble percentage, gint64 time_to_empty); -void up_daemon_emit_properties_changed (DBusGConnection *gconnection, - const gchar *object_path, - const gchar *interface, - GHashTable *props); void up_daemon_start_poll (GObject *object, GSourceFunc callback); void up_daemon_stop_poll (GObject *object); -/* exported */ -gboolean up_daemon_enumerate_devices (UpDaemon *daemon, - DBusGMethodInvocation *context); -gboolean up_daemon_get_display_device (UpDaemon *daemon, - DBusGMethodInvocation *context); -gboolean up_daemon_get_critical_action (UpDaemon *daemon, - DBusGMethodInvocation *context); - G_END_DECLS #endif /* __UP_DAEMON_H__ */