[PATCH v2] dix: move config_init into the DDX.

Peter Hutterer peter.hutterer at who-t.net
Wed Feb 10 21:10:31 PST 2010


The only DDX currently using hotplugging is the xfree86 one and it looks
like it'll stay that way for a bit. Move the initialization to the DDX,
since Xephyr, Xnest, and friends don't need HAL or udev notifications.

Add CloseInput (counterpart to InitInput) to be able to clean up the config
initialization from the DDX as well.

Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
---
 dix/main.c                   |    3 +--
 hw/dmx/dmxinput.c            |    4 ++++
 hw/kdrive/ephyr/ephyrinit.c  |    5 +++++
 hw/kdrive/fake/fakeinit.c    |    5 +++++
 hw/kdrive/fbdev/fbinit.c     |    5 +++++
 hw/vfb/InitInput.c           |    6 ++++++
 hw/xfree86/common/xf86Init.c |   10 ++++++++++
 hw/xnest/Init.c              |    5 +++++
 hw/xwin/InitInput.c          |    6 ++++++
 include/input.h              |    1 +
 10 files changed, 48 insertions(+), 2 deletions(-)

diff --git a/dix/main.c b/dix/main.c
index da910fe..f023536 100644
--- a/dix/main.c
+++ b/dix/main.c
@@ -257,7 +257,6 @@ int main(int argc, char *argv[], char *envp[])
         InitCoreDevices();
 	InitInput(argc, argv);
 	InitAndStartDevices();
-	config_init();
 
 	dixSaveScreens(serverClient, SCREEN_SAVER_FORCER, ScreenSaverReset);
 
@@ -305,7 +304,7 @@ int main(int argc, char *argv[], char *envp[])
 	FreeAllResources();
 #endif
 
-        config_fini();
+        CloseInput();
 
         memset(WindowTable, 0, sizeof(WindowTable));
 	CloseDownDevices();
diff --git a/hw/dmx/dmxinput.c b/hw/dmx/dmxinput.c
index c099349..568bb88 100644
--- a/hw/dmx/dmxinput.c
+++ b/hw/dmx/dmxinput.c
@@ -75,6 +75,10 @@ void InitInput(int argc, char **argv)
     mieqInit();
 }
 
+void CloseInput(void)
+{
+}
+
 /** Called from dix/dispatch.c in Dispatch() whenever input events
  * require processing.  All the work is done in the lower level
  * routines. */
diff --git a/hw/kdrive/ephyr/ephyrinit.c b/hw/kdrive/ephyr/ephyrinit.c
index c7bfb5b..27cab3b 100644
--- a/hw/kdrive/ephyr/ephyrinit.c
+++ b/hw/kdrive/ephyr/ephyrinit.c
@@ -94,6 +94,11 @@ InitInput (int argc, char **argv)
   KdInitInput();
 }
 
+void
+CloseInput (void)
+{
+}
+
 #ifdef DDXBEFORERESET
 void
 ddxBeforeReset (void)
diff --git a/hw/kdrive/fake/fakeinit.c b/hw/kdrive/fake/fakeinit.c
index 87c221d..ba61959 100644
--- a/hw/kdrive/fake/fakeinit.c
+++ b/hw/kdrive/fake/fakeinit.c
@@ -58,6 +58,11 @@ InitInput (int argc, char **argv)
     KdInitInput ();
 }
 
+void
+CloseInput (void)
+{
+}
+
 #ifdef DDXBEFORERESET
 void
 ddxBeforeReset (void)
diff --git a/hw/kdrive/fbdev/fbinit.c b/hw/kdrive/fbdev/fbinit.c
index 93646f6..51e7e00 100644
--- a/hw/kdrive/fbdev/fbinit.c
+++ b/hw/kdrive/fbdev/fbinit.c
@@ -45,6 +45,11 @@ InitInput (int argc, char **argv)
 }
 
 void
+CloseInput (void)
+{
+}
+
+void
 ddxUseMsg (void)
 {
   KdUseMsg();
diff --git a/hw/vfb/InitInput.c b/hw/vfb/InitInput.c
index 7f2d56f..03ec3bf 100644
--- a/hw/vfb/InitInput.c
+++ b/hw/vfb/InitInput.c
@@ -142,3 +142,9 @@ InitInput(int argc, char *argv[])
     RegisterKeyboardDevice(k);
     (void)mieqInit();
 }
+
+void
+CloseInput (void)
+{
+}
+
diff --git a/hw/xfree86/common/xf86Init.c b/hw/xfree86/common/xf86Init.c
index 6707448..2c206ff 100644
--- a/hw/xfree86/common/xf86Init.c
+++ b/hw/xfree86/common/xf86Init.c
@@ -90,6 +90,8 @@
 #include "Pci.h"
 #include "xf86Bus.h"
 
+#include <hotplug.h>
+
 /* forward declarations */
 static Bool probe_devices_from_device_sections(DriverPtr drvp);
 static Bool add_matching_devices_to_configure_list(DriverPtr drvp);
@@ -1138,6 +1140,14 @@ InitInput(int argc, char **argv)
         if (xf86NewInputDevice(*pDev, &dev, TRUE) == BadAlloc)
             break;
     }
+
+    config_init();
+}
+
+void
+CloseInput (void)
+{
+    config_fini();
 }
 
 /*
diff --git a/hw/xnest/Init.c b/hw/xnest/Init.c
index 0765f73..8a90cc6 100644
--- a/hw/xnest/Init.c
+++ b/hw/xnest/Init.c
@@ -109,6 +109,11 @@ InitInput(int argc, char *argv[])
   RegisterBlockAndWakeupHandlers(xnestBlockHandler, xnestWakeupHandler, NULL);
 }
 
+void
+CloseInput(void)
+{
+}
+
 /*
  * DDX - specific abort routine.  Called by AbortServer().
  */
diff --git a/hw/xwin/InitInput.c b/hw/xwin/InitInput.c
index 1e9bcad..31a8696 100644
--- a/hw/xwin/InitInput.c
+++ b/hw/xwin/InitInput.c
@@ -171,3 +171,9 @@ InitInput (int argc, char *argv[])
   winDebug ("InitInput - returning\n");
 #endif
 }
+
+void
+CloseInput (void)
+{
+}
+
diff --git a/include/input.h b/include/input.h
index 7a6242d..0fee249 100644
--- a/include/input.h
+++ b/include/input.h
@@ -419,6 +419,7 @@ extern _X_EXPORT void ProcessInputEvents(void);
 extern _X_EXPORT void InitInput(
     int  /*argc*/,
     char ** /*argv*/);
+extern _X_EXPORT void CloseInput(void);
 
 extern _X_EXPORT int GetMaximumEventsNum(void);
 
-- 
1.6.6



More information about the xorg-devel mailing list