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