liblights: Fix reading of previous brightness value
authorXpLoDWilD <xplodgui@gmail.com>
Sat, 7 Jul 2012 20:58:23 +0000 (22:58 +0200)
committerXpLoDWilD <xplodgui@gmail.com>
Sat, 7 Jul 2012 21:02:29 +0000 (23:02 +0200)
Change-Id: Ie175521033b3a8d96197794cff1a2dce89e516c3

exynos4/exynos4x12/liblights/lights.c

index e8336d28d9e569e39d525e926fac7fb4c6fe71ee..2e5c0295e5f63bf51aa1c8d7a049fdabe2c78547 100644 (file)
@@ -89,6 +89,21 @@ static int write_int(char const *path, int value)
     }
 }
 
+static int read_int(char const *path)
+{
+    int fd;
+    char buffer[2];
+
+    fd = open(path, O_RDONLY);
+
+    if (fd >= 0) {
+        read(fd, buffer, 1);
+    }
+    close(fd);
+
+    return atoi(buffer);
+}
+
 static int write_str(char const *path, const char* value)
 {
     int fd;
@@ -126,14 +141,14 @@ static int set_light_backlight(struct light_device_t *dev,
             struct light_state_t const *state)
 {
     int err = 0;
-    static int s_previous_brightness = -1;
     int brightness = rgb_to_brightness(state);
+    int previous_brightness = read_int(PANEL_FILE);
 
     pthread_mutex_lock(&g_lock);
+
     err = write_int(PANEL_FILE, brightness);
-    if (!s_previous_brightness && (brightness > 0)) {
+    if (!previous_brightness && (brightness > 0)) {
         err = write_int(BUTTON_FILE, brightness > 0 ? 1 : 2);
-        s_previous_brightness = brightness;
     }
     pthread_mutex_unlock(&g_lock);