void OsVendorInit (void) { /* Re-initialize global variables on server reset */ winInitializeGlobals (); winFixupPaths(); #ifdef DDXOSVERRORF if (!OsVendorVErrorFProc) OsVendorVErrorFProc = OsVendorVErrorF; #endif if (!g_fLogInited) { /* keep this order. If LogInit fails it calls Abort which then calls * ddxGiveUp where LogInit is called again and creates an infinite * recursion. If we set g_fLogInited to TRUE before the init we * avoid the second call */ g_fLogInited = TRUE; g_pszLogFile = LogInit (g_pszLogFile, NULL); } LogSetParameter (XLOG_FLUSH, 1); LogSetParameter (XLOG_VERBOSITY, g_iLogVerbose); LogSetParameter (XLOG_FILE_VERBOSITY, g_iLogVerbose); /* Log the version information */ if (serverGeneration == 1) winLogVersionInfo (); winCheckMount(); /* Add a default screen if no screens were specified */ if (g_iNumScreens == 0) { winDebug ("OsVendorInit - Creating default screen 0\n"); /* * We need to initialize the default screen 0 if no -screen * arguments were processed. * * Add a screen 0 using the defaults set by winInitializeDefaultScreens() * and any additional default screen parameters given */ winInitializeScreens(1); /* We have to flag this as an explicit screen, even though it isn't */ g_ScreenInfo[0].fExplicitScreen = TRUE; } }
int xf86SetVerbosity(int verb) { int save = xf86Verbose; xf86Verbose = verb; LogSetParameter(XLOG_VERBOSITY, verb); return save; }
int ddxProcessArgument(int argc, char **argv, int i) { static char *parent = NULL; EPHYR_DBG("mark argv[%d]='%s'", i, argv[i]); if (i == 1) { hostx_use_resname(basename(argv[0]), 0); } if (!strcmp(argv[i], "-parent")) { if (i + 1 < argc) { int j; /* If parent is specified and a screen argument follows, don't do * anything, let the -screen handling init the rest */ for (j = i; j < argc; j++) { if (!strcmp(argv[j], "-screen")) { parent = argv[i + 1]; return 2; } } processScreenArg("100x100", argv[i + 1]); return 2; } UseMsg(); exit(1); } else if (!strcmp(argv[i], "-screen")) { if ((i + 1) < argc) { processScreenArg(argv[i + 1], parent); parent = NULL; return 2; } UseMsg(); exit(1); } else if (!strcmp(argv[i], "-output")) { if (i + 1 < argc) { processOutputArg(argv[i + 1], NULL); return 2; } UseMsg(); exit(1); } else if (!strcmp(argv[i], "-sw-cursor")) { hostx_use_sw_cursor(); return 1; } else if (!strcmp(argv[i], "-host-cursor")) { /* Compatibility with the old command line argument, now the default. */ return 1; } else if (!strcmp(argv[i], "-fullscreen")) { hostx_use_fullscreen(); return 1; } else if (!strcmp(argv[i], "-grayscale")) { EphyrWantGrayScale = 1; return 1; } else if (!strcmp(argv[i], "-resizeable")) { EphyrWantResize = 1; return 1; } #ifdef GLAMOR else if (!strcmp (argv[i], "-glamor")) { ephyr_glamor = TRUE; ephyrFuncs.initAccel = ephyr_glamor_init; ephyrFuncs.enableAccel = ephyr_glamor_enable; ephyrFuncs.disableAccel = ephyr_glamor_disable; ephyrFuncs.finiAccel = ephyr_glamor_fini; return 1; } else if (!strcmp (argv[i], "-glamor_gles2")) { ephyr_glamor = TRUE; ephyr_glamor_gles2 = TRUE; ephyrFuncs.initAccel = ephyr_glamor_init; ephyrFuncs.enableAccel = ephyr_glamor_enable; ephyrFuncs.disableAccel = ephyr_glamor_disable; ephyrFuncs.finiAccel = ephyr_glamor_fini; return 1; } #endif else if (!strcmp(argv[i], "-fakexa")) { ephyrFuncs.initAccel = ephyrDrawInit; ephyrFuncs.enableAccel = ephyrDrawEnable; ephyrFuncs.disableAccel = ephyrDrawDisable; ephyrFuncs.finiAccel = ephyrDrawFini; return 1; } else if (!strcmp(argv[i], "-verbosity")) { if (i + 1 < argc && argv[i + 1][0] != '-') { int verbosity = atoi(argv[i + 1]); LogSetParameter(XLOG_VERBOSITY, verbosity); EPHYR_LOG("set verbosiry to %d\n", verbosity); return 2; } else { UseMsg(); exit(1); } } #ifdef GLXEXT else if (!strcmp(argv[i], "-nodri")) { ephyrNoDRI = TRUE; EPHYR_LOG("no direct rendering enabled\n"); return 1; } #endif else if (!strcmp(argv[i], "-noxv")) { ephyrNoXV = TRUE; EPHYR_LOG("no XVideo enabled\n"); return 1; } else if (!strcmp(argv[i], "-name")) { if (i + 1 < argc && argv[i + 1][0] != '-') { hostx_use_resname(argv[i + 1], 1); return 2; } else { UseMsg(); return 0; } } else if (!strcmp(argv[i], "-title")) { if (i + 1 < argc && argv[i + 1][0] != '-') { hostx_set_title(argv[i + 1]); return 2; } else { UseMsg(); return 0; } } else if (argv[i][0] == ':') { hostx_set_display_name(argv[i]); } /* Xnest compatibility */ else if (!strcmp(argv[i], "-display")) { hostx_set_display_name(argv[i + 1]); return 2; } else if (!strcmp(argv[i], "-sync") || !strcmp(argv[i], "-full") || !strcmp(argv[i], "-sss") || !strcmp(argv[i], "-install")) { return 1; } else if (!strcmp(argv[i], "-bw") || !strcmp(argv[i], "-class") || !strcmp(argv[i], "-geometry") || !strcmp(argv[i], "-scrns")) { return 2; } /* end Xnest compat */ return KdProcessArgument(argc, argv, i); }
void OsVendorInit(void) { /* Re-initialize global variables on server reset */ winInitializeGlobals(); winFixupPaths(); #ifdef DDXOSVERRORF if (!OsVendorVErrorFProc) OsVendorVErrorFProc = OsVendorVErrorF; #endif if (!g_fLogInited) { /* keep this order. If LogInit fails it calls Abort which then calls * ddxGiveUp where LogInit is called again and creates an infinite * recursion. If we set g_fLogInited to TRUE before the init we * avoid the second call */ g_fLogInited = TRUE; g_pszLogFile = LogInit(g_pszLogFile, NULL); } LogSetParameter(XLOG_FLUSH, 1); LogSetParameter(XLOG_VERBOSITY, g_iLogVerbose); LogSetParameter(XLOG_FILE_VERBOSITY, g_iLogVerbose); /* Log the version information */ if (serverGeneration == 1) winLogVersionInfo(); winCheckMount(); /* Add a default screen if no screens were specified */ if (g_iNumScreens == 0) { winDebug("OsVendorInit - Creating default screen 0\n"); /* * We need to initialize the default screen 0 if no -screen * arguments were processed. * * Add a screen 0 using the defaults set by winInitializeDefaultScreens() * and any additional default screen parameters given */ winInitializeScreens(1); /* We have to flag this as an explicit screen, even though it isn't */ g_ScreenInfo[0].fExplicitScreen = TRUE; } /* Work out what the default emulate3buttons setting should be, and apply it if nothing was explicitly specified */ { int mouseButtons = GetSystemMetrics(SM_CMOUSEBUTTONS); int j; for (j = 0; j < g_iNumScreens; j++) { if (g_ScreenInfo[j].iE3BTimeout == WIN_E3B_DEFAULT) { if (mouseButtons < 3) { static Bool reportOnce = TRUE; g_ScreenInfo[j].iE3BTimeout = WIN_DEFAULT_E3B_TIME; if (reportOnce) { reportOnce = FALSE; winMsg(X_PROBED, "Windows reports only %d mouse buttons, defaulting to -emulate3buttons\n", mouseButtons); } } else { g_ScreenInfo[j].iE3BTimeout = WIN_E3B_OFF; } } } } }
int ddxProcessArgument(int argc, char *argv[], int i) { static Bool firstTime = TRUE; if (firstTime) { /* Force -noreset as default until we properly handle resets */ dispatchExceptionAtReset = 0; vfbInitializeDefaultScreens(); vfbInitializePixmapDepths(); firstTime = FALSE; vncInitRFB(); } if (argv[i][0] == ':') displaySpecified = TRUE; if (strcmp (argv[i], "-screen") == 0) /* -screen n WxHxD */ { int screenNum; fail_unless_args(argc, i, 2); screenNum = atoi(argv[i+1]); if (screenNum < 0 || screenNum >= MAXSCREENS) { ErrorF("Invalid screen number %d\n", screenNum); UseMsg(); return 0; } if (3 != sscanf(argv[i+2], "%dx%dx%d", &vfbScreens[screenNum].fb.width, &vfbScreens[screenNum].fb.height, &vfbScreens[screenNum].fb.depth)) { ErrorF("Invalid screen configuration %s\n", argv[i+2]); UseMsg(); return 0; } if (screenNum >= vfbNumScreens) vfbNumScreens = screenNum + 1; lastScreen = screenNum; return 3; } if (strcmp (argv[i], "-pixdepths") == 0) /* -pixdepths list-of-depth */ { int depth, ret = 1; fail_unless_args(argc, i, 1); ++i; while ((i < argc) && (depth = atoi(argv[i++])) != 0) { if (depth < 0 || depth > 32) { ErrorF("Invalid pixmap depth %d\n", depth); UseMsg(); return 0; } vfbPixmapDepths[depth] = TRUE; ret++; } return ret; } if (strcmp (argv[i], "+render") == 0) /* +render */ { Render = TRUE; return 1; } if (strcmp (argv[i], "-render") == 0) /* -render */ { Render = FALSE; return 1; } if (strcmp (argv[i], "-blackpixel") == 0) /* -blackpixel n */ { Pixel pix; fail_unless_args(argc, i, 1); ++i; pix = atoi(argv[i]); if (-1 == lastScreen) { int j; for (j = 0; j < MAXSCREENS; j++) { vfbScreens[j].blackPixel = pix; } } else { vfbScreens[lastScreen].blackPixel = pix; } return 2; } if (strcmp (argv[i], "-whitepixel") == 0) /* -whitepixel n */ { Pixel pix; fail_unless_args(argc, i, 1); ++i; pix = atoi(argv[i]); if (-1 == lastScreen) { int j; for (j = 0; j < MAXSCREENS; j++) { vfbScreens[j].whitePixel = pix; } } else { vfbScreens[lastScreen].whitePixel = pix; } return 2; } if (strcmp (argv[i], "-linebias") == 0) /* -linebias n */ { unsigned int linebias; fail_unless_args(argc, i, 1); ++i; linebias = atoi(argv[i]); if (-1 == lastScreen) { int j; for (j = 0; j < MAXSCREENS; j++) { vfbScreens[j].lineBias = linebias; } } else { vfbScreens[lastScreen].lineBias = linebias; } return 2; } #ifdef HAS_SHM if (strcmp (argv[i], "-shmem") == 0) /* -shmem */ { fbmemtype = SHARED_MEMORY_FB; return 1; } #endif if (strcmp(argv[i], "-geometry") == 0) { fail_unless_args(argc, i, 1); ++i; if (sscanf(argv[i],"%dx%d",&vfbScreens[0].fb.width, &vfbScreens[0].fb.height) != 2) { ErrorF("Invalid geometry %s\n", argv[i]); UseMsg(); return 0; } return 2; } if (strcmp(argv[i], "-depth") == 0) { fail_unless_args(argc, i, 1); ++i; vfbScreens[0].fb.depth = atoi(argv[i]); return 2; } if (strcmp(argv[i], "-pixelformat") == 0) { char rgbbgr[4]; int bits1, bits2, bits3; fail_unless_args(argc, i, 1); ++i; if (sscanf(argv[i], "%3s%1d%1d%1d", rgbbgr,&bits1,&bits2,&bits3) < 4) { ErrorF("Invalid pixel format %s\n", argv[i]); UseMsg(); return 0; } #define SET_PIXEL_FORMAT(vfbScreen) \ (vfbScreen).pixelFormatDefined = TRUE; \ (vfbScreen).fb.depth = bits1 + bits2 + bits3; \ (vfbScreen).greenBits = bits2; \ if (strcasecmp(rgbbgr, "bgr") == 0) { \ (vfbScreen).rgbNotBgr = FALSE; \ (vfbScreen).redBits = bits3; \ (vfbScreen).blueBits = bits1; \ } else if (strcasecmp(rgbbgr, "rgb") == 0) { \ (vfbScreen).rgbNotBgr = TRUE; \ (vfbScreen).redBits = bits1; \ (vfbScreen).blueBits = bits3; \ } else { \ ErrorF("Invalid pixel format %s\n", argv[i]); \ UseMsg(); \ return 0; \ } if (-1 == lastScreen) { int j; for (j = 0; j < MAXSCREENS; j++) { SET_PIXEL_FORMAT(vfbScreens[j]); } } else { SET_PIXEL_FORMAT(vfbScreens[lastScreen]); } return 2; } if (strcmp(argv[i], "-inetd") == 0) { dup2(0,3); vncInetdSock = 3; close(2); if (!displaySpecified) { int port = vncGetSocketPort(vncInetdSock); int displayNum = port - 5900; if (displayNum < 0 || displayNum > 99 || !displayNumFree(displayNum)) { for (displayNum = 1; displayNum < 100; displayNum++) if (displayNumFree(displayNum)) break; if (displayNum == 100) FatalError("Xvnc error: no free display number for -inetd"); } display = displayNumStr; sprintf(displayNumStr, "%d", displayNum); } return 1; } if (strcmp(argv[i], "-noclipboard") == 0) { vncNoClipboard = 1; return 1; } if (!strcmp(argv[i], "-verbose")) { if (++i < argc && argv[i]) { char *end; long val; val = strtol(argv[i], &end, 0); if (*end == '\0') { vncVerbose = val; LogSetParameter(XLOG_VERBOSITY, vncVerbose); return 2; } } vncVerbose++; LogSetParameter(XLOG_VERBOSITY, vncVerbose); return 1; } if (!strcmp(argv[i], "-quiet")) { vncVerbose = -1; LogSetParameter(XLOG_VERBOSITY, vncVerbose); return 1; } if (!strcmp(argv[i], "-showconfig") || !strcmp(argv[i], "-version")) { vncPrintBanner(); exit(0); } if (vncSetParamSimple(argv[i])) return 1; if (argv[i][0] == '-' && i+1 < argc) { if (vncSetParam(&argv[i][1], argv[i+1])) return 2; } return 0; }