summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBastien Nocera <hadess@hadess.net>2013-08-24 02:36:41 +0200
committerBastien Nocera <hadess@hadess.net>2013-10-18 09:40:34 +0200
commit45d12a59c0b3b5a6536d6c50fa0133908c2ac86e (patch)
tree118c75d92518e69d5658417f36604a7abfa8789f
parent3ebfd1fb9311a2e7f6af748ee0a534c1e7f6946b (diff)
downloadgnome-settings-daemon-45d12a59c0b3b5a6536d6c50fa0133908c2ac86e.tar.gz
media-keys: Merge keyboard/screen brightness code paths
A lot of duplicated code here. https://bugzilla.gnome.org/show_bug.cgi?id=706698
-rw-r--r--plugins/media-keys/gsd-media-keys-manager.c95
1 files changed, 36 insertions, 59 deletions
diff --git a/plugins/media-keys/gsd-media-keys-manager.c b/plugins/media-keys/gsd-media-keys-manager.c
index 1a60bb2e..f5dd5b12 100644
--- a/plugins/media-keys/gsd-media-keys-manager.c
+++ b/plugins/media-keys/gsd-media-keys-manager.c
@@ -1859,94 +1859,73 @@ do_config_power_action (GsdMediaKeysManager *manager,
}
static void
-update_screen_cb (GObject *source_object,
- GAsyncResult *res,
- gpointer user_data)
+update_brightness_cb (GObject *source_object,
+ GAsyncResult *res,
+ gpointer user_data)
{
GError *error = NULL;
int percentage;
GVariant *new_percentage;
GsdMediaKeysManager *manager = GSD_MEDIA_KEYS_MANAGER (user_data);
+ const char *icon, *debug;
- new_percentage = g_dbus_proxy_call_finish (G_DBUS_PROXY (source_object),
- res, &error);
- if (new_percentage == NULL) {
- g_warning ("Failed to set new screen percentage: %s",
- error->message);
- g_error_free (error);
- return;
- }
-
- /* update the dialog with the new value */
- g_variant_get (new_percentage, "(i)", &percentage);
- if (percentage >= 0)
- show_osd (manager, "display-brightness-symbolic", NULL, percentage);
- g_variant_unref (new_percentage);
-}
-
-static void
-do_screen_brightness_action (GsdMediaKeysManager *manager,
- MediaKeyType type)
-{
- if (manager->priv->connection == NULL ||
- manager->priv->power_screen_proxy == NULL) {
- g_warning ("No existing D-Bus connection trying to handle power keys");
- return;
+ if (G_DBUS_PROXY (source_object) == manager->priv->power_keyboard_proxy) {
+ icon = "keyboard-brightness-symbolic";
+ debug = "keyboard";
+ } else {
+ icon = "display-brightness-symbolic";
+ debug = "screen";
}
- /* call into the power plugin */
- g_dbus_proxy_call (manager->priv->power_screen_proxy,
- type == SCREEN_BRIGHTNESS_UP_KEY ? "StepUp" : "StepDown",
- NULL,
- G_DBUS_CALL_FLAGS_NONE,
- -1,
- NULL,
- update_screen_cb,
- manager);
-}
-
-static void
-update_keyboard_cb (GObject *source_object,
- GAsyncResult *res,
- gpointer user_data)
-{
- GError *error = NULL;
- guint percentage;
- GVariant *new_percentage;
- GsdMediaKeysManager *manager = GSD_MEDIA_KEYS_MANAGER (user_data);
-
new_percentage = g_dbus_proxy_call_finish (G_DBUS_PROXY (source_object),
res, &error);
if (new_percentage == NULL) {
- g_warning ("Failed to set new keyboard percentage: %s",
- error->message);
+ g_warning ("Failed to set new %s percentage: %s",
+ debug, error->message);
g_error_free (error);
return;
}
/* update the dialog with the new value */
g_variant_get (new_percentage, "(i)", &percentage);
- show_osd (manager, "keyboard-brightness-symbolic", NULL, percentage);
+ show_osd (manager, icon, NULL, percentage);
g_variant_unref (new_percentage);
}
static void
-do_keyboard_brightness_action (GsdMediaKeysManager *manager,
- MediaKeyType type)
+do_brightness_action (GsdMediaKeysManager *manager,
+ MediaKeyType type)
{
const char *cmd;
+ GDBusProxy *proxy;
+
+ switch (type) {
+ case KEYBOARD_BRIGHTNESS_UP_KEY:
+ case KEYBOARD_BRIGHTNESS_DOWN_KEY:
+ case KEYBOARD_BRIGHTNESS_TOGGLE_KEY:
+ proxy = manager->priv->power_keyboard_proxy;
+ break;
+ case SCREEN_BRIGHTNESS_UP_KEY:
+ case SCREEN_BRIGHTNESS_DOWN_KEY:
+ proxy = manager->priv->power_screen_proxy;
+ break;
+ default:
+ g_assert_not_reached ();
+ }
if (manager->priv->connection == NULL ||
- manager->priv->power_keyboard_proxy == NULL) {
+ proxy == NULL) {
g_warning ("No existing D-Bus connection trying to handle power keys");
return;
}
switch (type) {
case KEYBOARD_BRIGHTNESS_UP_KEY:
+ case SCREEN_BRIGHTNESS_UP_KEY:
cmd = "StepUp";
break;
case KEYBOARD_BRIGHTNESS_DOWN_KEY:
+ case SCREEN_BRIGHTNESS_DOWN_KEY:
cmd = "StepDown";
break;
case KEYBOARD_BRIGHTNESS_TOGGLE_KEY:
@@ -1957,13 +1936,13 @@ do_keyboard_brightness_action (GsdMediaKeysManager *manager,
}
/* call into the power plugin */
- g_dbus_proxy_call (manager->priv->power_keyboard_proxy,
+ g_dbus_proxy_call (proxy,
cmd,
NULL,
G_DBUS_CALL_FLAGS_NONE,
-1,
NULL,
- update_keyboard_cb,
+ update_brightness_cb,
manager);
}
@@ -2197,12 +2176,10 @@ do_action (GsdMediaKeysManager *manager,
break;
case SCREEN_BRIGHTNESS_UP_KEY:
case SCREEN_BRIGHTNESS_DOWN_KEY:
- do_screen_brightness_action (manager, type);
- break;
case KEYBOARD_BRIGHTNESS_UP_KEY:
case KEYBOARD_BRIGHTNESS_DOWN_KEY:
case KEYBOARD_BRIGHTNESS_TOGGLE_KEY:
- do_keyboard_brightness_action (manager, type);
+ do_brightness_action (manager, type);
break;
case BATTERY_KEY:
do_battery_action (manager);