summaryrefslogtreecommitdiff
path: root/apps/plugins/doom
diff options
context:
space:
mode:
authorMichael Sevakis <jethead71@rockbox.org>2007-05-22 06:31:44 +0000
committerMichael Sevakis <jethead71@rockbox.org>2007-05-22 06:31:44 +0000
commit8970055ec107a2387eedbb373889d0f540745121 (patch)
tree369d5eebe74858a6d767c1d039d8213097caa884 /apps/plugins/doom
parent1e8f0e7c6428cc8f11005b077e8c9e1551ca5f69 (diff)
downloadrockbox-8970055ec107a2387eedbb373889d0f540745121.zip
rockbox-8970055ec107a2387eedbb373889d0f540745121.tar.gz
rockbox-8970055ec107a2387eedbb373889d0f540745121.tar.bz2
rockbox-8970055ec107a2387eedbb373889d0f540745121.tar.xz
Hopefully take care of the scrollwheel difficulties in plugins on e200.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@13460 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/plugins/doom')
-rw-r--r--apps/plugins/doom/i_video.c32
1 files changed, 30 insertions, 2 deletions
diff --git a/apps/plugins/doom/i_video.c b/apps/plugins/doom/i_video.c
index c3ac30f..6bac32b 100644
--- a/apps/plugins/doom/i_video.c
+++ b/apps/plugins/doom/i_video.c
@@ -179,6 +179,9 @@ void I_ShutdownGraphics(void)
#define DOOMBUTTON_ENTER BUTTON_REW
#define DOOMBUTTON_WEAPON BUTTON_FF
#elif CONFIG_KEYPAD == SANSA_E200_PAD
+#define DOOMBUTTON_SCROLLWHEEL
+#define DOOMBUTTON_SCROLLWHEEL_CC BUTTON_SCROLL_UP
+#define DOOMBUTTON_SCROLLWHEEL_CW BUTTON_SCROLL_DOWN
#define DOOMBUTTON_UP BUTTON_UP
#define DOOMBUTTON_DOWN BUTTON_DOWN
#define DOOMBUTTON_LEFT BUTTON_LEFT
@@ -186,8 +189,8 @@ void I_ShutdownGraphics(void)
#define DOOMBUTTON_SHOOT BUTTON_SELECT
#define DOOMBUTTON_OPEN BUTTON_REC
#define DOOMBUTTON_ESC BUTTON_POWER
-#define DOOMBUTTON_ENTER BUTTON_SCROLL_UP
-#define DOOMBUTTON_WEAPON BUTTON_SCROLL_DOWN
+#define DOOMBUTTON_ENTER BUTTON_SELECT
+#define DOOMBUTTON_WEAPON DOOMBUTTON_SCROLLWHEEL_CW
#elif CONFIG_KEYPAD == GIGABEAT_PAD
#define DOOMBUTTON_UP BUTTON_UP
#define DOOMBUTTON_DOWN BUTTON_DOWN
@@ -211,6 +214,27 @@ void I_ShutdownGraphics(void)
#define DOOMBUTTON_WEAPON BUTTON_ON
#endif
+#ifdef DOOMBUTTON_SCROLLWHEEL
+/* Scrollwheel events are posted directly and not polled by the button
+ driver - synthesize polling */
+static inline unsigned int read_scroll_wheel(void)
+{
+ unsigned int buttons = BUTTON_NONE;
+ unsigned int btn;
+
+ /* Empty out the button queue and see if any scrollwheel events were
+ posted */
+ do
+ {
+ btn = rb->button_get_w_tmo(0);
+ buttons |= btn;
+ }
+ while (btn != BUTTON_NONE);
+
+ return buttons & (DOOMBUTTON_SCROLLWHEEL_CC | DOOMBUTTON_SCROLLWHEEL_CW);
+}
+#endif
+
inline void getkey()
{
event_t event;
@@ -247,6 +271,10 @@ inline void getkey()
#endif
newbuttonstate = rb->button_status();
+#ifdef DOOMBUTTON_SCROLLWHEEL
+ newbuttonstate |= read_scroll_wheel();
+#endif
+
if(newbuttonstate==oldbuttonstate) /* Don't continue, nothing left to do */
return;
released = ~newbuttonstate & oldbuttonstate;