From 237ba715a189e550f86b3b2ac11e4aefa43e3955 Mon Sep 17 00:00:00 2001 From: "Y.C cheng" Date: Wed, 5 Mar 2014 16:09:10 +0800 Subject: brightness parameters as necessary condition to use powerd --- src/ib-brightness-powerd-control.c | 57 ++++++++++++++++++++------------------ src/ib-brightness-powerd-control.h | 12 ++++++-- src/service.c | 5 ++-- 3 files changed, 43 insertions(+), 31 deletions(-) diff --git a/src/ib-brightness-powerd-control.c b/src/ib-brightness-powerd-control.c index e7d4e0e..461bb54 100644 --- a/src/ib-brightness-powerd-control.c +++ b/src/ib-brightness-powerd-control.c @@ -26,10 +26,18 @@ #include "ib-brightness-powerd-control.h" +static gboolean getBrightnessParams(GDBusProxy* powerd_proxy, int *min, int *max, + int *dflt, gboolean *ab_supported); + GDBusProxy* -powerd_get_proxy(void) +powerd_get_proxy(brightness_params_t *params) { GError *error = NULL; + gboolean ret; + + if (params == NULL) + return NULL; + GDBusProxy* powerd_proxy = g_dbus_proxy_new_for_bus_sync(G_BUS_TYPE_SYSTEM, G_DBUS_PROXY_FLAGS_NONE, NULL, @@ -39,11 +47,23 @@ powerd_get_proxy(void) NULL, &error); - if (error != NULL) { + if (error != NULL) + { g_debug ("could not connect to powerd: %s", error->message); g_error_free (error); return NULL; } + + ret = getBrightnessParams(powerd_proxy, &(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; + } + return powerd_proxy; } @@ -58,7 +78,7 @@ getBrightnessParams(GDBusProxy* powerd_proxy, int *min, int *max, int *dflt, gbo "getBrightnessParams", NULL, G_DBUS_CALL_FLAGS_NONE, - -1, NULL, &error); + 400, NULL, &error); // timeout: 400 ms if (!ret) { g_warning("getBrightnessParams failed: %s", error->message); g_error_free(error); @@ -92,8 +112,6 @@ static gboolean setUserBrightness(GDBusProxy* powerd_proxy, int brightness) struct _IbBrightnessPowerdControl { - gboolean inited; - GDBusProxy *powerd_proxy; int min; @@ -104,29 +122,20 @@ struct _IbBrightnessPowerdControl int current; }; - -static void ib_brightness_init(IbBrightnessPowerdControl *control) -{ - gboolean ret = getBrightnessParams(control->powerd_proxy, &(control->min), - &(control->max), &(control->dflt), &(control->ab_supported)); - if (! ret) - return; - - control->inited = TRUE; - - ib_brightness_powerd_control_set_value(control, control->max * 8 / 10); -} - IbBrightnessPowerdControl* -ib_brightness_powerd_control_new (GDBusProxy* powerd_proxy) +ib_brightness_powerd_control_new (GDBusProxy* powerd_proxy, brightness_params_t params) { IbBrightnessPowerdControl *control; control = g_new0 (IbBrightnessPowerdControl, 1); - control->inited = FALSE; control->powerd_proxy = powerd_proxy; - ib_brightness_init(control); + control->min = params.min; + control->max = params.max; + control->dflt = params.dflt; + control->ab_supported = params.ab_supported; + + ib_brightness_powerd_control_set_value(control, control->max * 8 / 10); return control; } @@ -135,8 +144,6 @@ void ib_brightness_powerd_control_set_value (IbBrightnessPowerdControl* self, gint value) { gboolean ret; - if (! self->inited) - return; if (value > self->max) { value = self->max; @@ -155,16 +162,12 @@ ib_brightness_powerd_control_set_value (IbBrightnessPowerdControl* self, gint va gint ib_brightness_powerd_control_get_value (IbBrightnessPowerdControl* self) { - if (! self->inited) - return 0; return self->current; } gint ib_brightness_powerd_control_get_max_value (IbBrightnessPowerdControl* self) { - if (! self->inited) - return 0; return self->max; } diff --git a/src/ib-brightness-powerd-control.h b/src/ib-brightness-powerd-control.h index 77e44cb..77f6c8d 100644 --- a/src/ib-brightness-powerd-control.h +++ b/src/ib-brightness-powerd-control.h @@ -21,11 +21,19 @@ #define __IB_BRIGHTNESS_POWERD_CONTROL_H__ #include -GDBusProxy* powerd_get_proxy(); + +typedef struct { + int max; + int min; + 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); +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); diff --git a/src/service.c b/src/service.c index 959e316..9be5eca 100644 --- a/src/service.c +++ b/src/service.c @@ -1044,6 +1044,7 @@ static void indicator_power_service_init (IndicatorPowerService * self) { GDBusProxy *powerd_proxy = NULL; + brightness_params_t powerd_brigtness_params; priv_t * p = G_TYPE_INSTANCE_GET_PRIVATE (self, INDICATOR_TYPE_POWER_SERVICE, IndicatorPowerServicePrivate); @@ -1053,10 +1054,10 @@ indicator_power_service_init (IndicatorPowerService * self) p->settings = g_settings_new ("com.canonical.indicator.power"); - powerd_proxy = powerd_get_proxy(); + powerd_proxy = powerd_get_proxy(&powerd_brigtness_params); if (powerd_proxy != NULL) { - p->brightness_powerd_control = ib_brightness_powerd_control_new(powerd_proxy); + p->brightness_powerd_control = ib_brightness_powerd_control_new(powerd_proxy, powerd_brigtness_params); } else { -- cgit v1.2.3