[PATCH joystick 2/2] Deal with opaque input option types.

walter harms wharms at bfs.de
Mon Oct 31 06:24:45 PDT 2011



Am 31.10.2011 07:18, schrieb Jeremy Huddleston:
> You need to declare InputOption tmp; in input_option_free_list.
> 
> With that, both are Reviewed-by: Jeremy Huddleston <jeremyhu at apple.com>
> 
> On Oct 30, 2011, at 21:41, 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>
>> ---
>> src/jstk_key.c |   50 +++++++++++++++++++++++++++++++++++---------------
>> 1 files changed, 35 insertions(+), 15 deletions(-)
>>
>> diff --git a/src/jstk_key.c b/src/jstk_key.c
>> index e842941..896bffc 100644
>> --- a/src/jstk_key.c
>> +++ b/src/jstk_key.c
>> @@ -247,13 +247,43 @@ 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, const char *key, const char *value)
>> +{
>> +    InputOption tmp;

maybe you mean:
 InputOption *tmp;

re,
 wh
>> +    tmp = calloc(1, sizeof(InputOption));

btw;
personly i prefer tmp = calloc(1, sizeof(*tmp)); that make you indepent of
the actual type.

>> +    tmp->key = xf86OptionName(opts);
>> +    tmp->value = xf86OptionValue(opts);
>> +    tmp->next = list;
>> +    return tmp;
>> +}
>> +
>> +static void
>> +input_option_free_list(InputOption **list)
>> +{
>> +    InputOption *iopts = *list;
>> +    while(iopts)
>> +    {
>> +        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 +296,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 +307,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


More information about the xorg-devel mailing list