xfree86: use NewInputDeviceRequest for xorg.conf devices too
Only use one init path for input devices - through NIDR. This requires that inp_driver and inp_identifier from the XF86ConfInputRec are copied over into the options for NIDR to see them. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Reviewed-by: Daniel Stone <daniel@fooishbar.org>
This commit is contained in:
parent
1ecc427a39
commit
e4cd24e717
|
@ -1196,6 +1196,10 @@ checkCoreInputDevices(serverLayoutPtr servlayoutp, Bool implicitLayout)
|
||||||
if (foundPointer) {
|
if (foundPointer) {
|
||||||
Pointer->options = xf86AddNewOption(Pointer->options,
|
Pointer->options = xf86AddNewOption(Pointer->options,
|
||||||
"CorePointer", "on");
|
"CorePointer", "on");
|
||||||
|
Pointer->options = xf86AddNewOption(Pointer->options,
|
||||||
|
"driver", confInput->inp_driver);
|
||||||
|
Pointer->options = xf86AddNewOption(Pointer->options,
|
||||||
|
"identifier", confInput->inp_identifier);
|
||||||
servlayoutp->inputs = addDevice(servlayoutp->inputs, Pointer);
|
servlayoutp->inputs = addDevice(servlayoutp->inputs, Pointer);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1286,6 +1290,10 @@ checkCoreInputDevices(serverLayoutPtr servlayoutp, Bool implicitLayout)
|
||||||
if (foundKeyboard) {
|
if (foundKeyboard) {
|
||||||
Keyboard->options = xf86AddNewOption(Keyboard->options,
|
Keyboard->options = xf86AddNewOption(Keyboard->options,
|
||||||
"CoreKeyboard", "on");
|
"CoreKeyboard", "on");
|
||||||
|
Keyboard->options = xf86AddNewOption(Keyboard->options,
|
||||||
|
"driver", confInput->inp_driver);
|
||||||
|
Keyboard->options = xf86AddNewOption(Keyboard->options,
|
||||||
|
"identifier", confInput->inp_identifier);
|
||||||
servlayoutp->inputs = addDevice(servlayoutp->inputs, Keyboard);
|
servlayoutp->inputs = addDevice(servlayoutp->inputs, Keyboard);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -811,21 +811,6 @@ InitOutput(ScreenInfo *pScreenInfo, int argc, char **argv)
|
||||||
NULL);
|
NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
static InputInfoPtr
|
|
||||||
duplicateDevice(InputInfoPtr pInfo)
|
|
||||||
{
|
|
||||||
InputInfoPtr dup = calloc(1, sizeof(InputInfoRec));
|
|
||||||
if (dup) {
|
|
||||||
dup->name = strdup(pInfo->name);
|
|
||||||
dup->driver = strdup(pInfo->driver);
|
|
||||||
dup->options = xf86OptionListDuplicate(pInfo->options);
|
|
||||||
/* type_name is a const string */
|
|
||||||
dup->type_name = pInfo->type_name;
|
|
||||||
dup->fd = -1;
|
|
||||||
}
|
|
||||||
return dup;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Initialize all supported input devices present and referenced in the
|
* Initialize all supported input devices present and referenced in the
|
||||||
* xorg.conf.
|
* xorg.conf.
|
||||||
|
@ -842,20 +827,8 @@ InitInput(int argc, char **argv)
|
||||||
|
|
||||||
/* Initialize all configured input devices */
|
/* Initialize all configured input devices */
|
||||||
for (pInfo = xf86ConfigLayout.inputs; pInfo && *pInfo; pInfo++) {
|
for (pInfo = xf86ConfigLayout.inputs; pInfo && *pInfo; pInfo++) {
|
||||||
InputInfoPtr dup;
|
|
||||||
/* Replace obsolete keyboard driver with kbd */
|
|
||||||
if (!xf86NameCmp((*pInfo)->driver, "keyboard")) {
|
|
||||||
strcpy((*pInfo)->driver, "kbd");
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Data passed into xf86NewInputDevice will be freed on shutdown.
|
|
||||||
* Duplicate from xf86ConfigLayout.inputs, otherwise we don't have any
|
|
||||||
* xorg.conf input devices in the second generation
|
|
||||||
*/
|
|
||||||
dup = duplicateDevice(*pInfo);
|
|
||||||
|
|
||||||
/* If one fails, the others will too */
|
/* If one fails, the others will too */
|
||||||
if (xf86NewInputDevice(dup, &dev, TRUE) == BadAlloc)
|
if (NewInputDeviceRequest((*pInfo)->options, NULL, &dev) == BadAlloc)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue