From 9e9a0da8c20c64dd394d98b94955e58911b2c53e Mon Sep 17 00:00:00 2001 From: Alberto Aguirre Date: Thu, 19 Jun 2014 10:04:01 -0500 Subject: Remove references to powerd since the brightness interface is now provided by Unity.Screen --- src/Makefile.am | 4 +- src/ib-brightness-powerd-control.c | 201 ----------------------------------- src/ib-brightness-powerd-control.h | 43 -------- src/ib-brightness-uscreen-control.c | 202 ++++++++++++++++++++++++++++++++++++ src/ib-brightness-uscreen-control.h | 43 ++++++++ src/service.c | 28 ++--- 6 files changed, 261 insertions(+), 260 deletions(-) delete mode 100644 src/ib-brightness-powerd-control.c delete mode 100644 src/ib-brightness-powerd-control.h create mode 100644 src/ib-brightness-uscreen-control.c create mode 100644 src/ib-brightness-uscreen-control.h (limited to 'src') diff --git a/src/Makefile.am b/src/Makefile.am index 2461592..3f71b60 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -46,8 +46,8 @@ libindciatorpower_upower_a_LDFLAGS = $(COVERAGE_LDFLAGS) libindicatorpower_service_a_SOURCES = \ ib-brightness-control.c \ ib-brightness-control.h \ - ib-brightness-powerd-control.c \ - ib-brightness-powerd-control.h \ + ib-brightness-uscreen-control.c \ + ib-brightness-uscreen-control.h \ device-provider.c \ device-provider.h \ device.c \ diff --git a/src/ib-brightness-powerd-control.c b/src/ib-brightness-powerd-control.c deleted file mode 100644 index ef18ad6..0000000 --- a/src/ib-brightness-powerd-control.c +++ /dev/null @@ -1,201 +0,0 @@ -/* - * Copyright 2014 Canonical Ltd. - * - * This program is free software: you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 3, as published - * by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranties of - * MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR - * PURPOSE. See the GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . - * - * Authors: - * Yuan-Chen Cheng - */ - -#include "ib-brightness-powerd-control.h" - -static gboolean getBrightnessParams(GDBusProxy* powerd_proxy, int *dim, int *min, - int *max, int *dflt, gboolean *ab_supported); - -GDBusProxy* -powerd_get_proxy(brightness_params_t *params) -{ - GError *error = NULL; - gboolean ret; - - g_return_val_if_fail (params != NULL, NULL); - - GDBusProxy* powerd_proxy = g_dbus_proxy_new_for_bus_sync(G_BUS_TYPE_SYSTEM, - G_DBUS_PROXY_FLAGS_NONE, - NULL, - "com.canonical.powerd", - "/com/canonical/powerd", - "com.canonical.powerd", - NULL, - &error); - - if (error != NULL) - { - g_debug ("could not connect to powerd: %s", error->message); - g_error_free (error); - return NULL; - } - - ret = getBrightnessParams(powerd_proxy, &(params->dim), &(params->min), - &(params->max), &(params->dflt), &(params->ab_supported)); - - if (! ret) - { - g_debug ("can't get brightness parameters from powerd"); - g_object_unref (powerd_proxy); - return NULL; - } - - g_object_unref (powerd_proxy); - - GDBusProxy* uscreen_proxy = g_dbus_proxy_new_for_bus_sync(G_BUS_TYPE_SYSTEM, - G_DBUS_PROXY_FLAGS_NONE, - NULL, - "com.canonical.Unity.Screen", - "/com/canonical/Unity/Screen", - "com.canonical.Unity.Screen", - NULL, - &error); - - if (error != NULL) - { - g_debug ("could not connect to unity screen: %s", error->message); - g_error_free (error); - return NULL; - } - - return uscreen_proxy; -} - - -static gboolean -getBrightnessParams(GDBusProxy* powerd_proxy, int *dim, int *min, int *max, int *dflt, gboolean *ab_supported) -{ - GVariant *ret = NULL; - GError *error = NULL; - - ret = g_dbus_proxy_call_sync(powerd_proxy, - "getBrightnessParams", - NULL, - G_DBUS_CALL_FLAGS_NONE, - 400, NULL, &error); // timeout: 400 ms - if (!ret) - { - if (error != NULL) - { - if (!g_error_matches(error, G_DBUS_ERROR, G_DBUS_ERROR_SERVICE_UNKNOWN)) - { - g_warning("getBrightnessParams from powerd failed: %s", error->message); - } - g_error_free(error); - } - return FALSE; - } - - g_variant_get(ret, "((iiiib))", dim, min, max, dflt, ab_supported); - g_variant_unref(ret); - return TRUE; -} - -static gboolean setUserBrightness(GDBusProxy* powerd_proxy, GCancellable *gcancel, int brightness) -{ - GVariant *ret = NULL; - GError *error = NULL; - - ret = g_dbus_proxy_call_sync(powerd_proxy, - "setUserBrightness", - g_variant_new("(i)", brightness), - G_DBUS_CALL_FLAGS_NONE, - -1, gcancel, &error); - if (!ret) { - g_warning("setUserBrightness via powerd failed: %s", error->message); - g_error_free(error); - return FALSE; - } else { - g_variant_unref(ret); - return TRUE; - } -} - -struct _IbBrightnessPowerdControl -{ - GDBusProxy *powerd_proxy; - GCancellable *gcancel; - - int dim; - int min; - int max; - int dflt; // defalut value - gboolean ab_supported; - - int current; -}; - -IbBrightnessPowerdControl* -ib_brightness_powerd_control_new (GDBusProxy* powerd_proxy, brightness_params_t params) -{ - IbBrightnessPowerdControl *control; - - control = g_new0 (IbBrightnessPowerdControl, 1); - control->powerd_proxy = powerd_proxy; - control->gcancel = g_cancellable_new(); - - control->dim = params.dim; - control->min = params.min; - control->max = params.max; - control->dflt = params.dflt; - control->ab_supported = params.ab_supported; - - // XXX: set the brightness value is the only way to sync the brightness value with - // powerd, and we should set the user prefered / last set brightness value upon startup. - // Before we have code to store last set brightness value or other mechanism, we set - // it to default brightness that powerd proposed. - ib_brightness_powerd_control_set_value(control, control->dflt); - - return control; -} - -void -ib_brightness_powerd_control_set_value (IbBrightnessPowerdControl* self, gint value) -{ - gboolean ret; - - value = CLAMP(value, self->min, self->max); - ret = setUserBrightness(self->powerd_proxy, self->gcancel, value); - if (ret) - { - self->current = value; - } -} - -gint -ib_brightness_powerd_control_get_value (IbBrightnessPowerdControl* self) -{ - return self->current; -} - -gint -ib_brightness_powerd_control_get_max_value (IbBrightnessPowerdControl* self) -{ - return self->max; -} - -void -ib_brightness_powerd_control_free (IbBrightnessPowerdControl *self) -{ - g_cancellable_cancel (self->gcancel); - g_object_unref (self->gcancel); - g_object_unref (self->powerd_proxy); - g_free (self); -} - diff --git a/src/ib-brightness-powerd-control.h b/src/ib-brightness-powerd-control.h deleted file mode 100644 index 95de1f4..0000000 --- a/src/ib-brightness-powerd-control.h +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright 2014 Canonical Ltd. - * - * This program is free software: you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 3, as published - * by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranties of - * MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR - * PURPOSE. See the GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . - * - * Authors: - * Y.C Cheng - */ - -#ifndef __IB_BRIGHTNESS_POWERD_CONTROL_H__ -#define __IB_BRIGHTNESS_POWERD_CONTROL_H__ - -#include - -typedef struct { - int dim; - int min; - int max; - int dflt; - gboolean ab_supported; -} brightness_params_t; - -GDBusProxy* powerd_get_proxy(brightness_params_t *); - -typedef struct _IbBrightnessPowerdControl IbBrightnessPowerdControl; - -IbBrightnessPowerdControl* ib_brightness_powerd_control_new (GDBusProxy* powerd_proxy, brightness_params_t params); -void ib_brightness_powerd_control_set_value (IbBrightnessPowerdControl* self, gint value); -gint ib_brightness_powerd_control_get_value (IbBrightnessPowerdControl* self); -gint ib_brightness_powerd_control_get_max_value (IbBrightnessPowerdControl* self); -void ib_brightness_powerd_control_free (IbBrightnessPowerdControl *self); - -#endif diff --git a/src/ib-brightness-uscreen-control.c b/src/ib-brightness-uscreen-control.c new file mode 100644 index 0000000..4f8cd3e --- /dev/null +++ b/src/ib-brightness-uscreen-control.c @@ -0,0 +1,202 @@ +/* + * Copyright 2014 Canonical Ltd. + * + * This program is free software: you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 3, as published + * by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranties of + * MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR + * PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . + * + * Authors: + * Yuan-Chen Cheng + */ + +#include "ib-brightness-uscreen-control.h" + +static gboolean getBrightnessParams(GDBusProxy* powerd_proxy, int *dim, int *min, + int *max, int *dflt, gboolean *ab_supported); + +GDBusProxy* +uscreen_get_proxy(brightness_params_t *params) +{ + GError *error = NULL; + gboolean ret; + + g_return_val_if_fail (params != NULL, NULL); + + /* For now we still need to obtain the brigthness params from powerd */ + GDBusProxy* powerd_proxy = g_dbus_proxy_new_for_bus_sync(G_BUS_TYPE_SYSTEM, + G_DBUS_PROXY_FLAGS_NONE, + NULL, + "com.canonical.powerd", + "/com/canonical/powerd", + "com.canonical.powerd", + NULL, + &error); + + if (error != NULL) + { + g_debug ("could not connect to powerd: %s", error->message); + g_error_free (error); + return NULL; + } + + ret = getBrightnessParams(powerd_proxy, &(params->dim), &(params->min), + &(params->max), &(params->dflt), &(params->ab_supported)); + + if (! ret) + { + g_debug ("can't get brightness parameters from powerd"); + g_object_unref (powerd_proxy); + return NULL; + } + + g_clear_object (&powerd_proxy); + + GDBusProxy* uscreen_proxy = g_dbus_proxy_new_for_bus_sync(G_BUS_TYPE_SYSTEM, + G_DBUS_PROXY_FLAGS_NONE, + NULL, + "com.canonical.Unity.Screen", + "/com/canonical/Unity/Screen", + "com.canonical.Unity.Screen", + NULL, + &error); + + if (error != NULL) + { + g_debug ("could not connect to unity screen: %s", error->message); + g_error_free (error); + return NULL; + } + + return uscreen_proxy; +} + + +static gboolean +getBrightnessParams(GDBusProxy* powerd_proxy, int *dim, int *min, int *max, int *dflt, gboolean *ab_supported) +{ + GVariant *ret = NULL; + GError *error = NULL; + + ret = g_dbus_proxy_call_sync(powerd_proxy, + "getBrightnessParams", + NULL, + G_DBUS_CALL_FLAGS_NONE, + 400, NULL, &error); // timeout: 400 ms + if (!ret) + { + if (error != NULL) + { + if (!g_error_matches(error, G_DBUS_ERROR, G_DBUS_ERROR_SERVICE_UNKNOWN)) + { + g_warning("getBrightnessParams from powerd failed: %s", error->message); + } + g_error_free(error); + } + return FALSE; + } + + g_variant_get(ret, "((iiiib))", dim, min, max, dflt, ab_supported); + g_variant_unref(ret); + return TRUE; +} + +static gboolean setUserBrightness(GDBusProxy* uscreen_proxy, GCancellable *gcancel, int brightness) +{ + GVariant *ret = NULL; + GError *error = NULL; + + ret = g_dbus_proxy_call_sync(uscreen_proxy, + "setUserBrightness", + g_variant_new("(i)", brightness), + G_DBUS_CALL_FLAGS_NONE, + -1, gcancel, &error); + if (!ret) { + g_warning("setUserBrightness via powerd failed: %s", error->message); + g_error_free(error); + return FALSE; + } else { + g_variant_unref(ret); + return TRUE; + } +} + +struct _IbBrightnessUScreenControl +{ + GDBusProxy *uscreen_proxy; + GCancellable *gcancel; + + int dim; + int min; + int max; + int dflt; // defalut value + gboolean ab_supported; + + int current; +}; + +IbBrightnessUscreenControl* +ib_brightness_uscreen_control_new (GDBusProxy* uscreen_proxy, brightness_params_t params) +{ + IbBrightnessUscreenControl *control; + + control = g_new0 (IbBrightnessUscreenControl, 1); + control->uscreen_proxy = uscreen_proxy; + control->gcancel = g_cancellable_new(); + + control->dim = params.dim; + control->min = params.min; + control->max = params.max; + control->dflt = params.dflt; + control->ab_supported = params.ab_supported; + + // XXX: set the brightness value is the only way to sync the brightness value with + // unity.screen, and we should set the user prefered / last set brightness value upon startup. + // Before we have code to store last set brightness value or other mechanism, we set + // it to default brightness that powerd proposed. + ib_brightness_uscreen_control_set_value(control, control->dflt); + + return control; +} + +void +ib_brightness_uscreen_control_set_value (IbBrightnessUscreenControl* self, gint value) +{ + gboolean ret; + + value = CLAMP(value, self->min, self->max); + ret = setUserBrightness(self->uscreen_proxy, self->gcancel, value); + if (ret) + { + self->current = value; + } +} + +gint +ib_brightness_uscreen_control_get_value (IbBrightnessUscreenControl* self) +{ + return self->current; +} + +gint +ib_brightness_uscreen_control_get_max_value (IbBrightnessUscreenControl* self) +{ + return self->max; +} + +void +ib_brightness_uscreen_control_free (IbBrightnessUscreenControl *self) +{ + g_cancellable_cancel (self->gcancel); + g_object_unref (self->gcancel); + g_object_unref (self->uscreen_proxy); + g_free (self); +} + diff --git a/src/ib-brightness-uscreen-control.h b/src/ib-brightness-uscreen-control.h new file mode 100644 index 0000000..3d026a9 --- /dev/null +++ b/src/ib-brightness-uscreen-control.h @@ -0,0 +1,43 @@ +/* + * Copyright 2014 Canonical Ltd. + * + * This program is free software: you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 3, as published + * by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranties of + * MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR + * PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . + * + * Authors: + * Y.C Cheng + */ + +#ifndef __IB_BRIGHTNESS_USCREEN_CONTROL_H__ +#define __IB_BRIGHTNESS_USCREEN_CONTROL_H__ + +#include + +typedef struct { + int dim; + int min; + int max; + int dflt; + gboolean ab_supported; +} brightness_params_t; + +GDBusProxy* uscreen_get_proxy(brightness_params_t *); + +typedef struct _IbBrightnessUScreenControl IbBrightnessUscreenControl; + +IbBrightnessUscreenControl* ib_brightness_uscreen_control_new (GDBusProxy* uscreen_proxy, brightness_params_t params); +void ib_brightness_uscreen_control_set_value (IbBrightnessUscreenControl* self, gint value); +gint ib_brightness_uscreen_control_get_value (IbBrightnessUscreenControl* self); +gint ib_brightness_uscreen_control_get_max_value (IbBrightnessUscreenControl* self); +void ib_brightness_uscreen_control_free (IbBrightnessUscreenControl *self); + +#endif diff --git a/src/service.c b/src/service.c index 46ad802..6438c9a 100644 --- a/src/service.c +++ b/src/service.c @@ -27,7 +27,7 @@ #include "device.h" #include "device-provider.h" #include "ib-brightness-control.h" -#include "ib-brightness-powerd-control.h" +#include "ib-brightness-uscreen-control.h" #include "service.h" #define BUS_NAME "com.canonical.indicator.power" @@ -105,7 +105,7 @@ struct _IndicatorPowerServicePrivate GSettings * settings; IbBrightnessControl * brightness_control; - IbBrightnessPowerdControl * brightness_powerd_control; + IbBrightnessUscreenControl * brightness_uscreen_control; guint own_id; guint actions_export_id; @@ -467,9 +467,9 @@ get_brightness_range (IndicatorPowerService * self, gint * low, gint * high) { max = ib_brightness_control_get_max_value (self->priv->brightness_control); } - else if (p->brightness_powerd_control) + else if (p->brightness_uscreen_control) { - max = ib_brightness_powerd_control_get_max_value (self->priv->brightness_powerd_control); + max = ib_brightness_uscreen_control_get_max_value (self->priv->brightness_uscreen_control); } *low = max * 0.05; /* 5% minimum -- don't let the screen go completely dark */ *high = max; @@ -500,9 +500,9 @@ action_state_for_brightness (IndicatorPowerService * self) { brightness = ib_brightness_control_get_value (p->brightness_control); } - else if (p->brightness_powerd_control) + else if (p->brightness_uscreen_control) { - brightness = ib_brightness_powerd_control_get_value (p->brightness_powerd_control); + brightness = ib_brightness_uscreen_control_get_value (p->brightness_uscreen_control); } return g_variant_new_double (brightness_to_percentage (self, brightness)); } @@ -527,9 +527,9 @@ on_brightness_change_requested (GSimpleAction * action G_GNUC_UNUSED, { ib_brightness_control_set_value (self->priv->brightness_control, brightness); } - else if (self->priv->brightness_powerd_control) + else if (self->priv->brightness_uscreen_control) { - ib_brightness_powerd_control_set_value (self->priv->brightness_powerd_control, brightness); + ib_brightness_uscreen_control_set_value (self->priv->brightness_uscreen_control, brightness); } update_brightness_action_state (self); @@ -1024,7 +1024,7 @@ my_dispose (GObject * o) // g_clear_pointer has NULL check inside. g_clear_pointer (&p->brightness_control, ib_brightness_control_free); - g_clear_pointer (&p->brightness_powerd_control, ib_brightness_powerd_control_free); + g_clear_pointer (&p->brightness_uscreen_control, ib_brightness_uscreen_control_free); indicator_power_service_set_device_provider (self, NULL); @@ -1038,8 +1038,8 @@ my_dispose (GObject * o) static void indicator_power_service_init (IndicatorPowerService * self) { - GDBusProxy *powerd_proxy; - brightness_params_t powerd_brightness_params; + GDBusProxy *uscreen_proxy; + brightness_params_t brightness_params; priv_t * p = G_TYPE_INSTANCE_GET_PRIVATE (self, INDICATOR_TYPE_POWER_SERVICE, IndicatorPowerServicePrivate); @@ -1049,10 +1049,10 @@ indicator_power_service_init (IndicatorPowerService * self) p->settings = g_settings_new ("com.canonical.indicator.power"); - powerd_proxy = powerd_get_proxy(&powerd_brightness_params); - if (powerd_proxy != NULL) + uscreen_proxy = uscreen_get_proxy(&brightness_params); + if (uscreen_proxy != NULL) { - p->brightness_powerd_control = ib_brightness_powerd_control_new(powerd_proxy, powerd_brightness_params); + p->brightness_uscreen_control = ib_brightness_uscreen_control_new(uscreen_proxy, brightness_params); } else { -- cgit v1.2.3