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;
}
Beispiel #2
0
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;
}
Beispiel #4
0
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;
}
Beispiel #5
0
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;
}
Beispiel #8
0
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;
}
Beispiel #9
0
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;
}
Beispiel #12
0
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;
}
Beispiel #13
0
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;
}
Beispiel #14
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;
}