Revert "dix: Enable core devices in InitCoreDevices already."

I merged the wrong patch. See correct patch at:
http://lists.freedesktop.org/archives/xorg/2008-November/040540.html

Not activating the device before attempting to enable it would leave the
sprite unset, crashing the server when enabling the real devices.

This reverts commit e078901a4e.

Signed-off-by: Peter Hutterer <peter.hutterer@redhat.com>
This commit is contained in:
Peter Hutterer 2008-11-26 10:42:52 +10:00
parent 416685c295
commit 2b45602e82
3 changed files with 24 additions and 10 deletions

View File

@ -595,6 +595,8 @@ CorePointerProc(DeviceIntPtr pDev, int what)
* Both devices are not tied to physical devices, but guarantee that there is * Both devices are not tied to physical devices, but guarantee that there is
* always a keyboard and a pointer present and keep the protocol semantics. * always a keyboard and a pointer present and keep the protocol semantics.
* *
* The devices are activated but not enabled.
*
* Note that the server MUST have two core devices at all times, even if there * Note that the server MUST have two core devices at all times, even if there
* is no physical device connected. * is no physical device connected.
*/ */
@ -605,12 +607,6 @@ InitCoreDevices(void)
&inputInfo.pointer, &inputInfo.pointer,
&inputInfo.keyboard) != Success) &inputInfo.keyboard) != Success)
FatalError("Failed to allocate core devices"); FatalError("Failed to allocate core devices");
if (inputInfo.pointer->inited && inputInfo.pointer->startup)
EnableDevice(inputInfo.pointer);
if (inputInfo.keyboard->inited && inputInfo.keyboard->startup)
EnableDevice(inputInfo.keyboard);
} }
/** /**
@ -625,7 +621,7 @@ InitCoreDevices(void)
* *
* @return Success or error code on failure. * @return Success or error code on failure.
*/ */
void int
InitAndStartDevices() InitAndStartDevices()
{ {
DeviceIntPtr dev, next; DeviceIntPtr dev, next;
@ -636,14 +632,31 @@ InitAndStartDevices()
ActivateDevice(dev); ActivateDevice(dev);
} }
if (!inputInfo.keyboard) { /* In theory, this cannot happen */
ErrorF("[dix] No core keyboard\n");
return BadImplementation;
}
if (!inputInfo.pointer) { /* In theory, this cannot happen */
ErrorF("[dix] No core pointer\n");
return BadImplementation;
}
/* Now enable all devices */
if (inputInfo.pointer->inited && inputInfo.pointer->startup)
EnableDevice(inputInfo.pointer);
if (inputInfo.keyboard->inited && inputInfo.keyboard->startup)
EnableDevice(inputInfo.keyboard);
/* enable real devices */ /* enable real devices */
for (dev = inputInfo.off_devices; dev; dev = next) for (dev = inputInfo.off_devices; dev; dev = next)
{ {
DebugF("(dix) enabling device %d\n", dev->id); DebugF("(dix) enabling device %d\n", dev->id);
next = dev->next; next = dev->next;
if (dev->inited && dev->startup) if (dev->inited && dev->startup)
EnableDevice(dev); (void)EnableDevice(dev);
} }
return Success;
} }
/** /**

View File

@ -361,7 +361,8 @@ int main(int argc, char *argv[], char *envp[])
InitCoreDevices(); InitCoreDevices();
InitInput(argc, argv); InitInput(argc, argv);
InitAndStartDevices(); if (InitAndStartDevices() != Success)
FatalError("failed to initialize core devices");
dixSaveScreens(serverClient, SCREEN_SAVER_FORCER, ScreenSaverReset); dixSaveScreens(serverClient, SCREEN_SAVER_FORCER, ScreenSaverReset);

View File

@ -233,7 +233,7 @@ extern Bool ActivateDevice(
extern Bool DisableDevice( extern Bool DisableDevice(
DeviceIntPtr /*device*/); DeviceIntPtr /*device*/);
extern void InitAndStartDevices(void); extern int InitAndStartDevices(void);
extern void CloseDownDevices(void); extern void CloseDownDevices(void);