diff options
Diffstat (limited to 'xorg-server/hw/xfree86/common/xf86Init.c')
-rw-r--r-- | xorg-server/hw/xfree86/common/xf86Init.c | 32 |
1 files changed, 21 insertions, 11 deletions
diff --git a/xorg-server/hw/xfree86/common/xf86Init.c b/xorg-server/hw/xfree86/common/xf86Init.c index c9baff3ef..2d682aaa9 100644 --- a/xorg-server/hw/xfree86/common/xf86Init.c +++ b/xorg-server/hw/xfree86/common/xf86Init.c @@ -97,6 +97,7 @@ static Bool add_matching_devices_to_configure_list(DriverPtr drvp); #ifdef XF86PM void (*xf86OSPMClose)(void) = NULL; #endif +static Bool xorgHWOpenConsole = FALSE; /* Common pixmap formats */ @@ -601,8 +602,6 @@ InitOutput(ScreenInfo *pScreenInfo, int argc, char **argv) if (xf86DoShowOptions) DoShowOptions(); - xf86OpenConsole(); - /* Do a general bus probe. This will be a PCI probe for x86 platforms */ xf86BusProbe(); @@ -676,20 +675,29 @@ InitOutput(ScreenInfo *pScreenInfo, int argc, char **argv) */ for (i = 0; i < xf86NumDrivers; i++) { - xorgHWFlags flags; - if (xf86DriverList[i]->Identify != NULL) xf86DriverList[i]->Identify(0); - if (!xorgHWAccess - && (!xf86DriverList[i]->driverFunc + if (!xorgHWAccess || !xorgHWOpenConsole) { + xorgHWFlags flags; + if(!xf86DriverList[i]->driverFunc || !xf86DriverList[i]->driverFunc(NULL, GET_REQUIRED_HW_INTERFACES, - &flags) - || NEED_IO_ENABLED(flags))) - xorgHWAccess = TRUE; + &flags)) + flags = HW_IO; + + if(NEED_IO_ENABLED(flags)) + xorgHWAccess = TRUE; + if(!(flags & HW_SKIP_CONSOLE)) + xorgHWOpenConsole = TRUE; + } } + if (xorgHWOpenConsole) + xf86OpenConsole(); + else + xf86Info.dontVTSwitch = TRUE; + /* Enable full I/O access */ if (xorgHWAccess) xorgHWAccess = xf86EnableIO(); @@ -966,7 +974,8 @@ InitOutput(ScreenInfo *pScreenInfo, int argc, char **argv) /* * serverGeneration != 1; some OSs have to do things here, too. */ - xf86OpenConsole(); + if (xorgHWOpenConsole) + xf86OpenConsole(); #ifdef XF86PM /* @@ -1203,7 +1212,8 @@ ddxGiveUp(void) DGAShutdown(); #endif - xf86CloseConsole(); + if (xorgHWOpenConsole) + xf86CloseConsole(); xf86CloseLog(); |