hosted: Fix overzealous spamming of backlight and lcd enable

This caused random delays in LCD activity, and also caused key inputs to go nuts

Change-Id: Ie483c86f7461455308f8c5f8999df313521c6b55
This commit is contained in:
Solomon Peachy 2020-10-01 22:03:21 -04:00
parent f4f3255edf
commit 9ee618e889
2 changed files with 27 additions and 10 deletions

View file

@ -53,17 +53,17 @@ void lcd_init_device(void)
panicf("Cannot open framebuffer: %s\n", fb_dev);
}
if (fcntl( fd, F_SETFD, FD_CLOEXEC ) < 0)
{
panicf("Can't set CLOEXEC");
}
/* get fixed and variable information */
if(ioctl(fd, FBIOGET_FSCREENINFO, &finfo) < 0)
{
panicf("Cannot read framebuffer fixed information");
}
if(ioctl(fd, FBIOGET_VSCREENINFO, &vinfo) < 0)
{
panicf("Cannot read framebuffer variable information");
}
#if 0
/* check resolution and framebuffer size */
if(vinfo.xres != LCD_WIDTH || vinfo.yres != LCD_HEIGHT || vinfo.bits_per_pixel != LCD_DEPTH)
@ -76,12 +76,17 @@ void lcd_init_device(void)
* values returned by the driver for line_length */
/* map framebuffer */
framebuffer = mmap(0, FRAMEBUFFER_SIZE, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);
framebuffer = mmap(NULL, FRAMEBUFFER_SIZE, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);
if((void *)framebuffer == MAP_FAILED)
{
panicf("Cannot map framebuffer");
}
if(ioctl(fd, FBIOGET_VSCREENINFO, &vinfo) < 0)
{
panicf("Cannot read framebuffer variable information");
}
memset(framebuffer, 0, finfo.smem_len);
#ifdef HAVE_LCD_ENABLE
@ -104,7 +109,11 @@ void lcd_enable(bool on)
{
if (fd < 0) return;
if (lcd_active() == on)
return;
lcd_set_active(on);
if (on)
{
send_event(LCD_EVENT_ACTIVATION, NULL);