liblights: Fix reading of previous brightness value

Change-Id: Ie175521033b3a8d96197794cff1a2dce89e516c3
tirimbino
XpLoDWilD 12 years ago
parent 23280fc439
commit 86d0895f82
  1. 21
      exynos4/exynos4x12/liblights/lights.c

@ -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);

Loading…
Cancel
Save