gnome-power-manager r2768 - in trunk: . src
- From: rhughes svn gnome org
- To: svn-commits-list gnome org
- Subject: gnome-power-manager r2768 - in trunk: . src
- Date: Wed, 9 Apr 2008 23:22:22 +0100 (BST)
Author: rhughes
Date: Wed Apr 9 23:22:22 2008
New Revision: 2768
URL: http://svn.gnome.org/viewvc/gnome-power-manager?rev=2768&view=rev
Log:
2008-04-09 Richard Hughes <richard hughsie com>
* src/gpm-backlight.c: (gpm_backlight_get_brightness),
(gpm_backlight_set_brightness),
(gpm_backlight_brightness_evaluate_and_set), (conf_key_changed_cb),
(gpm_backlight_button_pressed_cb), (idle_changed_cb),
(gpm_backlight_init):
* src/gpm-brightness.c: (gpm_brightness_set), (gpm_brightness_get),
(gpm_brightness_up), (gpm_brightness_down):
Make the backlight do what the user expects rather than what the policy says.
This should fix the bug where auto-dimming returns the level to the policy value
rather than the value the user just set using the brightness applet or brightness keys.
Modified:
trunk/ChangeLog
trunk/src/gpm-backlight.c
trunk/src/gpm-brightness.c
Modified: trunk/src/gpm-backlight.c
==============================================================================
--- trunk/src/gpm-backlight.c (original)
+++ trunk/src/gpm-backlight.c Wed Apr 9 23:22:22 2008
@@ -81,6 +81,7 @@
GTimer *idle_timer;
gfloat ambient_sensor_value;
guint idle_dim_timeout;
+ guint master_percentage;
};
enum {
@@ -266,9 +267,7 @@
* gpm_backlight_get_brightness:
**/
gboolean
-gpm_backlight_get_brightness (GpmBacklight *backlight,
- guint *brightness,
- GError **error)
+gpm_backlight_get_brightness (GpmBacklight *backlight, guint *brightness, GError **error)
{
guint level;
gboolean ret;
@@ -300,10 +299,10 @@
* gpm_backlight_set_brightness:
**/
gboolean
-gpm_backlight_set_brightness (GpmBacklight *backlight,
- guint brightness,
- GError **error)
+gpm_backlight_set_brightness (GpmBacklight *backlight, guint brightness, GError **error)
{
+ gboolean ret;
+
g_return_val_if_fail (backlight != NULL, FALSE);
g_return_val_if_fail (GPM_IS_BACKLIGHT (backlight), FALSE);
@@ -316,9 +315,8 @@
}
/* just set the AC brightness for now, don't try to be clever */
- gpm_conf_set_uint (backlight->priv->conf, GPM_CONF_BACKLIGHT_BRIGHTNESS_AC, brightness);
-#if 0
- gboolean ret;
+ backlight->priv->master_percentage = brightness;
+
/* sets the current policy brightness */
ret = gpm_brightness_set (backlight->priv->brightness, brightness);
if (ret == FALSE) {
@@ -326,9 +324,7 @@
GPM_BACKLIGHT_ERROR_GENERAL,
"Cannot set policy brightness");
}
-#endif
-
- return TRUE;
+ return ret;
}
/**
@@ -370,9 +366,8 @@
return FALSE;
}
- /* get the 'main' brightness */
- gpm_conf_get_uint (backlight->priv->conf, GPM_CONF_BACKLIGHT_BRIGHTNESS_AC, &value);
- brightness = value / 100.0f;
+ /* get the last set brightness */
+ brightness = backlight->priv->master_percentage / 100.0f;
gpm_debug ("1. main brightness %f", brightness);
/* get AC status */
@@ -436,6 +431,7 @@
/* only show dialog if interactive */
if (interactive == TRUE) {
+ gpm_warning ("moo %f", brightness);
gpm_feedback_display_value (backlight->priv->feedback, (float) brightness);
}
@@ -453,17 +449,18 @@
* We might have to do things when the gconf keys change; do them here.
**/
static void
-conf_key_changed_cb (GpmConf *conf,
- const gchar *key,
- GpmBacklight *backlight)
+conf_key_changed_cb (GpmConf *conf, const gchar *key, GpmBacklight *backlight)
{
gboolean on_ac;
on_ac = gpm_ac_adapter_is_present (backlight->priv->ac_adapter);
- if (strcmp (key, GPM_CONF_BACKLIGHT_BRIGHTNESS_AC) == 0) {
+ if (on_ac && strcmp (key, GPM_CONF_BACKLIGHT_BRIGHTNESS_AC) == 0) {
+ gpm_conf_get_uint (backlight->priv->conf,
+ GPM_CONF_BACKLIGHT_BRIGHTNESS_AC,
+ &backlight->priv->master_percentage);
gpm_backlight_brightness_evaluate_and_set (backlight, FALSE);
- } else if (strcmp (key, GPM_CONF_BACKLIGHT_BRIGHTNESS_BATT) == 0) {
+ } else if (!on_ac && strcmp (key, GPM_CONF_BACKLIGHT_BRIGHTNESS_BATT) == 0) {
gpm_backlight_brightness_evaluate_and_set (backlight, FALSE);
}
@@ -501,23 +498,37 @@
}
/**
- * button_pressed_cb:
+ * gpm_backlight_button_pressed_cb:
* @power: The power class instance
* @type: The button type, e.g. "power"
* @state: The state, where TRUE is depressed or closed
* @brightness: This class instance
**/
static void
-button_pressed_cb (GpmButton *button,
- const gchar *type,
- GpmBacklight *backlight)
+gpm_backlight_button_pressed_cb (GpmButton *button, const gchar *type, GpmBacklight *backlight)
{
+ guint percentage;
gpm_debug ("Button press event type=%s", type);
if (strcmp (type, GPM_BUTTON_BRIGHT_UP) == 0) {
+ /* go up one step */
gpm_brightness_up (backlight->priv->brightness);
+
+ /* get the new value */
+ gpm_brightness_get (backlight->priv->brightness, &percentage);
+ gpm_feedback_display_value (backlight->priv->feedback, (float) percentage/100.0f);
+ /* save the new percentage */
+ backlight->priv->master_percentage = percentage;
} else if (strcmp (type, GPM_BUTTON_BRIGHT_DOWN) == 0) {
+ /* go up down step */
gpm_brightness_down (backlight->priv->brightness);
+
+ /* get the new value */
+ gpm_brightness_get (backlight->priv->brightness, &percentage);
+ gpm_feedback_display_value (backlight->priv->feedback, (float) percentage/100.0f);
+
+ /* save the new percentage */
+ backlight->priv->master_percentage = percentage;
} else if (strcmp (type, GPM_BUTTON_LID_OPEN) == 0) {
/* make sure we undim when we lift the lid */
gpm_backlight_brightness_evaluate_and_set (backlight, FALSE);
@@ -604,7 +615,6 @@
}
if (mode == GPM_IDLE_MODE_NORMAL) {
-
/* deactivate display power management */
if (backlight->priv->can_dpms == TRUE) {
error = NULL;
@@ -623,7 +633,6 @@
gpm_backlight_sync_policy (backlight);
} else if (mode == GPM_IDLE_MODE_SESSION) {
-
/* activate display power management */
if (backlight->priv->can_dpms == TRUE) {
error = NULL;
@@ -859,10 +868,16 @@
GPM_CONF_GNOME_SS_PM_DELAY,
backlight->priv->idle_dim_timeout);
+ /* set the main brightness, this is designed to be updated if the user changes the
+ * brightness so we can undim to the 'correct' value */
+ gpm_conf_get_uint (backlight->priv->conf,
+ GPM_CONF_BACKLIGHT_BRIGHTNESS_AC,
+ &backlight->priv->master_percentage);
+
/* watch for brightness up and down buttons and also check lid state */
backlight->priv->button = gpm_button_new ();
g_signal_connect (backlight->priv->button, "button-pressed",
- G_CALLBACK (button_pressed_cb), backlight);
+ G_CALLBACK (gpm_backlight_button_pressed_cb), backlight);
/* we use ac_adapter for the ac-adapter-changed signal */
backlight->priv->ac_adapter = gpm_ac_adapter_new ();
Modified: trunk/src/gpm-brightness.c
==============================================================================
--- trunk/src/gpm-brightness.c (original)
+++ trunk/src/gpm-brightness.c Wed Apr 9 23:22:22 2008
@@ -73,6 +73,7 @@
g_return_val_if_fail (GPM_IS_BRIGHTNESS (brightness), FALSE);
if (brightness->priv->use_xrandr) {
ret = gpm_brightness_xrandr_set (brightness->priv->xrandr, percentage);
+ return ret;
}
if (brightness->priv->use_hal) {
ret = gpm_brightness_hal_set (brightness->priv->hal, percentage);
@@ -95,6 +96,7 @@
g_return_val_if_fail (GPM_IS_BRIGHTNESS (brightness), FALSE);
if (brightness->priv->use_xrandr) {
ret = gpm_brightness_xrandr_get (brightness->priv->xrandr, percentage);
+ return ret;
}
if (brightness->priv->use_hal) {
ret = gpm_brightness_hal_get (brightness->priv->hal, percentage);
@@ -115,6 +117,7 @@
g_return_val_if_fail (GPM_IS_BRIGHTNESS (brightness), FALSE);
if (brightness->priv->use_xrandr) {
ret = gpm_brightness_xrandr_up (brightness->priv->xrandr);
+ return ret;
}
if (brightness->priv->use_hal) {
ret = gpm_brightness_hal_up (brightness->priv->hal);
@@ -135,6 +138,7 @@
g_return_val_if_fail (GPM_IS_BRIGHTNESS (brightness), FALSE);
if (brightness->priv->use_xrandr) {
ret = gpm_brightness_xrandr_down (brightness->priv->xrandr);
+ return ret;
}
if (brightness->priv->use_hal) {
ret = gpm_brightness_hal_down (brightness->priv->hal);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]