static void first_call_complete (GObject *proxy, GAsyncResult *res, RBMMKeysPlugin *plugin) { GVariant *result; GError *error = NULL; GtkWindow *window; result = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, &error); if (error != NULL) { g_warning ("Unable to grab media player keys: %s", error->message); g_clear_error (&error); #ifdef HAVE_MMKEYS if (GDK_IS_X11_DISPLAY (gdk_display_get_default ())) { mmkeys_grab (plugin, TRUE); plugin->grab_type = X_KEY_GRAB; } #endif return; } rb_debug ("grabbed media player keys"); g_signal_connect_object (plugin->proxy, "g-signal", G_CALLBACK (media_player_key_pressed), plugin, 0); /* re-grab keys when the main window gains focus */ g_object_get (plugin->shell, "window", &window, NULL); g_signal_connect_object (window, "focus-in-event", G_CALLBACK (window_focus_cb), plugin, 0); g_object_unref (window); g_variant_unref (result); }
static void impl_deactivate(PeasActivatable *activatable) { XmrMMKeysPlugin *plugin; plugin = XMR_MMKEYS_PLUGIN(activatable); if (plugin->proxy != NULL) { g_dbus_proxy_call(plugin->proxy, "ReleaseMediaPlayerKeys", g_variant_new("(s)", PACKAGE), G_DBUS_CALL_FLAGS_NONE, -1, NULL, (GAsyncReadyCallback)final_call_complete, NULL); g_object_unref(plugin->proxy); plugin->proxy = NULL; } #ifdef HAVE_MMKEYS_H if (plugin->grab_type == X_KEY_GRAB) mmkeys_grab(plugin, FALSE); #endif plugin->grab_type = NONE; g_object_unref(plugin->window); }
static void first_call_complete(GObject *proxy, GAsyncResult *res, XmrMMKeysPlugin *plugin) { GVariant *result; GError *error = NULL; result = g_dbus_proxy_call_finish(G_DBUS_PROXY(proxy), res, &error); if (error != NULL) { xmr_debug("Unable to grab media player keys: %s", error->message); g_clear_error(&error); #ifdef HAVE_MMKEYS_H mmkeys_grab(plugin, TRUE); plugin->grab_type = X_KEY_GRAB; #endif return; } g_signal_connect_object(plugin->proxy, "g-signal", G_CALLBACK(media_player_key_pressed), plugin, 0); /* re-grab keys when the main window gains focus */ g_signal_connect_object(plugin->window, "focus-in-event", G_CALLBACK(window_focus_cb), plugin, 0); g_variant_unref(result); }
static void impl_activate (PeasActivatable *pplugin) { GDBusConnection *bus; RBMMKeysPlugin *plugin; GError *error = NULL; rb_debug ("activating media player keys plugin"); plugin = RB_MMKEYS_PLUGIN (pplugin); g_object_get (plugin, "object", &plugin->shell, NULL); g_object_get (plugin->shell, "shell-player", &plugin->shell_player, NULL); bus = g_bus_get_sync (G_BUS_TYPE_SESSION, NULL, &error); if (plugin->grab_type == NONE && bus != NULL) { GError *error = NULL; plugin->proxy = g_dbus_proxy_new_sync (bus, G_DBUS_PROXY_FLAGS_NONE, NULL, "org.gnome.SettingsDaemon", "/org/gnome/SettingsDaemon/MediaKeys", "org.gnome.SettingsDaemon.MediaKeys", NULL, &error); if (error != NULL) { g_warning ("Unable to grab media player keys: %s", error->message); g_clear_error (&error); } else { g_dbus_proxy_call (plugin->proxy, "GrabMediaPlayerKeys", g_variant_new ("(su)", "Rhythmbox", 0), G_DBUS_CALL_FLAGS_NONE, -1, NULL, (GAsyncReadyCallback) first_call_complete, plugin); plugin->grab_type = SETTINGS_DAEMON; } } else { g_warning ("couldn't get dbus session bus: %s", error->message); g_clear_error (&error); } #ifdef HAVE_MMKEYS if (plugin->grab_type == NONE && GDK_IS_X11_DISPLAY (gdk_display_get_default ())) { rb_debug ("attempting old-style key grabs"); mmkeys_grab (plugin, TRUE); plugin->grab_type = X_KEY_GRAB; } #endif }
static void impl_activate(PeasActivatable *activatable) { XmrMMKeysPlugin *plugin; GDBusConnection *bus; GError *error = NULL; plugin = XMR_MMKEYS_PLUGIN(activatable); plugin->grab_type = NONE; g_object_get(plugin, "object", &plugin->window, NULL); bus = g_bus_get_sync(G_BUS_TYPE_SESSION, NULL, &error); if (bus == NULL) { xmr_debug("g_bus_get_sync failed: %s", error->message); g_clear_error(&error); } else { plugin->proxy = g_dbus_proxy_new_sync(bus, G_DBUS_PROXY_FLAGS_NONE, NULL, "org.gnome.SettingsDaemon", "/org/gnome/SettingsDaemon/MediaKeys", "org.gnome.SettingsDaemon.MediaKeys", NULL, &error); if (error != NULL) { xmr_debug("Unable to grab media player keys: %s", error->message); } else { g_dbus_proxy_call(plugin->proxy, "GrabMediaPlayerKeys", g_variant_new("(su)", PACKAGE, 0), G_DBUS_CALL_FLAGS_NONE, -1, NULL, (GAsyncReadyCallback)first_call_complete, plugin); plugin->grab_type = SETTINGS_DAEMON; } } #ifdef HAVE_MMKEYS_H if (plugin->grab_type == NONE) { mmkeys_grab(plugin, TRUE); plugin->grab_type = X_KEY_GRAB; } #endif }
static void impl_deactivate (PeasActivatable *pplugin) { RBMMKeysPlugin *plugin; plugin = RB_MMKEYS_PLUGIN (pplugin); if (plugin->shell_player != NULL) { g_object_unref (plugin->shell_player); plugin->shell_player = NULL; } if (plugin->shell != NULL) { g_object_unref (plugin->shell); plugin->shell = NULL; } if (plugin->proxy != NULL) { if (plugin->grab_type == SETTINGS_DAEMON) { g_dbus_proxy_call (plugin->proxy, "ReleaseMediaPlayerKeys", g_variant_new ("(s)", "Rhythmbox"), G_DBUS_CALL_FLAGS_NONE, -1, NULL, (GAsyncReadyCallback) final_call_complete, NULL); plugin->grab_type = NONE; } g_object_unref (plugin->proxy); plugin->proxy = NULL; } #ifdef HAVE_MMKEYS if (plugin->grab_type == X_KEY_GRAB) { rb_debug ("undoing old-style key grabs"); mmkeys_grab (plugin, FALSE); plugin->grab_type = NONE; } #endif }