From 99a9bf45e747f612ce2c2317a913f7d1fdf696f0 Mon Sep 17 00:00:00 2001 From: Andrew Hannam Date: Sun, 2 Dec 2012 16:43:28 +1000 Subject: Add support for interrupt driven Toggle Inputs --- src/ginput/toggle.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/ginput/toggle.c b/src/ginput/toggle.c index a49ebfd3..890ac1dc 100644 --- a/src/ginput/toggle.c +++ b/src/ginput/toggle.c @@ -34,10 +34,6 @@ #include "lld/ginput/toggle.h" -#ifndef GINPUT_TOGGLE_POLL_PERIOD - #define GINPUT_TOGGLE_POLL_PERIOD 250 -#endif - #define GINPUT_TOGGLE_ISON 0x01 #define GINPUT_TOGGLE_INVERT 0x02 @@ -157,5 +153,15 @@ bool_t ginputGetToggleStatus(uint16_t instance, GEventToggle *ptoggle) { return TRUE; } +/* Wake up the mouse driver from an interrupt service routine (there may be new readings available) */ +void ginputToggleWakeup(void) { + gtimerJab(&ToggleTimer); +} + +/* Wake up the mouse driver from an interrupt service routine (there may be new readings available) */ +void ginputToggleWakeupI(void) { + gtimerJabI(&ToggleTimer); +} + #endif /* GINPUT_NEED_TOGGLE */ /** @} */ -- cgit v1.2.3 From 1394b41d48299ebcfbe11f085746dbe09ad20b27 Mon Sep 17 00:00:00 2001 From: Andrew Hannam Date: Sun, 2 Dec 2012 16:47:11 +1000 Subject: GWIN Button bug fix GWIN Buttons are now tested and working. --- src/gwin/button.c | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) (limited to 'src') diff --git a/src/gwin/button.c b/src/gwin/button.c index fce82a20..43c6d5d4 100644 --- a/src/gwin/button.c +++ b/src/gwin/button.c @@ -305,12 +305,8 @@ bool_t gwinAttachButtonSource(GHandle gh, GSourceHandle gsh, GEventType type) { switch (type) { #if defined(GINPUT_NEED_MOUSE) && GINPUT_NEED_MOUSE case GEVENT_MOUSE: - flags = 0; - break; - #endif - #if defined(GINPUT_NEED_TOUCH) && GINPUT_NEED_TOUCH case GEVENT_TOUCH: - flags = 0; + flags = GLISTEN_MOUSEMETA; break; #endif #if defined(GINPUT_NEED_TOGGLE) && GINPUT_NEED_TOGGLE -- cgit v1.2.3 From 74e94d39b9b66adeaf8bcbb8789d79110102bb15 Mon Sep 17 00:00:00 2001 From: Andrew Hannam Date: Sun, 2 Dec 2012 17:10:27 +1000 Subject: Split Attaching Sources to a GWIN button Split Attaching Sources to a GWIN button to allow for new input types that require a parameter in future eg. Keyboard will require a parameter. --- src/gwin/button.c | 35 ++++++++++++++--------------------- 1 file changed, 14 insertions(+), 21 deletions(-) (limited to 'src') diff --git a/src/gwin/button.c b/src/gwin/button.c index 43c6d5d4..4e1e45f5 100644 --- a/src/gwin/button.c +++ b/src/gwin/button.c @@ -297,30 +297,23 @@ void gwinButtonDraw(GHandle gh) { #undef gbw } -// Attach a source to this button. Sources recognised: Mouse, Touch and Toggle - others are ignored (returns false). -bool_t gwinAttachButtonSource(GHandle gh, GSourceHandle gsh, GEventType type) { - #define gbw ((GButtonObject *)gh) - unsigned flags; +#if defined(GINPUT_NEED_MOUSE) && GINPUT_NEED_MOUSE + bool_t gwinAttachButtonMouseSource(GHandle gh, GSourceHandle gsh) { + if (gh->type != GW_BUTTON) + return FALSE; - switch (type) { - #if defined(GINPUT_NEED_MOUSE) && GINPUT_NEED_MOUSE - case GEVENT_MOUSE: - case GEVENT_TOUCH: - flags = GLISTEN_MOUSEMETA; - break; - #endif - #if defined(GINPUT_NEED_TOGGLE) && GINPUT_NEED_TOGGLE - case GEVENT_TOGGLE: - flags = GLISTEN_TOGGLE_OFF|GLISTEN_TOGGLE_ON; - break; - #endif - default: - return FALSE; + return geventAttachSource(&((GButtonObject *)gh)->listener, gsh, GLISTEN_MOUSEMETA); } - return geventAttachSource(&gbw->listener, gsh, flags); +#endif - #undef gbw -} +#if defined(GINPUT_NEED_TOGGLE) && GINPUT_NEED_TOGGLE + bool_t gwinAttachButtonToggleSource(GHandle gh, GSourceHandle gsh) { + if (gh->type != GW_BUTTON) + return FALSE; + + return geventAttachSource(&((GButtonObject *)gh)->listener, gsh, GLISTEN_TOGGLE_OFF|GLISTEN_TOGGLE_ON); + } +#endif #endif /* GFX_USE_GWIN && GWIN_NEED_BUTTON */ /** @} */ -- cgit v1.2.3