diff options
Diffstat (limited to 'apps/plugins/doom/i_video.c')
-rw-r--r-- | apps/plugins/doom/i_video.c | 32 |
1 files changed, 30 insertions, 2 deletions
diff --git a/apps/plugins/doom/i_video.c b/apps/plugins/doom/i_video.c index c3ac30f272..6bac32b8ea 100644 --- a/apps/plugins/doom/i_video.c +++ b/apps/plugins/doom/i_video.c | |||
@@ -179,6 +179,9 @@ void I_ShutdownGraphics(void) | |||
179 | #define DOOMBUTTON_ENTER BUTTON_REW | 179 | #define DOOMBUTTON_ENTER BUTTON_REW |
180 | #define DOOMBUTTON_WEAPON BUTTON_FF | 180 | #define DOOMBUTTON_WEAPON BUTTON_FF |
181 | #elif CONFIG_KEYPAD == SANSA_E200_PAD | 181 | #elif CONFIG_KEYPAD == SANSA_E200_PAD |
182 | #define DOOMBUTTON_SCROLLWHEEL | ||
183 | #define DOOMBUTTON_SCROLLWHEEL_CC BUTTON_SCROLL_UP | ||
184 | #define DOOMBUTTON_SCROLLWHEEL_CW BUTTON_SCROLL_DOWN | ||
182 | #define DOOMBUTTON_UP BUTTON_UP | 185 | #define DOOMBUTTON_UP BUTTON_UP |
183 | #define DOOMBUTTON_DOWN BUTTON_DOWN | 186 | #define DOOMBUTTON_DOWN BUTTON_DOWN |
184 | #define DOOMBUTTON_LEFT BUTTON_LEFT | 187 | #define DOOMBUTTON_LEFT BUTTON_LEFT |
@@ -186,8 +189,8 @@ void I_ShutdownGraphics(void) | |||
186 | #define DOOMBUTTON_SHOOT BUTTON_SELECT | 189 | #define DOOMBUTTON_SHOOT BUTTON_SELECT |
187 | #define DOOMBUTTON_OPEN BUTTON_REC | 190 | #define DOOMBUTTON_OPEN BUTTON_REC |
188 | #define DOOMBUTTON_ESC BUTTON_POWER | 191 | #define DOOMBUTTON_ESC BUTTON_POWER |
189 | #define DOOMBUTTON_ENTER BUTTON_SCROLL_UP | 192 | #define DOOMBUTTON_ENTER BUTTON_SELECT |
190 | #define DOOMBUTTON_WEAPON BUTTON_SCROLL_DOWN | 193 | #define DOOMBUTTON_WEAPON DOOMBUTTON_SCROLLWHEEL_CW |
191 | #elif CONFIG_KEYPAD == GIGABEAT_PAD | 194 | #elif CONFIG_KEYPAD == GIGABEAT_PAD |
192 | #define DOOMBUTTON_UP BUTTON_UP | 195 | #define DOOMBUTTON_UP BUTTON_UP |
193 | #define DOOMBUTTON_DOWN BUTTON_DOWN | 196 | #define DOOMBUTTON_DOWN BUTTON_DOWN |
@@ -211,6 +214,27 @@ void I_ShutdownGraphics(void) | |||
211 | #define DOOMBUTTON_WEAPON BUTTON_ON | 214 | #define DOOMBUTTON_WEAPON BUTTON_ON |
212 | #endif | 215 | #endif |
213 | 216 | ||
217 | #ifdef DOOMBUTTON_SCROLLWHEEL | ||
218 | /* Scrollwheel events are posted directly and not polled by the button | ||
219 | driver - synthesize polling */ | ||
220 | static inline unsigned int read_scroll_wheel(void) | ||
221 | { | ||
222 | unsigned int buttons = BUTTON_NONE; | ||
223 | unsigned int btn; | ||
224 | |||
225 | /* Empty out the button queue and see if any scrollwheel events were | ||
226 | posted */ | ||
227 | do | ||
228 | { | ||
229 | btn = rb->button_get_w_tmo(0); | ||
230 | buttons |= btn; | ||
231 | } | ||
232 | while (btn != BUTTON_NONE); | ||
233 | |||
234 | return buttons & (DOOMBUTTON_SCROLLWHEEL_CC | DOOMBUTTON_SCROLLWHEEL_CW); | ||
235 | } | ||
236 | #endif | ||
237 | |||
214 | inline void getkey() | 238 | inline void getkey() |
215 | { | 239 | { |
216 | event_t event; | 240 | event_t event; |
@@ -247,6 +271,10 @@ inline void getkey() | |||
247 | #endif | 271 | #endif |
248 | 272 | ||
249 | newbuttonstate = rb->button_status(); | 273 | newbuttonstate = rb->button_status(); |
274 | #ifdef DOOMBUTTON_SCROLLWHEEL | ||
275 | newbuttonstate |= read_scroll_wheel(); | ||
276 | #endif | ||
277 | |||
250 | if(newbuttonstate==oldbuttonstate) /* Don't continue, nothing left to do */ | 278 | if(newbuttonstate==oldbuttonstate) /* Don't continue, nothing left to do */ |
251 | return; | 279 | return; |
252 | released = ~newbuttonstate & oldbuttonstate; | 280 | released = ~newbuttonstate & oldbuttonstate; |