Ejemplo n.º 1
0
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);
}
Ejemplo n.º 2
0
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);
}
Ejemplo n.º 3
0
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);
}
Ejemplo n.º 4
0
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
}
Ejemplo n.º 5
0
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
}
Ejemplo n.º 6
0
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
}