Пример #1
0
Bool
compInitScreenOptionsFromMetadata (CompScreen			*s,
				   CompMetadata			*m,
				   const CompMetadataOptionInfo *info,
				   CompOption			*opt,
				   int				n)
{
    int i;

    for (i = 0; i < n; i++)
    {
	if (!compInitScreenOptionFromMetadata (s, m, &opt[i], info[i].name))
	{
	    compFiniScreenOptions (s, opt, i);
	    return FALSE;
	}

	if (info[i].initiate)
	    opt[i].value.action.initiate = info[i].initiate;

	if (info[i].terminate)
	    opt[i].value.action.terminate = info[i].terminate;
    }

    return TRUE;
}
Пример #2
0
static Bool
fadeInitScreen(CompPlugin *p,
               CompScreen *s)
{
   FadeScreen *fs;

   FADE_DISPLAY(s->display);

   fs = malloc(sizeof (FadeScreen));
   if (!fs)
     return FALSE;

   if (!compInitScreenOptionsFromMetadata(s,
                                          &fadeMetadata,
                                          fadeScreenOptionInfo,
                                          fs->opt,
                                          FADE_SCREEN_OPTION_NUM))
     {
        free(fs);
        return FALSE;
     }

   fs->windowPrivateIndex = allocateWindowPrivateIndex(s);
   if (fs->windowPrivateIndex < 0)
     {
        compFiniScreenOptions(s, fs->opt, FADE_SCREEN_OPTION_NUM);
        free(fs);
        return FALSE;
     }

   fs->fadeTime = 1000.0f / fs->opt[FADE_SCREEN_OPTION_FADE_SPEED].value.f;

   matchInit(&fs->match);

   fadeUpdateWindowFadeMatch(s->display,
                             &fs->opt[FADE_SCREEN_OPTION_WINDOW_MATCH].value,
                             &fs->match);

   WRAP(fs, s, preparePaintScreen, fadePreparePaintScreen);
   WRAP(fs, s, paintWindow, fadePaintWindow);
   WRAP(fs, s, damageWindowRect, fadeDamageWindowRect);
   WRAP(fs, s, focusWindow, fadeFocusWindow);
   WRAP(fs, s, windowResizeNotify, fadeWindowResizeNotify);

   s->base.privates[fd->screenPrivateIndex].ptr = fs;

   return TRUE;
}
Пример #3
0
static void
zoomFiniScreen(CompPlugin *p,
               CompScreen *s)
{
   ZOOM_SCREEN(s);

   if (zs->panCursor)
     XFreeCursor(s->display->display, zs->panCursor);

   UNWRAP(zs, s, preparePaintScreen);
   UNWRAP(zs, s, donePaintScreen);
   UNWRAP(zs, s, paintOutput);

   compFiniScreenOptions(s, zs->opt, ZOOM_SCREEN_OPTION_NUM);

   free(zs);
}
Пример #4
0
static void minFiniScreen(CompPlugin * p, CompScreen * s)
{
	MIN_SCREEN(s);

	freeWindowPrivateIndex(s, ms->windowPrivateIndex);

	UNWRAP(ms, s, preparePaintScreen);
	UNWRAP(ms, s, donePaintScreen);
	UNWRAP(ms, s, paintOutput);
	UNWRAP(ms, s, paintWindow);
	UNWRAP(ms, s, damageWindowRect);
	UNWRAP(ms, s, focusWindow);

	compFiniScreenOptions(s, ms->opt, MIN_SCREEN_OPTION_NUM);

	free(ms);
}
Пример #5
0
static void
fadeFiniScreen(CompPlugin *p,
               CompScreen *s)
{
   FADE_SCREEN(s);

   matchFini(&fs->match);

   freeWindowPrivateIndex(s, fs->windowPrivateIndex);

   UNWRAP(fs, s, preparePaintScreen);
   UNWRAP(fs, s, paintWindow);
   UNWRAP(fs, s, damageWindowRect);
   UNWRAP(fs, s, focusWindow);
   UNWRAP(fs, s, windowResizeNotify);

   compFiniScreenOptions(s, fs->opt, FADE_SCREEN_OPTION_NUM);

   free(fs);
}
Пример #6
0
static Bool minInitScreen(CompPlugin * p, CompScreen * s)
{
	MinScreen *ms;

	MIN_DISPLAY(s->display);

	ms = malloc(sizeof(MinScreen));
	if (!ms)
		return FALSE;

	if (!compInitScreenOptionsFromMetadata(s,
					       &minMetadata,
					       minScreenOptionInfo,
					       ms->opt,
					       MIN_SCREEN_OPTION_NUM)) {
		free(ms);
		return FALSE;
	}

	ms->windowPrivateIndex = allocateWindowPrivateIndex(s);
	if (ms->windowPrivateIndex < 0) {
		compFiniScreenOptions(s, ms->opt, MIN_SCREEN_OPTION_NUM);
		free(ms);
		return FALSE;
	}

	ms->moreAdjust = FALSE;
	ms->shadeStep = ms->opt[MIN_SCREEN_OPTION_SHADE_RESISTANCE].rest.i.max -
	    ms->opt[MIN_SCREEN_OPTION_SHADE_RESISTANCE].value.i + 1;

	WRAP(ms, s, preparePaintScreen, minPreparePaintScreen);
	WRAP(ms, s, donePaintScreen, minDonePaintScreen);
	WRAP(ms, s, paintOutput, minPaintOutput);
	WRAP(ms, s, paintWindow, minPaintWindow);
	WRAP(ms, s, damageWindowRect, minDamageWindowRect);
	WRAP(ms, s, focusWindow, minFocusWindow);

	s->base.privates[md->screenPrivateIndex].ptr = ms;

	return TRUE;
}