summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Hutterer <peter.hutterer@who-t.net>2011-01-06 12:58:00 +1000
committerPeter Hutterer <peter.hutterer@who-t.net>2011-01-07 08:28:27 +1000
commitfc6cbee772bafabf7ddd7a75043bd55bb78ad09e (patch)
tree5520d006a16d8481b6ac7ab986dbc67f8f2e5d7c
parent4fbadc8b17237f3c7f8c0bf56003d1139c86655e (diff)
input: add valuator_mask_free() to free a valuator mask.
Expecting the caller to free the mask requires us to keep it in a single memory block (which may be an issue lateron), aside from leaving the API asymetrical. Provide valuator_mask_free() to free the memory and reset the mask pointer to NULL. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Reviewed-by: Fernando Carrijo <fcarrijo@freedesktop.org> Reviewed-by: Chase Douglas <chase.douglas@canonical.com>
-rw-r--r--dix/inpututils.c8
-rw-r--r--include/input.h1
-rw-r--r--test/input.c3
3 files changed, 11 insertions, 1 deletions
diff --git a/dix/inpututils.c b/dix/inpututils.c
index 2877804d6..ef3142c84 100644
--- a/dix/inpututils.c
+++ b/dix/inpututils.c
@@ -433,6 +433,14 @@ valuator_mask_new(int num_valuators)
return mask;
}
+void
+valuator_mask_free(ValuatorMask **mask)
+{
+ free(*mask);
+ *mask = NULL;
+}
+
+
/**
* Sets a range of valuators between first_valuator and num_valuators with
* the data in the valuators array. All other values are set to 0.
diff --git a/include/input.h b/include/input.h
index 9f3227fb0..412150c0f 100644
--- a/include/input.h
+++ b/include/input.h
@@ -567,6 +567,7 @@ extern _X_HIDDEN void valuator_set_mode(DeviceIntPtr dev, int axis, int mode);
extern Bool EnableCursor;
extern _X_EXPORT ValuatorMask *valuator_mask_new(int num_valuators);
+extern _X_EXPORT void valuator_mask_free(ValuatorMask **mask);
extern _X_EXPORT void valuator_mask_set_range(ValuatorMask *mask,
int first_valuator, int num_valuators,
const int* valuators);
diff --git a/test/input.c b/test/input.c
index 1fe228c32..39d0badf9 100644
--- a/test/input.c
+++ b/test/input.c
@@ -1017,7 +1017,8 @@ static void dix_input_valuator_masks(void)
g_assert(valuator_mask_get(mask, i) == valuator_mask_get(copy, i));
}
- free(mask);
+ valuator_mask_free(&mask);
+ g_assert(mask == NULL);
}
static void dix_valuator_mode(void)