123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152 |
- $OpenBSD: patch-libupower-glib_up-client_c,v 1.5 2016/09/01 10:11:47 landry Exp $
- Backport https://cgit.freedesktop.org/upower/patch/?id=932a6a39e35754be571e1274aec4730fd42dba13
- https://bugs.freedesktop.org/show_bug.cgi?id=95350
- --- libupower-glib/up-client.c.orig Wed Jul 29 14:47:49 2015
- +++ libupower-glib/up-client.c Wed Aug 31 12:31:10 2016
- @@ -39,9 +39,10 @@
- #include "up-daemon-generated.h"
- #include "up-device.h"
-
- -static void up_client_class_init (UpClientClass *klass);
- -static void up_client_init (UpClient *client);
- -static void up_client_finalize (GObject *object);
- +static void up_client_class_init (UpClientClass *klass);
- +static void up_client_initable_iface_init (GInitableIface *iface);
- +static void up_client_init (UpClient *client);
- +static void up_client_finalize (GObject *object);
-
- #define UP_CLIENT_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), UP_TYPE_CLIENT, UpClientPrivate))
-
- @@ -73,7 +74,8 @@ enum {
- static guint signals [UP_CLIENT_LAST_SIGNAL] = { 0 };
- static gpointer up_client_object = NULL;
-
- -G_DEFINE_TYPE (UpClient, up_client, G_TYPE_OBJECT)
- +G_DEFINE_TYPE_WITH_CODE (UpClient, up_client, G_TYPE_OBJECT,
- + G_IMPLEMENT_INTERFACE(G_TYPE_INITABLE, up_client_initable_iface_init))
-
- /**
- * up_client_get_devices:
- @@ -434,11 +436,10 @@ up_client_class_init (UpClientClass *klass)
- * up_client_init:
- * @client: This class instance
- */
- -static void
- -up_client_init (UpClient *client)
- +static gboolean
- +up_client_initable_init (GInitable *initable, GCancellable *cancellable, GError **error)
- {
- - GError *error = NULL;
- -
- + UpClient *client = UP_CLIENT (initable);
- client->priv = UP_CLIENT_GET_PRIVATE (client);
-
- /* connect to main interface */
- @@ -446,13 +447,10 @@ up_client_init (UpClient *client)
- G_DBUS_PROXY_FLAGS_NONE,
- "org.freedesktop.UPower",
- "/org/freedesktop/UPower",
- - NULL,
- - &error);
- - if (client->priv->proxy == NULL) {
- - g_warning ("Couldn't connect to proxy: %s", error->message);
- - g_error_free (error);
- - return;
- - }
- + cancellable,
- + error);
- + if (client->priv->proxy == NULL)
- + return FALSE;
-
- /* all callbacks */
- g_signal_connect (client->priv->proxy, "device-added",
- @@ -461,9 +459,26 @@ up_client_init (UpClient *client)
- G_CALLBACK (up_device_removed_cb), client);
- g_signal_connect (client->priv->proxy, "notify",
- G_CALLBACK (up_client_notify_cb), client);
- +
- + return TRUE;
- }
-
- +static void
- +up_client_initable_iface_init (GInitableIface *iface)
- +{
- + iface->init = up_client_initable_init;
- +}
- +
- /*
- + * up_client_init:
- + * @client: This class instance
- + */
- +static void
- +up_client_init (UpClient *client)
- +{
- +}
- +
- +/*
- * up_client_finalize:
- */
- static void
- @@ -482,23 +497,52 @@ up_client_finalize (GObject *object)
- }
-
- /**
- - * up_client_new:
- + * up_client_new_full:
- + * @cancellable: (allow-none): A #GCancellable or %NULL.
- + * @error: Return location for error or %NULL.
- *
- - * Creates a new #UpClient object.
- + * Creates a new #UpClient object. If connecting to upowerd on D-Bus fails,
- + % this returns %NULL and sets @error.
- *
- - * Return value: a new UpClient object.
- + * Return value: a new UpClient object, or %NULL on failure.
- *
- - * Since: 0.9.0
- + * Since: 0.99.5
- **/
- UpClient *
- -up_client_new (void)
- +up_client_new_full (GCancellable *cancellable, GError **error)
- {
- if (up_client_object != NULL) {
- g_object_ref (up_client_object);
- } else {
- - up_client_object = g_object_new (UP_TYPE_CLIENT, NULL);
- - g_object_add_weak_pointer (up_client_object, &up_client_object);
- + up_client_object = g_initable_new (UP_TYPE_CLIENT, cancellable, error, NULL);
- + if (up_client_object)
- + g_object_add_weak_pointer (up_client_object, &up_client_object);
- }
- return UP_CLIENT (up_client_object);
- +}
- +
- +/**
- + * up_client_new:
- + *
- + * Creates a new #UpClient object. If connecting to upowerd on D-Bus fails,
- + * this returns %NULL and prints out a warning with the error message.
- + * Consider using up_client_new_full() instead which allows you to handle errors
- + * and cancelling long operations yourself.
- + *
- + * Return value: a new UpClient object, or %NULL on failure.
- + *
- + * Since: 0.9.0
- + **/
- +UpClient *
- +up_client_new (void)
- +{
- + GError *error = NULL;
- + UpClient *client;
- + client = up_client_new_full (NULL, &error);
- + if (client == NULL) {
- + g_warning ("Couldn't connect to proxy: %s", error->message);
- + g_error_free (error);
- + }
- + return client;
- }
-
|