diff options
author | Solomon Peachy <pizza@shaftnet.org> | 2020-10-01 22:03:21 -0400 |
---|---|---|
committer | Solomon Peachy <pizza@shaftnet.org> | 2020-10-02 02:24:42 +0000 |
commit | 9ee618e8891638027d05114250190f215bc01a63 (patch) | |
tree | 8fca5b761f8b7cdfa27eabb973b531bb011974e1 /firmware/target/hosted/lcd-linuxfb.c | |
parent | f4f3255edf95fcecf5ceb9586a529c7600a7cb13 (diff) | |
download | rockbox-9ee618e8891638027d05114250190f215bc01a63.tar.gz rockbox-9ee618e8891638027d05114250190f215bc01a63.zip |
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
Diffstat (limited to 'firmware/target/hosted/lcd-linuxfb.c')
-rw-r--r-- | firmware/target/hosted/lcd-linuxfb.c | 21 |
1 files changed, 15 insertions, 6 deletions
diff --git a/firmware/target/hosted/lcd-linuxfb.c b/firmware/target/hosted/lcd-linuxfb.c index 6a57be9e40..8edb82757f 100644 --- a/firmware/target/hosted/lcd-linuxfb.c +++ b/firmware/target/hosted/lcd-linuxfb.c | |||
@@ -53,15 +53,15 @@ void lcd_init_device(void) | |||
53 | panicf("Cannot open framebuffer: %s\n", fb_dev); | 53 | panicf("Cannot open framebuffer: %s\n", fb_dev); |
54 | } | 54 | } |
55 | 55 | ||
56 | /* get fixed and variable information */ | 56 | if (fcntl( fd, F_SETFD, FD_CLOEXEC ) < 0) |
57 | if(ioctl(fd, FBIOGET_FSCREENINFO, &finfo) < 0) | ||
58 | { | 57 | { |
59 | panicf("Cannot read framebuffer fixed information"); | 58 | panicf("Can't set CLOEXEC"); |
60 | } | 59 | } |
61 | 60 | ||
62 | if(ioctl(fd, FBIOGET_VSCREENINFO, &vinfo) < 0) | 61 | /* get fixed and variable information */ |
62 | if(ioctl(fd, FBIOGET_FSCREENINFO, &finfo) < 0) | ||
63 | { | 63 | { |
64 | panicf("Cannot read framebuffer variable information"); | 64 | panicf("Cannot read framebuffer fixed information"); |
65 | } | 65 | } |
66 | 66 | ||
67 | #if 0 | 67 | #if 0 |
@@ -76,12 +76,17 @@ void lcd_init_device(void) | |||
76 | * values returned by the driver for line_length */ | 76 | * values returned by the driver for line_length */ |
77 | 77 | ||
78 | /* map framebuffer */ | 78 | /* map framebuffer */ |
79 | framebuffer = mmap(0, FRAMEBUFFER_SIZE, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0); | 79 | framebuffer = mmap(NULL, FRAMEBUFFER_SIZE, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0); |
80 | if((void *)framebuffer == MAP_FAILED) | 80 | if((void *)framebuffer == MAP_FAILED) |
81 | { | 81 | { |
82 | panicf("Cannot map framebuffer"); | 82 | panicf("Cannot map framebuffer"); |
83 | } | 83 | } |
84 | 84 | ||
85 | if(ioctl(fd, FBIOGET_VSCREENINFO, &vinfo) < 0) | ||
86 | { | ||
87 | panicf("Cannot read framebuffer variable information"); | ||
88 | } | ||
89 | |||
85 | memset(framebuffer, 0, finfo.smem_len); | 90 | memset(framebuffer, 0, finfo.smem_len); |
86 | 91 | ||
87 | #ifdef HAVE_LCD_ENABLE | 92 | #ifdef HAVE_LCD_ENABLE |
@@ -104,7 +109,11 @@ void lcd_enable(bool on) | |||
104 | { | 109 | { |
105 | if (fd < 0) return; | 110 | if (fd < 0) return; |
106 | 111 | ||
112 | if (lcd_active() == on) | ||
113 | return; | ||
114 | |||
107 | lcd_set_active(on); | 115 | lcd_set_active(on); |
116 | |||
108 | if (on) | 117 | if (on) |
109 | { | 118 | { |
110 | send_event(LCD_EVENT_ACTIVATION, NULL); | 119 | send_event(LCD_EVENT_ACTIVATION, NULL); |