summaryrefslogtreecommitdiff
path: root/uisimulator/sdl/button.c
diff options
context:
space:
mode:
Diffstat (limited to 'uisimulator/sdl/button.c')
-rw-r--r--uisimulator/sdl/button.c16
1 files changed, 13 insertions, 3 deletions
diff --git a/uisimulator/sdl/button.c b/uisimulator/sdl/button.c
index 671cf12d5c..72224315a2 100644
--- a/uisimulator/sdl/button.c
+++ b/uisimulator/sdl/button.c
@@ -39,7 +39,6 @@ static int btn = 0; /* Hopefully keeps track of currently pressed keys... */
39 39
40void button_event(int key, bool pressed) 40void button_event(int key, bool pressed)
41{ 41{
42 bool post = false;
43 int new_btn = 0; 42 int new_btn = 0;
44 int diff = 0; 43 int diff = 0;
45 static int count = 0; 44 static int count = 0;
@@ -47,6 +46,7 @@ void button_event(int key, bool pressed)
47 static int repeat_speed = REPEAT_INTERVAL_START; 46 static int repeat_speed = REPEAT_INTERVAL_START;
48 static int repeat_count = 0; 47 static int repeat_count = 0;
49 static bool repeat = false; 48 static bool repeat = false;
49 static bool post = false;
50 50
51 switch (key) 51 switch (key)
52 { 52 {
@@ -175,7 +175,8 @@ void button_event(int key, bool pressed)
175 { 175 {
176 if ( repeat ) 176 if ( repeat )
177 { 177 {
178 count--; 178 if (!post)
179 count--;
179 if (count == 0) 180 if (count == 0)
180 { 181 {
181 post = true; 182 post = true;
@@ -203,9 +204,18 @@ void button_event(int key, bool pressed)
203 if ( post ) 204 if ( post )
204 { 205 {
205 if(repeat) 206 if(repeat)
206 queue_post(&button_queue, BUTTON_REPEAT | btn, NULL); 207 {
208 if (queue_empty(&button_queue))
209 {
210 queue_post(&button_queue, BUTTON_REPEAT | btn, NULL);
211 post = false;
212 }
213 }
207 else 214 else
215 {
208 queue_post(&button_queue, btn, NULL); 216 queue_post(&button_queue, btn, NULL);
217 post = false;
218 }
209 219
210#ifdef HAVE_REMOTE_LCD 220#ifdef HAVE_REMOTE_LCD
211 if(btn & BUTTON_REMOTE) 221 if(btn & BUTTON_REMOTE)