aboutsummaryrefslogtreecommitdiffstats
path: root/src/ginput
diff options
context:
space:
mode:
authorinmarket <andrewh@inmarket.com.au>2014-11-15 15:22:09 +1000
committerinmarket <andrewh@inmarket.com.au>2014-11-15 15:22:09 +1000
commitfe00d3e090a8197b86c278d548a8f069bcca348d (patch)
treed94dad28d44791944ebb7e6de8e820fe994a1e3c /src/ginput
parenta8d6aa079056d14ce8d207f8dcf1ed527c0b5ca9 (diff)
downloaduGFX-fe00d3e090a8197b86c278d548a8f069bcca348d.tar.gz
uGFX-fe00d3e090a8197b86c278d548a8f069bcca348d.tar.bz2
uGFX-fe00d3e090a8197b86c278d548a8f069bcca348d.zip
Change the definition of the calibration load and save routines as per steved suggestion.
Diffstat (limited to 'src/ginput')
-rw-r--r--src/ginput/driver_mouse.h5
-rw-r--r--src/ginput/ginput_mouse.c20
-rw-r--r--src/ginput/ginput_mouse.h5
-rw-r--r--src/ginput/sys_options.h12
4 files changed, 11 insertions, 31 deletions
diff --git a/src/ginput/driver_mouse.h b/src/ginput/driver_mouse.h
index 836ae1de..5f948458 100644
--- a/src/ginput/driver_mouse.h
+++ b/src/ginput/driver_mouse.h
@@ -74,7 +74,6 @@ typedef struct GMouseVMT {
#define GMOUSE_VFLG_CALIBRATE 0x0010 // This device requires calibration
#define GMOUSE_VFLG_CAL_EXTREMES 0x0020 // Use edge to edge calibration
#define GMOUSE_VFLG_CAL_TEST 0x0040 // Test the results of the calibration
- #define GMOUSE_VFLG_CAL_LOADFREE 0x0080 // Call gfxFree on the buffer returned by the VMT calload() routine.
#define GMOUSE_VFLG_ONLY_DOWN 0x0100 // This device returns a valid position only when the mouse is down
#define GMOUSE_VFLG_POORUPDOWN 0x0200 // Position readings during up/down are unreliable
#define GMOUSE_VFLG_DYNAMICONLY 0x8000 // This mouse driver should not be statically initialized eg Win32
@@ -89,8 +88,8 @@ typedef struct GMouseVMT {
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.
+ void (*calsave)(GMouse *m, const void *buf, size_t sz); // Optional
+ bool_t (*calload)(GMouse *m, void *buf, size_t sz); // Optional
} GMouseVMT;
#define gmvmt(m) ((const GMouseVMT const *)((m)->d.vmt))
diff --git a/src/ginput/ginput_mouse.c b/src/ginput/ginput_mouse.c
index 570839a2..fcaa53b8 100644
--- a/src/ginput/ginput_mouse.c
+++ b/src/ginput/ginput_mouse.c
@@ -462,7 +462,7 @@ static void MousePoll(void *param) {
gdispGSetClip(m->display, 0, 0, w, h);
#endif
- // Ensure we get minimaly processed readings for the calibration
+ // Ensure we get minimally processed readings for the calibration
m->flags |= GMOUSE_FLG_IN_CAL;
// Set up our calibration locations
@@ -519,7 +519,7 @@ static void MousePoll(void *param) {
gfxSleepMilliseconds(CALIBRATION_POLL_PERIOD);
}
- // Ignore presses less than CALIBRATION_MAXPRESS_PERIOD milliseconds
+ // Ignore presses less than CALIBRATION_MINPRESS_PERIOD milliseconds
} while(j < CALIBRATION_MINPRESS_PERIOD/CALIBRATION_POLL_PERIOD);
points[i].x = px / j;
points[i].y = py / j;
@@ -689,23 +689,13 @@ void _gmousePostInitDriver(GDriver *g) {
#if !GINPUT_TOUCH_NOCALIBRATE && !GINPUT_TOUCH_STARTRAW
if ((gmvmt(m)->d.flags & GMOUSE_VFLG_CALIBRATE)) {
- GMouseCalibration *pc;
-
#if GINPUT_TOUCH_USER_CALIBRATION_LOAD
- if ((pc = (GMouseCalibration *)LoadMouseCalibration(gdriverGetDriverInstanceNumber((GDriver *)m), sizeof(GMouseCalibration)))) {
- memcpy(&m->caldata, pc, sizeof(GMouseCalibration));
- #if GINPUT_TOUCH_USER_CALIBRATION_FREE
- gfxFree(pc);
- #endif
+ if (LoadMouseCalibration(gdriverGetDriverInstanceNumber((GDriver *)m), &m->caldata, sizeof(GMouseCalibration))))
m->flags |= GMOUSE_FLG_CALIBRATE;
- } else
+ else
#endif
- if (gmvmt(m)->calload && (pc = (GMouseCalibration *)gmvmt(m)->calload(m, sizeof(GMouseCalibration)))) {
- memcpy(&m->caldata, pc, sizeof(GMouseCalibration));
- if ((gmvmt(m)->d.flags & GMOUSE_VFLG_CAL_LOADFREE))
- gfxFree(pc);
+ if (gmvmt(m)->calload && gmvmt(m)->calload(m, &m->caldata, sizeof(GMouseCalibration))))
m->flags |= GMOUSE_FLG_CALIBRATE;
- }
#if !GINPUT_TOUCH_NOCALIBRATE_GUI
else
while (CalibrateMouse(m));
diff --git a/src/ginput/ginput_mouse.h b/src/ginput/ginput_mouse.h
index 29405e50..e59b2dae 100644
--- a/src/ginput/ginput_mouse.h
+++ b/src/ginput/ginput_mouse.h
@@ -156,15 +156,14 @@ extern "C" {
* @return A pointer to the data or NULL on failure
*
* @param[in] instance The mouse input instance number
+ * @param[in] data Where the data should be placed
* @param[in] sz The size in bytes of the data to retrieve.
*
* @note This routine is provided by the user application. It is only
* called if GINPUT_TOUCH_USER_CALIBRATION_LOAD has been set to TRUE in the
* users gfxconf.h file.
- * @note If GINPUT_TOUCH_USER_CALIBRATION_FREE has been set to TRUE in the users
- * gfxconf.h file then the buffer returned will be free'd using gfxFree().
*/
- void *LoadMouseCalibration(unsigned instance, size_t sz);
+ bool_t LoadMouseCalibration(unsigned instance, void *data, size_t sz);
/**
* @brief Save a set of mouse calibration data
diff --git a/src/ginput/sys_options.h b/src/ginput/sys_options.h
index 4bc37715..6de8ea83 100644
--- a/src/ginput/sys_options.h
+++ b/src/ginput/sys_options.h
@@ -134,12 +134,12 @@
#endif
/**
* @brief Milliseconds to generate a CXTCLICK on a touch device.
- * @details Defaults to 700 millseconds
+ * @details Defaults to 500 millseconds
* @note If you hold the touch down for longer than this a CXTCLICK is generated
* but only on a touch device.
*/
#ifndef GINPUT_TOUCH_CXTCLICK_TIME
- #define GINPUT_TOUCH_CXTCLICK_TIME 700
+ #define GINPUT_TOUCH_CXTCLICK_TIME 500
#endif
/**
* @brief There is a user supplied routine to load mouse calibration data
@@ -150,14 +150,6 @@
#define GINPUT_TOUCH_USER_CALIBRATION_LOAD FALSE
#endif
/**
- * @brief The buffer returned by the users @p LoadMouseCalibration() routine must be gfxFree()'d
- * by the mouse code.
- * @details Defaults to FALSE
- */
- #ifndef GINPUT_TOUCH_USER_CALIBRATION_FREE
- #define GINPUT_TOUCH_USER_CALIBRATION_FREE FALSE
- #endif
- /**
* @brief There is a user supplied routine to save mouse calibration data
* @details Defaults to FALSE
* @note If TRUE the user must supply the @p SaveMouseCalibration() routine.