diff options
author | Michael Sevakis <jethead71@rockbox.org> | 2007-10-26 23:11:18 +0000 |
---|---|---|
committer | Michael Sevakis <jethead71@rockbox.org> | 2007-10-26 23:11:18 +0000 |
commit | d6af28739747099f98f541d1b76ba501882e113c (patch) | |
tree | b6ad8d89d0ef96dd4cea37dd89aad8d3fa345179 /uisimulator/sdl/button.c | |
parent | f026c0fc826149a3c88d462cca02b69ef5690c30 (diff) | |
download | rockbox-d6af28739747099f98f541d1b76ba501882e113c.tar.gz rockbox-d6af28739747099f98f541d1b76ba501882e113c.zip |
Implement as genuine a set_irq_level function for the sim as possible. The yield added earlier is still nescessary since other threads won't run anyway while viewing the database screen on either sim or target.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15321 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'uisimulator/sdl/button.c')
-rw-r--r-- | uisimulator/sdl/button.c | 25 |
1 files changed, 10 insertions, 15 deletions
diff --git a/uisimulator/sdl/button.c b/uisimulator/sdl/button.c index 62c2c33150..04475122b5 100644 --- a/uisimulator/sdl/button.c +++ b/uisimulator/sdl/button.c | |||
@@ -30,11 +30,6 @@ | |||
30 | 30 | ||
31 | static intptr_t button_data; /* data value from last message dequeued */ | 31 | static 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 */ | ||
34 | extern 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 */ | ||
36 | extern int queue_syncbroadcast(long id, intptr_t data); | ||
37 | |||
38 | /* how long until repeat kicks in */ | 33 | /* how long until repeat kicks in */ |
39 | #define REPEAT_START 6 | 34 | #define REPEAT_START 6 |
40 | 35 | ||
@@ -115,9 +110,9 @@ void button_event(int key, bool pressed) | |||
115 | { | 110 | { |
116 | usb_connected = !usb_connected; | 111 | usb_connected = !usb_connected; |
117 | if (usb_connected) | 112 | if (usb_connected) |
118 | queue_syncpost(&button_queue, SYS_USB_CONNECTED, 0); | 113 | queue_post(&button_queue, SYS_USB_CONNECTED, 0); |
119 | else | 114 | else |
120 | queue_syncpost(&button_queue, SYS_USB_DISCONNECTED, 0); | 115 | queue_post(&button_queue, SYS_USB_DISCONNECTED, 0); |
121 | } | 116 | } |
122 | return; | 117 | return; |
123 | 118 | ||
@@ -634,7 +629,7 @@ void button_event(int key, bool pressed) | |||
634 | case SDLK_F5: | 629 | case SDLK_F5: |
635 | if(pressed) | 630 | if(pressed) |
636 | { | 631 | { |
637 | queue_syncbroadcast(SYS_SCREENDUMP, 0); | 632 | queue_broadcast(SYS_SCREENDUMP, 0); |
638 | return; | 633 | return; |
639 | } | 634 | } |
640 | break; | 635 | break; |
@@ -655,17 +650,17 @@ void button_event(int key, bool pressed) | |||
655 | #ifdef HAVE_REMOTE_LCD | 650 | #ifdef HAVE_REMOTE_LCD |
656 | if(diff & BUTTON_REMOTE) | 651 | if(diff & BUTTON_REMOTE) |
657 | if(!skip_remote_release) | 652 | if(!skip_remote_release) |
658 | queue_syncpost(&button_queue, BUTTON_REL | diff, 0); | 653 | queue_post(&button_queue, BUTTON_REL | diff, 0); |
659 | else | 654 | else |
660 | skip_remote_release = false; | 655 | skip_remote_release = false; |
661 | else | 656 | else |
662 | #endif | 657 | #endif |
663 | if(!skip_release) | 658 | if(!skip_release) |
664 | queue_syncpost(&button_queue, BUTTON_REL | diff, 0); | 659 | queue_post(&button_queue, BUTTON_REL | diff, 0); |
665 | else | 660 | else |
666 | skip_release = false; | 661 | skip_release = false; |
667 | #else | 662 | #else |
668 | queue_syncpost(&button_queue, BUTTON_REL | diff, 0); | 663 | queue_post(&button_queue, BUTTON_REL | diff, 0); |
669 | #endif | 664 | #endif |
670 | } | 665 | } |
671 | 666 | ||
@@ -717,7 +712,7 @@ void button_event(int key, bool pressed) | |||
717 | { | 712 | { |
718 | if (queue_empty(&button_queue)) | 713 | if (queue_empty(&button_queue)) |
719 | { | 714 | { |
720 | queue_syncpost(&button_queue, BUTTON_REPEAT | btn, 0); | 715 | queue_post(&button_queue, BUTTON_REPEAT | btn, 0); |
721 | #ifdef HAVE_BACKLIGHT | 716 | #ifdef HAVE_BACKLIGHT |
722 | #ifdef HAVE_REMOTE_LCD | 717 | #ifdef HAVE_REMOTE_LCD |
723 | if(btn & BUTTON_REMOTE) | 718 | if(btn & BUTTON_REMOTE) |
@@ -739,18 +734,18 @@ void button_event(int key, bool pressed) | |||
739 | #ifdef HAVE_REMOTE_LCD | 734 | #ifdef HAVE_REMOTE_LCD |
740 | if (btn & BUTTON_REMOTE) { | 735 | if (btn & BUTTON_REMOTE) { |
741 | if (!remote_filter_first_keypress || is_remote_backlight_on()) | 736 | if (!remote_filter_first_keypress || is_remote_backlight_on()) |
742 | queue_syncpost(&button_queue, btn, 0); | 737 | queue_post(&button_queue, btn, 0); |
743 | else | 738 | else |
744 | skip_remote_release = true; | 739 | skip_remote_release = true; |
745 | } | 740 | } |
746 | else | 741 | else |
747 | #endif | 742 | #endif |
748 | if (!filter_first_keypress || is_backlight_on()) | 743 | if (!filter_first_keypress || is_backlight_on()) |
749 | queue_syncpost(&button_queue, btn, 0); | 744 | queue_post(&button_queue, btn, 0); |
750 | else | 745 | else |
751 | skip_release = true; | 746 | skip_release = true; |
752 | #else /* no backlight, nothing to skip */ | 747 | #else /* no backlight, nothing to skip */ |
753 | queue_syncpost(&button_queue, btn, 0); | 748 | queue_post(&button_queue, btn, 0); |
754 | #endif | 749 | #endif |
755 | post = false; | 750 | post = false; |
756 | } | 751 | } |