gnome-power-manager r3110 - in branches/gnome-2-24: . src



Author: rhughes
Date: Tue Dec  2 09:05:30 2008
New Revision: 3110
URL: http://svn.gnome.org/viewvc/gnome-power-manager?rev=3110&view=rev

Log:
2008-12-02  Richard Hughes  <richard hughsie com>

* src/gpm-brightness-xrandr.c:
(gpm_brightness_xrandr_output_get_percentage),
(gpm_brightness_xrandr_output_down),
(gpm_brightness_xrandr_output_up),
(gpm_brightness_xrandr_output_set):
* src/gpm-brightness.c: (gpm_brightness_set), (gpm_brightness_get),
(gpm_brightness_up), (gpm_brightness_down), (gpm_brightness_init):
Currently, several Dell laptops contain Intel graphics cards.
The Intel driver reports that it is able to change the display
brightness, however it also reports the number of levels supported
as zero.
In cases such as these, gnome power manager should fallback to the
functional HAL Backend if it's available for the laptop.
Fixes #562900

Patch from Mario Limonciello <mario_limonciello dell com>, and slightly
modified by me. Many thanks.


Modified:
   branches/gnome-2-24/ChangeLog
   branches/gnome-2-24/src/gpm-brightness-xrandr.c
   branches/gnome-2-24/src/gpm-brightness.c

Modified: branches/gnome-2-24/src/gpm-brightness-xrandr.c
==============================================================================
--- branches/gnome-2-24/src/gpm-brightness-xrandr.c	(original)
+++ branches/gnome-2-24/src/gpm-brightness-xrandr.c	Tue Dec  2 09:05:30 2008
@@ -217,7 +217,7 @@
 		return FALSE;
 	}
 	ret = gpm_brightness_xrandr_output_get_limits (brightness, output, &min, &max);
-	if (!ret) {
+	if (!ret || min == max) {
 		return FALSE;
 	}
 	egg_debug ("hard value=%i, min=%i, max=%i", cur, min, max);
@@ -244,7 +244,7 @@
 		return FALSE;
 	}
 	ret = gpm_brightness_xrandr_output_get_limits (brightness, output, &min, &max);
-	if (!ret) {
+	if (!ret || min == max) {
 		return FALSE;
 	}
 	egg_debug ("hard value=%i, min=%i, max=%i", cur, min, max);
@@ -278,7 +278,7 @@
 		return FALSE;
 	}
 	ret = gpm_brightness_xrandr_output_get_limits (brightness, output, &min, &max);
-	if (!ret) {
+	if (!ret || min == max) {
 		return FALSE;
 	}
 	egg_debug ("hard value=%i, min=%i, max=%i", cur, min, max);
@@ -314,7 +314,7 @@
 		return FALSE;
 	}
 	ret = gpm_brightness_xrandr_output_get_limits (brightness, output, &min, &max);
-	if (!ret) {
+	if (!ret || min == max) {
 		return FALSE;
 	}
 

Modified: branches/gnome-2-24/src/gpm-brightness.c
==============================================================================
--- branches/gnome-2-24/src/gpm-brightness.c	(original)
+++ branches/gnome-2-24/src/gpm-brightness.c	Tue Dec  2 09:05:30 2008
@@ -131,7 +131,9 @@
 	/* set the hardware */
 	if (brightness->priv->use_xrandr) {
 		ret = gpm_brightness_xrandr_set (brightness->priv->xrandr, percentage, &hw_changed_local);
-		goto out;
+		if (ret)
+			goto out;
+		brightness->priv->use_xrandr = FALSE;
 	}
 	if (brightness->priv->use_hal) {
 		ret = gpm_brightness_hal_set (brightness->priv->hal, percentage, &hw_changed_local);
@@ -179,7 +181,9 @@
 	/* get the brightness from hardware -- slow */
 	if (brightness->priv->use_xrandr) {
 		ret = gpm_brightness_xrandr_get (brightness->priv->xrandr, &percentage_local);
-		goto out;
+		if (ret)
+			goto out;
+		brightness->priv->use_xrandr = FALSE;
 	}
 	if (brightness->priv->use_hal) {
 		ret = gpm_brightness_hal_get (brightness->priv->hal, &percentage_local);
@@ -222,7 +226,9 @@
 
 	if (brightness->priv->use_xrandr) {
 		ret = gpm_brightness_xrandr_up (brightness->priv->xrandr, &hw_changed_local);
-		goto out;
+		if (ret)
+			goto out;
+		brightness->priv->use_xrandr = FALSE;
 	}
 	if (brightness->priv->use_hal) {
 		ret = gpm_brightness_hal_up (brightness->priv->hal, &hw_changed_local);
@@ -260,7 +266,9 @@
 
 	if (brightness->priv->use_xrandr) {
 		ret = gpm_brightness_xrandr_down (brightness->priv->xrandr, &hw_changed_local);
-		goto out;
+		if (ret)
+			goto out;
+		brightness->priv->use_xrandr = FALSE;
 	}
 	if (brightness->priv->use_hal) {
 		ret = gpm_brightness_hal_down (brightness->priv->hal, &hw_changed_local);
@@ -400,10 +408,6 @@
 	if (gpm_brightness_hal_has_hw (brightness->priv->hal)) {
 		brightness->priv->use_hal = TRUE;
 	}
-	/* we want to default to only use XRANDR if available, as some hardware can use either */
-	if (brightness->priv->use_xrandr) {
-		brightness->priv->use_hal = FALSE;
-	}
 	g_signal_connect (brightness->priv->hal, "brightness-changed",
 			  G_CALLBACK (gpm_brightness_hal_changed_cb), brightness);
 	g_signal_connect (brightness->priv->xrandr, "brightness-changed",



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]