From 18fd0fa741f818ed8a6d09b8a2a4623e85d6bbdf Mon Sep 17 00:00:00 2001 From: "Y.C cheng" Date: Mon, 3 Mar 2014 17:18:05 +0800 Subject: set brightness via powerd if it exist (using dbus) --- src/service.c | 53 ++++++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 48 insertions(+), 5 deletions(-) (limited to 'src/service.c') diff --git a/src/service.c b/src/service.c index 982a24e..0f976d1 100644 --- a/src/service.c +++ b/src/service.c @@ -27,6 +27,7 @@ #include "device.h" #include "device-provider.h" #include "ib-brightness-control.h" +#include "ib-brightness-powerd-control.h" #include "service.h" #define BUS_NAME "com.canonical.indicator.power" @@ -104,6 +105,7 @@ struct _IndicatorPowerServicePrivate GSettings * settings; IbBrightnessControl * brightness_control; + IbBrightnessPowerdControl * brightness_powerd_control; guint own_id; guint actions_export_id; @@ -440,7 +442,12 @@ create_phone_devices_section (IndicatorPowerService * self G_GNUC_UNUSED) static void get_brightness_range (IndicatorPowerService * self, gint * low, gint * high) { - const int max = ib_brightness_control_get_max_value (self->priv->brightness_control); + int max = 0; + if (self->priv->brightness_control) { + max = ib_brightness_control_get_max_value (self->priv->brightness_control); + } else { + max = ib_brightness_powerd_control_get_max_value (self->priv->brightness_powerd_control); + } *low = max * 0.05; /* 5% minimum -- don't let the screen go completely dark */ *high = max; } @@ -483,7 +490,15 @@ static GVariant * action_state_for_brightness (IndicatorPowerService * self) { priv_t * p = self->priv; - const gint brightness = ib_brightness_control_get_value (p->brightness_control); + gint brightness = 0; + if (p->brightness_control) + { + brightness = ib_brightness_control_get_value (p->brightness_control); + } + else if (p->brightness_powerd_control) + { + brightness = ib_brightness_powerd_control_get_value (p->brightness_powerd_control); + } return g_variant_new_double (brightness_to_percentage (self, brightness)); } @@ -502,7 +517,16 @@ on_brightness_change_requested (GSimpleAction * action G_GNUC_UNUSED, IndicatorPowerService * self = INDICATOR_POWER_SERVICE (gself); const gdouble percentage = g_variant_get_double (parameter); const int brightness = percentage_to_brightness (self, percentage); - ib_brightness_control_set_value (self->priv->brightness_control, brightness); + + if (self->priv->brightness_control) + { + ib_brightness_control_set_value (self->priv->brightness_control, brightness); + } + else if (self->priv->brightness_powerd_control) + { + ib_brightness_powerd_control_set_value (self->priv->brightness_powerd_control, brightness); + } + update_brightness_action_state (self); } @@ -999,7 +1023,14 @@ my_dispose (GObject * o) g_clear_object (&p->conn); - g_clear_pointer (&p->brightness_control, ib_brightness_control_free); + if (p->brightness_control) + { + g_clear_pointer (&p->brightness_control, ib_brightness_control_free); + } + else if (p->brightness_powerd_control) + { + g_clear_pointer (&p->brightness_powerd_control, ib_brightness_powerd_control_free); + } indicator_power_service_set_device_provider (self, NULL); @@ -1013,6 +1044,7 @@ my_dispose (GObject * o) static void indicator_power_service_init (IndicatorPowerService * self) { + GDBusProxy *powerd_proxy = NULL; priv_t * p = G_TYPE_INSTANCE_GET_PRIVATE (self, INDICATOR_TYPE_POWER_SERVICE, IndicatorPowerServicePrivate); @@ -1022,7 +1054,18 @@ indicator_power_service_init (IndicatorPowerService * self) p->settings = g_settings_new ("com.canonical.indicator.power"); - p->brightness_control = ib_brightness_control_new (); + p->brightness_control = NULL; + p->brightness_powerd_control = NULL; + + powerd_proxy = powerd_get_proxy(); + if (powerd_proxy != NULL) + { + p->brightness_powerd_control = ib_brightness_powerd_control_new(powerd_proxy); + } + else + { + p->brightness_control = ib_brightness_control_new (); + } init_gactions (self); -- cgit v1.2.3 From 6a577e1b2d6941af7eef77a7a6a8c4c064dcbcf4 Mon Sep 17 00:00:00 2001 From: "Y.C cheng" Date: Wed, 5 Mar 2014 13:32:26 +0800 Subject: clean up / wrong code fix --- src/service.c | 28 ++++++++++++---------------- 1 file changed, 12 insertions(+), 16 deletions(-) (limited to 'src/service.c') diff --git a/src/service.c b/src/service.c index 0f976d1..959e316 100644 --- a/src/service.c +++ b/src/service.c @@ -442,12 +442,16 @@ create_phone_devices_section (IndicatorPowerService * self G_GNUC_UNUSED) static void get_brightness_range (IndicatorPowerService * self, gint * low, gint * high) { + priv_t * p = self->priv; int max = 0; - if (self->priv->brightness_control) { - max = ib_brightness_control_get_max_value (self->priv->brightness_control); - } else { - max = ib_brightness_powerd_control_get_max_value (self->priv->brightness_powerd_control); - } + if (p->brightness_control) + { + max = ib_brightness_control_get_max_value (self->priv->brightness_control); + } + else if (p->brightness_powerd_control) + { + max = ib_brightness_powerd_control_get_max_value (self->priv->brightness_powerd_control); + } *low = max * 0.05; /* 5% minimum -- don't let the screen go completely dark */ *high = max; } @@ -1023,14 +1027,9 @@ my_dispose (GObject * o) g_clear_object (&p->conn); - if (p->brightness_control) - { - g_clear_pointer (&p->brightness_control, ib_brightness_control_free); - } - else if (p->brightness_powerd_control) - { - g_clear_pointer (&p->brightness_powerd_control, ib_brightness_powerd_control_free); - } + // 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); indicator_power_service_set_device_provider (self, NULL); @@ -1054,9 +1053,6 @@ indicator_power_service_init (IndicatorPowerService * self) p->settings = g_settings_new ("com.canonical.indicator.power"); - p->brightness_control = NULL; - p->brightness_powerd_control = NULL; - powerd_proxy = powerd_get_proxy(); if (powerd_proxy != NULL) { -- cgit v1.2.3 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/service.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'src/service.c') 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 From a67018fec5c2d6ffa54cff364c513223844559f3 Mon Sep 17 00:00:00 2001 From: "Y.C cheng" Date: Thu, 6 Mar 2014 11:27:12 +0800 Subject: refine and use default value as initial brightness value --- src/service.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'src/service.c') diff --git a/src/service.c b/src/service.c index 9be5eca..f6653f4 100644 --- a/src/service.c +++ b/src/service.c @@ -1043,8 +1043,8 @@ my_dispose (GObject * o) static void indicator_power_service_init (IndicatorPowerService * self) { - GDBusProxy *powerd_proxy = NULL; - brightness_params_t powerd_brigtness_params; + GDBusProxy *powerd_proxy; + brightness_params_t powerd_brightness_params; priv_t * p = G_TYPE_INSTANCE_GET_PRIVATE (self, INDICATOR_TYPE_POWER_SERVICE, IndicatorPowerServicePrivate); @@ -1054,10 +1054,10 @@ indicator_power_service_init (IndicatorPowerService * self) p->settings = g_settings_new ("com.canonical.indicator.power"); - powerd_proxy = powerd_get_proxy(&powerd_brigtness_params); + powerd_proxy = powerd_get_proxy(&powerd_brightness_params); if (powerd_proxy != NULL) { - p->brightness_powerd_control = ib_brightness_powerd_control_new(powerd_proxy, powerd_brigtness_params); + p->brightness_powerd_control = ib_brightness_powerd_control_new(powerd_proxy, powerd_brightness_params); } else { -- cgit v1.2.3