diff options
Diffstat (limited to 'xorg-server/hw/xwin/InitOutput.c')
-rw-r--r-- | xorg-server/hw/xwin/InitOutput.c | 95 |
1 files changed, 50 insertions, 45 deletions
diff --git a/xorg-server/hw/xwin/InitOutput.c b/xorg-server/hw/xwin/InitOutput.c index 7faed0170..8bdb18622 100644 --- a/xorg-server/hw/xwin/InitOutput.c +++ b/xorg-server/hw/xwin/InitOutput.c @@ -35,12 +35,10 @@ from The Open Group. #include "winmsg.h" #include "winconfig.h" #include "winprefs.h" -#ifdef XWIN_CLIPBOARD -#include "X11/Xlocale.h" -#endif #ifdef DPMSExtension #include "dpmsproc.h" #endif +#include <locale.h> #ifdef __CYGWIN__ #include <mntent.h> #endif @@ -48,13 +46,14 @@ from The Open Group. #include "xkbsrv.h" #endif #ifdef RELOCATE_PROJECTROOT +#undef Status #include <shlobj.h> -typedef HRESULT (*SHGETFOLDERPATHPROC)( +typedef HRESULT (__stdcall * SHGETFOLDERPATHPROC)( HWND hwndOwner, int nFolder, HANDLE hToken, DWORD dwFlags, - LPTSTR pszPath + LPSTR pszPath ); #endif @@ -142,6 +141,7 @@ winClipboardShutdown (void) /* Synchronously destroy the clipboard window */ if (g_hwndClipboard != NULL) { + g_fClipboardStarted=FALSE; /* This is to avoid dead-locls caused by the clipboard thread still doing some stuff */ SendMessage (g_hwndClipboard, WM_DESTROY, 0, 0); /* NOTE: g_hwndClipboard is set to NULL in winclipboardthread.c */ } @@ -151,25 +151,11 @@ winClipboardShutdown (void) /* Wait for the clipboard thread to exit */ pthread_join (g_ptClipboardProc, NULL); - g_fClipboardLaunched = FALSE; - g_fClipboardStarted = FALSE; - winDebug ("winClipboardShutdown - Clipboard thread has exited.\n"); } } #endif -void -ddxPushProviders(void) -{ -#ifdef XWIN_GLX_WINDOWS - if (g_fNativeGl) - { - /* install the native GL provider */ - glxWinPushNativeProvider(); - } -#endif -} #if defined(DDXBEFORERESET) /* @@ -195,9 +181,7 @@ ddxGiveUp (void) { int i; -#if CYGDEBUG winDebug ("ddxGiveUp\n"); -#endif /* Perform per-screen deinitialization */ for (i = 0; i < g_iNumScreens; ++i) @@ -260,9 +244,7 @@ ddxGiveUp (void) void AbortDDX (void) { -#if CYGDEBUG winDebug ("AbortDDX\n"); -#endif ddxGiveUp (); } @@ -347,8 +329,10 @@ winCheckMount(void) return; } - if (!binary) - winMsg(X_WARNING, "/tmp mounted in textmode\n"); +#ifdef WINDBG + if (!binary) + winDebug("/tmp mounted in textmode\n"); +#endif } #else static void @@ -400,7 +384,17 @@ winFixupPaths (void) #ifdef READ_FONTDIRS { /* Open fontpath configuration file */ +#if defined WIN32 && defined __MINGW32__ + static Bool once = False; + char buffer[MAX_PATH]; + snprintf(buffer, sizeof(buffer), "%s\\font-dirs", basedir); + buffer[sizeof(buffer)-1] = 0; + FILE *fontdirs = fopen(buffer, "rt"); + if (once) fontdirs = NULL; + else once = True; +#else FILE *fontdirs = fopen(ETCX11DIR "/font-dirs", "rt"); +#endif if (fontdirs != NULL) { char buffer[256]; @@ -573,7 +567,7 @@ winFixupPaths (void) } #endif /* RELOCATE_PROJECTROOT */ if (changed_fontpath) - winMsg (font_from, "FontPath set to \"%s\"\n", defaultFontPath); + winDebug ("FontPath set to \"%s\"\n", defaultFontPath); #ifdef RELOCATE_PROJECTROOT if (getenv("XKEYSYMDB") == NULL) @@ -600,6 +594,14 @@ winFixupPaths (void) buffer[sizeof(buffer)-1] = 0; putenv(buffer); } + if (getenv("XHOSTPREFIX") == NULL) + { + char buffer[MAX_PATH]; + snprintf(buffer, sizeof(buffer), "XHOSTPREFIX=%s\\X", + basedir); + buffer[sizeof(buffer)-1] = 0; + putenv(buffer); + } if (getenv("HOME") == NULL) { HMODULE shfolder; @@ -626,7 +628,7 @@ winFixupPaths (void) putenv(buffer); } else { - winMsg (X_ERROR, "Can not determine HOME directory\n"); + ErrorF ("Can not determine HOME directory\n"); } if (shfolder != NULL) FreeLibrary(shfolder); @@ -637,16 +639,17 @@ winFixupPaths (void) if (size && size < sizeof(buffer)) { snprintf(buffer + size, sizeof(buffer) - size, - "XWin.%s.log", display); + "VCXSrv.%s.log", display); buffer[sizeof(buffer)-1] = 0; g_pszLogFile = buffer; - winMsg (X_DEFAULT, "Logfile set to \"%s\"\n", g_pszLogFile); + GetLongPathName(buffer, buffer, MAX_PATH); + winDebug ("Logfile set to \"%s\"\n", g_pszLogFile); } } { static char xkbbasedir[MAX_PATH]; - snprintf(xkbbasedir, sizeof(xkbbasedir), "%s\\xkb", basedir); + snprintf(xkbbasedir, sizeof(xkbbasedir), "%s\\xkbdata", basedir); if (sizeof(xkbbasedir) > 0) xkbbasedir[sizeof(xkbbasedir)-1] = 0; XkbBaseDirectory = xkbbasedir; @@ -769,7 +772,7 @@ winUseMsg (void) ErrorF ("-ignoreinput\n" "\tIgnore keyboard and mouse input.\n"); -#ifdef XWIN_MULTIWINDOWEXTWM +#ifdef XWIN_MULTIWINDOWINTWM ErrorF ("-internalwm\n" "\tRun the internal window manager.\n"); #endif @@ -861,10 +864,8 @@ winUseMsg (void) ErrorF ("-[no]unixkill\n" "\tCtrl+Alt+Backspace exits the X Server.\n"); -#ifdef XWIN_GLX_WINDOWS ErrorF ("-[no]wgl\n" "\tEnable the GLX extension to use the native Windows WGL interface for accelerated OpenGL\n"); -#endif ErrorF ("-[no]winkill\n" "\tAlt+F4 exits the X Server.\n"); @@ -926,9 +927,7 @@ InitOutput (ScreenInfo *screenInfo, int argc, char *argv[]) /* Log the command line */ winLogCommandLine (argc, argv); -#if CYGDEBUG winDebug ("InitOutput\n"); -#endif /* Validate command-line arguments */ if (serverGeneration == 1 && !winValidateArgs ()) @@ -949,11 +948,8 @@ InitOutput (ScreenInfo *screenInfo, int argc, char *argv[]) #ifdef XWIN_XF86CONFIG /* Try to read the xorg.conf-style configuration file */ if (!winReadConfigfile ()) - winErrorFVerb (1, "InitOutput - Error reading config file\n"); + ErrorF ("InitOutput - Error reading config file\n"); #else - winMsg(X_INFO, "xorg.conf is not supported\n"); - winMsg(X_INFO, "See http://x.cygwin.com/docs/faq/cygwin-x-faq.html " - "for more information\n"); winConfigFiles (); #endif @@ -987,7 +983,7 @@ InitOutput (ScreenInfo *screenInfo, int argc, char *argv[]) "_TrackMouseEvent"); if (g_fpTrackMouseEvent == NULL) { - winErrorFVerb (1, "InitOutput - Could not get pointer to function\n" + ErrorF ("InitOutput - Could not get pointer to function\n" "\t_TrackMouseEvent in comctl32.dll. Try installing\n" "\tInternet Explorer 3.0 or greater if you have not\n" "\talready.\n"); @@ -1026,13 +1022,22 @@ InitOutput (ScreenInfo *screenInfo, int argc, char *argv[]) * setlocale applies to all threads in the current process. * Apply locale specified in LANG environment variable. */ - setlocale (LC_ALL, ""); + if (!setlocale (LC_ALL, "")) + { + ErrorF ("setlocale failed.\n"); + } + + /* See if X supports the current locale */ + if (XSupportsLocale () == FALSE) + { + ErrorF ("Warning: Locale not supported by X, falling back to 'C' locale.\n"); + setlocale(LC_ALL, "C"); + } + } #endif -#if CYGDEBUG || YES winDebug ("InitOutput - Returning.\n"); -#endif } @@ -1055,7 +1060,7 @@ winCheckDisplayNumber (void) /* Check display range */ nDisp = atoi (display); - if (nDisp < 0 || nDisp > 65535) + if (nDisp < 0 || nDisp > 59535) { ErrorF ("winCheckDisplayNumber - Bad display number: %d\n", nDisp); return FALSE; @@ -1102,7 +1107,7 @@ winCheckDisplayNumber (void) if (GetLastError () == ERROR_ALREADY_EXISTS) { ErrorF ("winCheckDisplayNumber - " - PROJECT_NAME " is already running on display %d\n", + "VCXsrv, Xming or Cygwin/X is already running on display %d\n", nDisp); return FALSE; } |