[PATCH joystick v2 2/2] Deal with opaque input option types.
Jeremy Huddleston
jeremyhu at apple.com
Mon Oct 31 17:18:30 PDT 2011
Reviewed-by: Jeremy Huddleston <jeremyhu at apple.com>
On Oct 31, 2011, at 3:41 PM, Peter Hutterer wrote:
> ABI 14 made the InputOption type opaque, move the existing code to ifdefs
> and use the new function calls otherwise.
>
> Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
> ---
> Changes to v1:
> - compile tested against the right headers
> - fixed wrong input_option_new name
> - removed const from input_option_new to avoid compiler warning
> - add missing declaration of *tmp, add missing * to declaration of tmp.
> - sizeof(InputOption) changed to sizeof(*tmp)
>
> src/jstk_key.c | 53 ++++++++++++++++++++++++++++++++++++++---------------
> 1 files changed, 38 insertions(+), 15 deletions(-)
>
> diff --git a/src/jstk_key.c b/src/jstk_key.c
> index e842941..ce8eff9 100644
> --- a/src/jstk_key.c
> +++ b/src/jstk_key.c
> @@ -247,13 +247,46 @@ int jstkKeyboardPreInit(InputDriverPtr drv, InputInfoPtr pInfo, int flags)
> return Success;
> }
>
> +#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) < 14
> +static InputOption*
> +input_option_new(InputOption* list, char *key, char *value)
> +{
> + InputOption *tmp;
> +
> + tmp = calloc(1, sizeof(*tmp));
> + tmp->key = key;
> + tmp->value = value;
> + tmp->next = list;
> +
> + return tmp;
> +}
> +
> +static void
> +input_option_free_list(InputOption **list)
> +{
> + InputOption *iopts = *list;
> +
> + while(iopts)
> + {
> + InputOption *tmp = iopts->next;
> + free(iopts->key);
> + free(iopts->value);
> + free(iopts);
> + iopts = tmp;
> + }
> +
> + *list = NULL;
> +}
> +
> +#endif
> +
> InputInfoPtr
> jstkKeyboardHotplug(InputInfoPtr pInfo, int flags)
> {
> int rc;
> char name[512] = {0};
> InputAttributes *attrs = NULL;
> - InputOption *iopts = NULL, *tmp;
> + InputOption *iopts = NULL;
> DeviceIntPtr dev;
> XF86OptionPtr opts;
>
> @@ -266,12 +299,9 @@ jstkKeyboardHotplug(InputInfoPtr pInfo, int flags)
>
> while(opts)
> {
> - tmp = calloc(1, sizeof(InputOption));
> -
> - tmp->key = xf86OptionName(opts);
> - tmp->value = xf86OptionValue(opts);
> - tmp->next = iopts;
> - iopts = tmp;
> + iopts = input_option_new(iopts,
> + xf86OptionName(opts),
> + xf86OptionValue(opts));
> opts = xf86NextOption(opts);
> }
>
> @@ -280,14 +310,7 @@ jstkKeyboardHotplug(InputInfoPtr pInfo, int flags)
>
> rc = NewInputDeviceRequest(iopts, attrs, &dev);
>
> - while(iopts)
> - {
> - tmp = iopts->next;
> - free(iopts->key);
> - free(iopts->value);
> - free(iopts);
> - iopts = tmp;
> - }
> + input_option_free_list(&iopts);
>
> FreeInputAttributes(attrs);
>
> --
> 1.7.7
>
> _______________________________________________
> xorg-devel at lists.x.org: X.Org development
> Archives: http://lists.x.org/archives/xorg-devel
> Info: http://lists.x.org/mailman/listinfo/xorg-devel
>
More information about the xorg-devel
mailing list