diff options
author | inmarket <andrewh@inmarket.com.au> | 2014-11-07 12:02:41 +1000 |
---|---|---|
committer | inmarket <andrewh@inmarket.com.au> | 2014-11-07 12:02:41 +1000 |
commit | bd041926b43676e2bf597c98149f9a6df8f8004b (patch) | |
tree | 22a9db91876fbac50f874539e42a0dad8b5de3fc /src/ginput | |
parent | f552ba62afc6cdb72fbb1b4dcdcc96000895a1cd (diff) | |
download | uGFX-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.h | 8 | ||||
-rw-r--r-- | src/ginput/ginput_mouse.c | 5 |
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 |