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.c25
1 files changed, 15 insertions, 10 deletions
diff --git a/uisimulator/sdl/button.c b/uisimulator/sdl/button.c
index 1bb9311890..4869dd06b1 100644
--- a/uisimulator/sdl/button.c
+++ b/uisimulator/sdl/button.c
@@ -30,6 +30,11 @@
30 30
31static intptr_t button_data; /* data value from last message dequeued */ 31static intptr_t button_data; /* data value from last message dequeued */
32 32
33/* Special thread-synced queue_post for button driver or any other preemptive sim thread */
34extern void queue_syncpost(struct event_queue *q, long id, intptr_t data);
35/* Special thread-synced queue_broadcast for button driver or any other preemptive sim thread */
36extern int queue_syncbroadcast(long id, intptr_t data);
37
33/* how long until repeat kicks in */ 38/* how long until repeat kicks in */
34#define REPEAT_START 6 39#define REPEAT_START 6
35 40
@@ -110,9 +115,9 @@ void button_event(int key, bool pressed)
110 { 115 {
111 usb_connected = !usb_connected; 116 usb_connected = !usb_connected;
112 if (usb_connected) 117 if (usb_connected)
113 queue_post(&button_queue, SYS_USB_CONNECTED, 0); 118 queue_syncpost(&button_queue, SYS_USB_CONNECTED, 0);
114 else 119 else
115 queue_post(&button_queue, SYS_USB_DISCONNECTED, 0); 120 queue_syncpost(&button_queue, SYS_USB_DISCONNECTED, 0);
116 } 121 }
117 return; 122 return;
118 123
@@ -590,7 +595,7 @@ void button_event(int key, bool pressed)
590 case SDLK_F5: 595 case SDLK_F5:
591 if(pressed) 596 if(pressed)
592 { 597 {
593 screen_dump(); 598 queue_syncbroadcast(SYS_SCREENDUMP, 0);
594 return; 599 return;
595 } 600 }
596 break; 601 break;
@@ -611,17 +616,17 @@ void button_event(int key, bool pressed)
611#ifdef HAVE_REMOTE_LCD 616#ifdef HAVE_REMOTE_LCD
612 if(diff & BUTTON_REMOTE) 617 if(diff & BUTTON_REMOTE)
613 if(!skip_remote_release) 618 if(!skip_remote_release)
614 queue_post(&button_queue, BUTTON_REL | diff, 0); 619 queue_syncpost(&button_queue, BUTTON_REL | diff, 0);
615 else 620 else
616 skip_remote_release = false; 621 skip_remote_release = false;
617 else 622 else
618#endif 623#endif
619 if(!skip_release) 624 if(!skip_release)
620 queue_post(&button_queue, BUTTON_REL | diff, 0); 625 queue_syncpost(&button_queue, BUTTON_REL | diff, 0);
621 else 626 else
622 skip_release = false; 627 skip_release = false;
623#else 628#else
624 queue_post(&button_queue, BUTTON_REL | diff, 0); 629 queue_syncpost(&button_queue, BUTTON_REL | diff, 0);
625#endif 630#endif
626 } 631 }
627 632
@@ -673,7 +678,7 @@ void button_event(int key, bool pressed)
673 { 678 {
674 if (queue_empty(&button_queue)) 679 if (queue_empty(&button_queue))
675 { 680 {
676 queue_post(&button_queue, BUTTON_REPEAT | btn, 0); 681 queue_syncpost(&button_queue, BUTTON_REPEAT | btn, 0);
677#ifdef HAVE_BACKLIGHT 682#ifdef HAVE_BACKLIGHT
678#ifdef HAVE_REMOTE_LCD 683#ifdef HAVE_REMOTE_LCD
679 if(btn & BUTTON_REMOTE) 684 if(btn & BUTTON_REMOTE)
@@ -695,18 +700,18 @@ void button_event(int key, bool pressed)
695#ifdef HAVE_REMOTE_LCD 700#ifdef HAVE_REMOTE_LCD
696 if (btn & BUTTON_REMOTE) { 701 if (btn & BUTTON_REMOTE) {
697 if (!remote_filter_first_keypress || is_remote_backlight_on()) 702 if (!remote_filter_first_keypress || is_remote_backlight_on())
698 queue_post(&button_queue, btn, 0); 703 queue_syncpost(&button_queue, btn, 0);
699 else 704 else
700 skip_remote_release = true; 705 skip_remote_release = true;
701 } 706 }
702 else 707 else
703#endif 708#endif
704 if (!filter_first_keypress || is_backlight_on()) 709 if (!filter_first_keypress || is_backlight_on())
705 queue_post(&button_queue, btn, 0); 710 queue_syncpost(&button_queue, btn, 0);
706 else 711 else
707 skip_release = true; 712 skip_release = true;
708#else /* no backlight, nothing to skip */ 713#else /* no backlight, nothing to skip */
709 queue_post(&button_queue, btn, 0); 714 queue_syncpost(&button_queue, btn, 0);
710#endif 715#endif
711 post = false; 716 post = false;
712 } 717 }