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; }
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; }
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); }
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); }
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); }
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; }