aboutsummaryrefslogtreecommitdiffstats
path: root/src/ginput
diff options
context:
space:
mode:
authorinmarket <andrewh@inmarket.com.au>2014-11-07 12:02:41 +1000
committerinmarket <andrewh@inmarket.com.au>2014-11-07 12:02:41 +1000
commitbd041926b43676e2bf597c98149f9a6df8f8004b (patch)
tree22a9db91876fbac50f874539e42a0dad8b5de3fc /src/ginput
parentf552ba62afc6cdb72fbb1b4dcdcc96000895a1cd (diff)
downloaduGFX-bd041926b43676e2bf597c98149f9a6df8f8004b.tar.gz
uGFX-bd041926b43676e2bf597c98149f9a6df8f8004b.tar.bz2
uGFX-bd041926b43676e2bf597c98149f9a6df8f8004b.zip
Allow a mouse driver to not return any results when it is polled.
Diffstat (limited to 'src/ginput')
-rw-r--r--src/ginput/driver_mouse.h8
-rw-r--r--src/ginput/ginput_mouse.c5
2 files changed, 7 insertions, 6 deletions
diff --git a/src/ginput/driver_mouse.h b/src/ginput/driver_mouse.h
index 037f9c0f..836ae1de 100644
--- a/src/ginput/driver_mouse.h
+++ b/src/ginput/driver_mouse.h
@@ -86,10 +86,10 @@ typedef struct GMouseVMT {
GMouseJitter pen_jitter; // PEN MODE: Jitter settings
GMouseJitter finger_jitter; // FINGER MODE: Jitter settings
- bool_t (*init)(GMouse *m, unsigned driverinstance); // Required
- void (*deinit)(GMouse *m); // Optional
- void (*get)(GMouse *m, GMouseReading *prd); // Required
- void (*calsave)(GMouse *m, void *buf, size_t sz); // Optional
+ bool_t (*init)(GMouse *m, unsigned driverinstance); // Required
+ void (*deinit)(GMouse *m); // Optional
+ bool_t (*get)(GMouse *m, GMouseReading *prd); // Required
+ void (*calsave)(GMouse *m, void *buf, size_t sz); // Optional
const char *(*calload)(GMouse *m, size_t sz); // Optional: Can return NULL if no data is saved.
} GMouseVMT;
diff --git a/src/ginput/ginput_mouse.c b/src/ginput/ginput_mouse.c
index 9cdcaec2..570839a2 100644
--- a/src/ginput/ginput_mouse.c
+++ b/src/ginput/ginput_mouse.c
@@ -78,7 +78,7 @@ static void SendMouseEvent(GSourceListener *psl, GMouse *m, GMouseReading *r) {
// Send the event only if we are listening for it
if (!((r->buttons & GINPUT_MOUSE_BTN_LEFT) && (psl->listenflags & GLISTEN_MOUSEDOWNMOVES))
- && !((r->buttons & GINPUT_MOUSE_BTN_LEFT) && (psl->listenflags & GLISTEN_MOUSEUPMOVES))
+ && !(!(r->buttons & GINPUT_MOUSE_BTN_LEFT) && (psl->listenflags & GLISTEN_MOUSEUPMOVES))
&& !((r->buttons & GMETA_MASK) && (psl->listenflags & GLISTEN_MOUSEMETA)))
return;
@@ -102,7 +102,8 @@ static void GetMouseReading(GMouse *m) {
// Step 1 - Get the Raw Reading
{
m->flags &= ~GMOUSE_FLG_NEEDREAD;
- gmvmt(m)->get(m, &r);
+ if (!gmvmt(m)->get(m, &r))
+ return;
}
// Step 2 - Handle touch and button 0 debouncing