diff options
author | Sascha Hlusiak <saschahlusiak@arcor.de> | 2011-11-13 17:10:09 +0100 |
---|---|---|
committer | Sascha Hlusiak <saschahlusiak@arcor.de> | 2011-11-13 17:10:09 +0100 |
commit | 9bbb5775be4e7c72b6d51c20be33f5ed3fb7301a (patch) | |
tree | bec71a9354525d6065e0bad0274e325c30d41156 | |
parent | b607c4ebeea4122694f02ba87f06e4cdb23114f1 (diff) | |
parent | 7ccf3a75292d71104c976bf6afb389cccaac1a7d (diff) |
Merge branch 'master' of ssh://git.freedesktop.org/git/xorg/driver/xf86-input-joystick
-rw-r--r-- | src/jstk_key.c | 65 |
1 files changed, 44 insertions, 21 deletions
diff --git a/src/jstk_key.c b/src/jstk_key.c index d699dcd..a71275a 100644 --- a/src/jstk_key.c +++ b/src/jstk_key.c @@ -247,32 +247,62 @@ 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 *options; - InputOption *iopts = NULL, *tmp; + InputOption *iopts = NULL; DeviceIntPtr dev; + XF86OptionPtr opts; /* duplicate option list, append to name */ - options = xf86OptionListDuplicate(pInfo->options); + opts = xf86OptionListDuplicate(pInfo->options); strcpy(name, pInfo->name); strcat(name, " (keys)"); - options = xf86ReplaceStrOption(options, "Name", name); - options = xf86ReplaceStrOption(options, "_source", "_driver/joystick"); + opts = xf86ReplaceStrOption(opts, "Name", name); + opts = xf86ReplaceStrOption(opts, "_source", "_driver/joystick"); - while(options) + while(opts) { - tmp = calloc(1, sizeof(InputOption)); - - tmp->key = xf86OptionName(options); - tmp->value = xf86OptionValue(options); - tmp->next = iopts; - iopts = tmp; - options = xf86NextOption(options); + iopts = input_option_new(iopts, + xf86OptionName(opts), + xf86OptionValue(opts)); + opts = xf86NextOption(opts); } /* duplicate attribute list */ @@ -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); |