static Bool kconfigInit (CompPlugin *p) { if (!compInitPluginMetadataFromInfo (&kconfigMetadata, p->vTable->name, 0, 0, 0, 0)) return FALSE; corePrivateIndex = allocateCorePrivateIndex (); if (corePrivateIndex < 0) { compFiniMetadata (&kconfigMetadata); return FALSE; } kInstance = new KInstance ("compiz-kconfig"); if (!kInstance) { freeCorePrivateIndex (corePrivateIndex); compFiniMetadata (&kconfigMetadata); return FALSE; } compAddMetadataFromFile (&kconfigMetadata, p->vTable->name); return TRUE; }
static Bool fuseInit(CompPlugin *p) { if (!compInitPluginMetadataFromInfo(&fuseMetadata, p->vTable->name, fuseDisplayOptionInfo, FUSE_DISPLAY_OPTION_NUM, 0, 0)) return FALSE; inodes = fuseAddInode(NULL, FUSE_INODE_TYPE_ROOT, "."); if (!inodes) { compFiniMetadata(&fuseMetadata); return FALSE; } displayPrivateIndex = allocateDisplayPrivateIndex(); if (displayPrivateIndex < 0) { fuseRemoveInode(NULL, inodes); compFiniMetadata(&fuseMetadata); return FALSE; } compAddMetadataFromFile(&fuseMetadata, p->vTable->name); return TRUE; }
static Bool textInit (CompPlugin *p) { if (!compInitPluginMetadataFromInfo (&textMetadata, p->vTable->name, textDisplayOptionInfo, TEXT_DISPLAY_OPTION_NUM, NULL, 0)) return FALSE; displayPrivateIndex = allocateDisplayPrivateIndex (); if (displayPrivateIndex < 0) { compFiniMetadata (&textMetadata); return FALSE; } functionsPrivateIndex = allocateDisplayPrivateIndex (); if (functionsPrivateIndex < 0) { freeDisplayPrivateIndex (displayPrivateIndex); compFiniMetadata (&textMetadata); return FALSE; } compAddMetadataFromFile (&textMetadata, p->vTable->name); return TRUE; }
static Bool svgInit (CompPlugin *p) { if (!compInitPluginMetadataFromInfo (&svgMetadata, p->vTable->name, svgDisplayOptionInfo, SVG_DISPLAY_OPTION_NUM, 0, 0)) return FALSE; displayPrivateIndex = allocateDisplayPrivateIndex (); if (displayPrivateIndex < 0) { compFiniMetadata (&svgMetadata); return FALSE; } #if !LIBRSVG_CHECK_VERSION (2, 36, 0) rsvg_init (); #endif compAddMetadataFromFile (&svgMetadata, p->vTable->name); return TRUE; }
static Bool waterInit(CompPlugin * p) { if (!compInitPluginMetadataFromInfo(&waterMetadata, p->vTable->name, waterDisplayOptionInfo, WATER_DISPLAY_OPTION_NUM, 0, 0)) return FALSE; displayPrivateIndex = allocateDisplayPrivateIndex(); if (displayPrivateIndex < 0) { compFiniMetadata(&waterMetadata); return FALSE; } compAddMetadataFromFile(&waterMetadata, p->vTable->name); return TRUE; }
static Bool pngInit (CompPlugin *p) { if (!compInitPluginMetadataFromInfo (&pngMetadata, p->vTable->name, 0, 0, 0, 0)) return FALSE; displayPrivateIndex = allocateDisplayPrivateIndex (); if (displayPrivateIndex < 0) { compFiniMetadata (&pngMetadata); return FALSE; } compAddMetadataFromFile (&pngMetadata, p->vTable->name); return TRUE; }
static Bool ccpInit (CompPlugin *p) { if (!compInitPluginMetadataFromInfo (&ccpMetadata, p->vTable->name, 0, 0, 0, 0)) return FALSE; corePrivateIndex = allocateCorePrivateIndex (); if (corePrivateIndex < 0) { compFiniMetadata (&ccpMetadata); return FALSE; } compAddMetadataFromFile (&ccpMetadata, p->vTable->name); return TRUE; }
static Bool minInit(CompPlugin * p) { if (!compInitPluginMetadataFromInfo(&minMetadata, p->vTable->name, 0, 0, minScreenOptionInfo, MIN_SCREEN_OPTION_NUM)) return FALSE; displayPrivateIndex = allocateDisplayPrivateIndex(); if (displayPrivateIndex < 0) { compFiniMetadata(&minMetadata); return FALSE; } compAddMetadataFromFile(&minMetadata, p->vTable->name); return TRUE; }
static Bool commandsInit(CompPlugin *p) { if (!compInitPluginMetadataFromInfo(&commandsMetadata, p->vTable->name, commandsDisplayOptionInfo, COMMANDS_DISPLAY_OPTION_NUM, 0, 0)) return FALSE; displayPrivateIndex = allocateDisplayPrivateIndex(); if (displayPrivateIndex < 0) { compFiniMetadata(&commandsMetadata); return FALSE; } compAddMetadataFromFile(&commandsMetadata, p->vTable->name); return TRUE; }
static int sessionInit (CompPlugin *p) { if (!compInitPluginMetadataFromInfo (&sessionMetadata, p->vTable->name, sessionDisplayOptionInfo, SESSION_DISPLAY_OPTION_NUM, 0, 0)) return FALSE; corePrivateIndex = allocateCorePrivateIndex (); if (corePrivateIndex < 0) { compFiniMetadata (&sessionMetadata); return FALSE; } compAddMetadataFromFile (&sessionMetadata, p->vTable->name); return TRUE; }
static Bool decorInit (CompPlugin *p) { if (!compInitPluginMetadataFromInfo (&decorMetadata, p->vTable->name, decorDisplayOptionInfo, DECOR_DISPLAY_OPTION_NUM, 0, 0)) return FALSE; corePrivateIndex = allocateCorePrivateIndex (); if (corePrivateIndex < 0) { compFiniMetadata (&decorMetadata); return FALSE; } compAddMetadataFromFile (&decorMetadata, p->vTable->name); return TRUE; }
static Bool zoomInit(CompPlugin *p) { if (!compInitPluginMetadataFromInfo(&zoomMetadata, p->vTable->name, zoomDisplayOptionInfo, ZOOM_DISPLAY_OPTION_NUM, zoomScreenOptionInfo, ZOOM_SCREEN_OPTION_NUM)) return FALSE; displayPrivateIndex = allocateDisplayPrivateIndex(); if (displayPrivateIndex < 0) { compFiniMetadata(&zoomMetadata); return FALSE; } compAddMetadataFromFile(&zoomMetadata, p->vTable->name); return TRUE; }
EINTERN int compiz_main(void) { CompIOCtx ctx; char *displayName = 0; char *plugin[256]; int i, nPlugin = 0; Bool disableSm = FALSE; char *clientId = NULL; char *refreshRateArg = NULL; ecore_app_args_get(&programArgc, &programArgv); programName = programArgv[0]; emptyRegion.rects = &emptyRegion.extents; emptyRegion.numRects = 0; emptyRegion.extents.x1 = 0; emptyRegion.extents.y1 = 0; emptyRegion.extents.x2 = 0; emptyRegion.extents.y2 = 0; emptyRegion.size = 0; infiniteRegion.rects = &infiniteRegion.extents; infiniteRegion.numRects = 1; infiniteRegion.extents.x1 = MINSHORT; infiniteRegion.extents.y1 = MINSHORT; infiniteRegion.extents.x2 = MAXSHORT; infiniteRegion.extents.y2 = MAXSHORT; memset(&ctx, 0, sizeof (ctx)); if (!clientId) { clientId = getenv("DESKTOP_AUTOSTART_ID"); } if (refreshRateArg) { ctx.refreshRateData = malloc(strlen(refreshRateArg) + 256); if (ctx.refreshRateData) sprintf(ctx.refreshRateData, "<min>1</min><default>%s</default>", refreshRateArg); } plugin[nPlugin++] = "ccp"; if (nPlugin) { int size = 256; for (i = 0; i < nPlugin; i++) size += strlen(plugin[i]) + 16; ctx.pluginData = malloc(size); if (ctx.pluginData) { char *ptr = ctx.pluginData; ptr += sprintf(ptr, "<type>string</type><default>"); for (i = 0; i < nPlugin; i++) ptr += sprintf(ptr, "<value>%s</value>", plugin[i]); ptr += sprintf(ptr, "</default>"); } initialPlugins = malloc(nPlugin * sizeof (char *)); if (initialPlugins) { memcpy(initialPlugins, plugin, nPlugin * sizeof (char *)); nInitialPlugins = nPlugin; } else { nInitialPlugins = 0; } } xmlInitParser(); LIBXML_TEST_VERSION; if (!compInitMetadata(&coreMetadata)) { compLogMessage("core", CompLogLevelFatal, "Couldn't initialize core metadata"); return 1; } if (!compAddMetadataFromIO(&coreMetadata, readCoreXmlCallback, NULL, &ctx)) return 1; if (ctx.refreshRateData) free(ctx.refreshRateData); if (ctx.pluginData) free(ctx.pluginData); compAddMetadataFromFile(&coreMetadata, "core"); if (!initCore()) return 1; coreInitialized = TRUE; if (!addDisplay(displayName)) return 1; return 0; }
int main (int argc, char **argv) { CompIOCtx ctx; char *displayName = 0; char *plugin[256]; int i, nPlugin = 0; Bool disableSm = FALSE; char *clientId = NULL; char *refreshRateArg = NULL; programName = argv[0]; programArgc = argc; programArgv = argv; signal (SIGHUP, signalHandler); signal (SIGCHLD, signalHandler); signal (SIGINT, signalHandler); signal (SIGTERM, signalHandler); signal (SIGSEGV, signalHandler); emptyRegion.rects = &emptyRegion.extents; emptyRegion.numRects = 0; emptyRegion.extents.x1 = 0; emptyRegion.extents.y1 = 0; emptyRegion.extents.x2 = 0; emptyRegion.extents.y2 = 0; emptyRegion.size = 0; infiniteRegion.rects = &infiniteRegion.extents; infiniteRegion.numRects = 1; infiniteRegion.extents.x1 = MINSHORT; infiniteRegion.extents.y1 = MINSHORT; infiniteRegion.extents.x2 = MAXSHORT; infiniteRegion.extents.y2 = MAXSHORT; memset (&ctx, 0, sizeof (ctx)); for (i = 1; i < argc; i++) { if (!strcmp (argv[i], "--help")) { usage (); return 0; } else if (!strcmp (argv[i], "--version")) { printf (PACKAGE_STRING "\n"); return 0; } else if (!strcmp (argv[i], "--debug")) { debugOutput = TRUE; } else if (!strcmp (argv[i], "--display")) { if (i + 1 < argc) displayName = argv[++i]; } else if (!strcmp (argv[i], "--refresh-rate")) { if (i + 1 < argc) { refreshRateArg = programArgv[++i]; defaultRefreshRate = atoi (refreshRateArg); defaultRefreshRate = RESTRICT_VALUE (defaultRefreshRate, 1, 1000); } } else if (!strcmp (argv[i], "--fast-filter")) { ctx.textureFilterData = "<default>Fast</default>"; defaultTextureFilter = "Fast"; } else if (!strcmp (argv[i], "--indirect-rendering")) { /* force Mesa libGL into indirect rendering mode, because glXQueryExtensionsString is context-independant */ setenv ("LIBGL_ALWAYS_INDIRECT", "1", True); indirectRendering = TRUE; } else if (!strcmp (argv[i], "--loose-binding")) { strictBinding = FALSE; } else if (!strcmp (argv[i], "--ignore-desktop-hints")) { /* keep command line parameter for backward compatibility */ useDesktopHints = FALSE; } else if (!strcmp (argv[i], "--keep-desktop-hints")) { useDesktopHints = TRUE; } else if (!strcmp (argv[i], "--only-current-screen")) { onlyCurrentScreen = TRUE; } else if (!strcmp (argv[i], "--no-fbo")) { noFBO = TRUE; } #ifdef USE_COW else if (!strcmp (argv[i], "--use-root-window")) { useCow = FALSE; } #endif else if (!strcmp (argv[i], "--replace")) { replaceCurrentWm = TRUE; } else if (!strcmp (argv[i], "--sm-disable")) { disableSm = TRUE; } else if (!strcmp (argv[i], "--sm-client-id")) { if (i + 1 < argc) clientId = argv[++i]; } else if (!strcmp (argv[i], "--no-detection")) { noDetection = TRUE; } else if (!strcmp (argv[i], "--bg-image")) { if (i + 1 < argc) backgroundImage = argv[++i]; } else if (*argv[i] == '-') { compLogMessage ("core", CompLogLevelWarn, "Unknown option '%s'\n", argv[i]); } else { if (nPlugin < 256) plugin[nPlugin++] = argv[i]; } } /* add in default plugins if none are given */ if (nPlugin == 0) { plugin[nPlugin++] = "ccp"; plugin[nPlugin++] = "move"; plugin[nPlugin++] = "resize"; plugin[nPlugin++] = "place"; plugin[nPlugin++] = "decoration"; } if (refreshRateArg) { ctx.refreshRateData = malloc (strlen (refreshRateArg) + 256); if (ctx.refreshRateData) sprintf (ctx.refreshRateData, "<min>1</min><default>%s</default>", refreshRateArg); } if (nPlugin) { int size = 256; for (i = 0; i < nPlugin; i++) size += strlen (plugin[i]) + 16; ctx.pluginData = malloc (size); if (ctx.pluginData) { char *ptr = ctx.pluginData; ptr += sprintf (ptr, "<type>string</type><default>"); for (i = 0; i < nPlugin; i++) ptr += sprintf (ptr, "<value>%s</value>", plugin[i]); ptr += sprintf (ptr, "</default>"); } initialPlugins = malloc (nPlugin * sizeof (char *)); if (initialPlugins) { memcpy (initialPlugins, plugin, nPlugin * sizeof (char *)); nInitialPlugins = nPlugin; } else { nInitialPlugins = 0; } } xmlInitParser (); LIBXML_TEST_VERSION; if (!compInitMetadata (&coreMetadata)) { compLogMessage ("core", CompLogLevelFatal, "Couldn't initialize core metadata"); return 1; } if (!compAddMetadataFromIO (&coreMetadata, readCoreXmlCallback, NULL, &ctx)) return 1; if (ctx.refreshRateData) free (ctx.refreshRateData); if (ctx.pluginData) free (ctx.pluginData); compAddMetadataFromFile (&coreMetadata, "core"); if (!initCore ()) return 1; coreInitialized = TRUE; if (!disableSm) { if (clientId == NULL) { char *desktop_autostart_id = getenv ("DESKTOP_AUTOSTART_ID"); if (desktop_autostart_id != NULL) clientId = strdup (desktop_autostart_id); unsetenv ("DESKTOP_AUTOSTART_ID"); } initSession (clientId); } if (!addDisplay (displayName)) return 1; eventLoop (); if (!disableSm) closeSession (); coreInitialized = FALSE; finiCore (); compFiniMetadata (&coreMetadata); xmlCleanupParser (); if (initialPlugins) free (initialPlugins); if (restartSignal) { execvp (programName, programArgv); return 1; } return 0; }