You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
59 lines
1.7 KiB
59 lines
1.7 KiB
6 years ago
|
--- a/shell/ev-media-player-keys.c
|
||
|
+++ b/shell/ev-media-player-keys.c
|
||
|
@@ -41,8 +41,9 @@ struct _EvMediaPlayerKeys
|
||
|
{
|
||
|
GObject parent;
|
||
|
|
||
|
- GDBusProxy *proxy;
|
||
|
- gboolean has_name_owner;
|
||
|
+ GDBusProxy *proxy;
|
||
|
+ gboolean has_name_owner;
|
||
|
+ GCancellable *cancellable;
|
||
|
};
|
||
|
|
||
|
struct _EvMediaPlayerKeysClass
|
||
|
@@ -163,7 +164,7 @@ mediakeys_service_appeared_cb (GObject *source_object,
|
||
|
GAsyncResult *res,
|
||
|
gpointer user_data)
|
||
|
{
|
||
|
- EvMediaPlayerKeys *keys = EV_MEDIA_PLAYER_KEYS (user_data);
|
||
|
+ EvMediaPlayerKeys *keys;
|
||
|
GDBusProxy *proxy;
|
||
|
|
||
|
proxy = g_dbus_proxy_new_for_bus_finish (res, NULL);
|
||
|
@@ -172,6 +173,7 @@ mediakeys_service_appeared_cb (GObject *source_object,
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
+ keys = EV_MEDIA_PLAYER_KEYS (user_data);
|
||
|
g_signal_connect (proxy, "g-signal",
|
||
|
G_CALLBACK (media_player_key_pressed_cb),
|
||
|
keys);
|
||
|
@@ -187,13 +189,15 @@ mediakeys_service_appeared_cb (GObject *source_object,
|
||
|
static void
|
||
|
ev_media_player_keys_init (EvMediaPlayerKeys *keys)
|
||
|
{
|
||
|
+ keys->cancellable = g_cancellable_new ();
|
||
|
+
|
||
|
g_dbus_proxy_new_for_bus (G_BUS_TYPE_SESSION,
|
||
|
G_DBUS_PROXY_FLAGS_DO_NOT_LOAD_PROPERTIES,
|
||
|
NULL,
|
||
|
SD_NAME,
|
||
|
SD_OBJECT_PATH,
|
||
|
SD_INTERFACE,
|
||
|
- NULL,
|
||
|
+ keys->cancellable,
|
||
|
mediakeys_service_appeared_cb,
|
||
|
keys);
|
||
|
}
|
||
|
@@ -212,6 +216,9 @@ ev_media_player_keys_finalize (GObject *object)
|
||
|
{
|
||
|
EvMediaPlayerKeys *keys = EV_MEDIA_PLAYER_KEYS (object);
|
||
|
|
||
|
+ g_cancellable_cancel (keys->cancellable);
|
||
|
+ g_object_unref (keys->cancellable);
|
||
|
+
|
||
|
if (keys->proxy != NULL) {
|
||
|
ev_media_player_keys_release_keys (keys);
|
||
|
g_object_unref (keys->proxy);
|