/*
* This file is autogenerated with bcop:
* The Compiz option code generator
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <compiz.h>
#define _WORKAROUNDS_OPTIONS_INTERNAL
#include "workarounds_options.h"
static int displayPrivateIndex;
static CompMetadata workaroundsOptionsMetadata;
static CompPluginVTable *workaroundsPluginVTable = NULL;
CompPluginVTable workaroundsOptionsVTable;
#define GET_WORKAROUNDS_OPTIONS_DISPLAY(d) \
((WorkaroundsOptionsDisplay *) (d)->privates[displayPrivateIndex].ptr)
#define WORKAROUNDS_OPTIONS_DISPLAY(d) \
WorkaroundsOptionsDisplay *od = GET_WORKAROUNDS_OPTIONS_DISPLAY (d)
#define GET_WORKAROUNDS_OPTIONS_SCREEN(s, od) \
((WorkaroundsOptionsScreen *) (s)->privates[(od)->screenPrivateIndex].ptr)
#define WORKAROUNDS_OPTIONS_SCREEN(s) \
WorkaroundsOptionsScreen *os = GET_WORKAROUNDS_OPTIONS_SCREEN (s, GET_WORKAROUNDS_OPTIONS_DISPLAY (s->display))
typedef struct _WorkaroundsOptionsDisplay
{
int screenPrivateIndex;
CompOption opt[WorkaroundsDisplayOptionNum];
workaroundsDisplayOptionChangeNotifyProc notify[WorkaroundsDisplayOptionNum];
} WorkaroundsOptionsDisplay;
typedef struct _WorkaroundsOptionsScreen
{
} WorkaroundsOptionsScreen;
Bool workaroundsGetLegacyFullscreen (CompDisplay *d)
{
WORKAROUNDS_OPTIONS_DISPLAY(d);
return od->opt[WorkaroundsDisplayOptionLegacyFullscreen].value.b;
}
CompOption * workaroundsGetLegacyFullscreenOption (CompDisplay *d)
{
WORKAROUNDS_OPTIONS_DISPLAY(d);
return &od->opt[WorkaroundsDisplayOptionLegacyFullscreen];
}
void workaroundsSetLegacyFullscreenNotify (CompDisplay *d, workaroundsDisplayOptionChangeNotifyProc notify)
{
WORKAROUNDS_OPTIONS_DISPLAY(d);
od->notify[WorkaroundsDisplayOptionLegacyFullscreen] = notify;
}
Bool workaroundsGetFirefoxMenuFix (CompDisplay *d)
{
WORKAROUNDS_OPTIONS_DISPLAY(d);
return od->opt[WorkaroundsDisplayOptionFirefoxMenuFix].value.b;
}
CompOption * workaroundsGetFirefoxMenuFixOption (CompDisplay *d)
{
WORKAROUNDS_OPTIONS_DISPLAY(d);
return &od->opt[WorkaroundsDisplayOptionFirefoxMenuFix];
}
void workaroundsSetFirefoxMenuFixNotify (CompDisplay *d, workaroundsDisplayOptionChangeNotifyProc notify)
{
WORKAROUNDS_OPTIONS_DISPLAY(d);
od->notify[WorkaroundsDisplayOptionFirefoxMenuFix] = notify;
}
Bool workaroundsGetNotificationDaemonFix (CompDisplay *d)
{
WORKAROUNDS_OPTIONS_DISPLAY(d);
return od->opt[WorkaroundsDisplayOptionNotificationDaemonFix].value.b;
}
CompOption * workaroundsGetNotificationDaemonFixOption (CompDisplay *d)
{
WORKAROUNDS_OPTIONS_DISPLAY(d);
return &od->opt[WorkaroundsDisplayOptionNotificationDaemonFix];
}
void workaroundsSetNotificationDaemonFixNotify (CompDisplay *d, workaroundsDisplayOptionChangeNotifyProc notify)
{
WORKAROUNDS_OPTIONS_DISPLAY(d);
od->notify[WorkaroundsDisplayOptionNotificationDaemonFix] = notify;
}
Bool workaroundsGetJavaFix (CompDisplay *d)
{
WORKAROUNDS_OPTIONS_DISPLAY(d);
return od->opt[WorkaroundsDisplayOptionJavaFix].value.b;
}
CompOption * workaroundsGetJavaFixOption (CompDisplay *d)
{
WORKAROUNDS_OPTIONS_DISPLAY(d);
return &od->opt[WorkaroundsDisplayOptionJavaFix];
}
void workaroundsSetJavaFixNotify (CompDisplay *d, workaroundsDisplayOptionChangeNotifyProc notify)
{
WORKAROUNDS_OPTIONS_DISPLAY(d);
od->notify[WorkaroundsDisplayOptionJavaFix] = notify;
}
Bool workaroundsGetQtFix (CompDisplay *d)
{
WORKAROUNDS_OPTIONS_DISPLAY(d);
return od->opt[WorkaroundsDisplayOptionQtFix].value.b;
}
CompOption * workaroundsGetQtFixOption (CompDisplay *d)
{
WORKAROUNDS_OPTIONS_DISPLAY(d);
return &od->opt[WorkaroundsDisplayOptionQtFix];
}
void workaroundsSetQtFixNotify (CompDisplay *d, workaroundsDisplayOptionChangeNotifyProc notify)
{
WORKAROUNDS_OPTIONS_DISPLAY(d);
od->notify[WorkaroundsDisplayOptionQtFix] = notify;
}
Bool workaroundsGetStickyAlldesktops (CompDisplay *d)
{
WORKAROUNDS_OPTIONS_DISPLAY(d);
return od->opt[WorkaroundsDisplayOptionStickyAlldesktops].value.b;
}
CompOption * workaroundsGetStickyAlldesktopsOption (CompDisplay *d)
{
WORKAROUNDS_OPTIONS_DISPLAY(d);
return &od->opt[WorkaroundsDisplayOptionStickyAlldesktops];
}
void workaroundsSetStickyAlldesktopsNotify (CompDisplay *d, workaroundsDisplayOptionChangeNotifyProc notify)
{
WORKAROUNDS_OPTIONS_DISPLAY(d);
od->notify[WorkaroundsDisplayOptionStickyAlldesktops] = notify;
}
CompMatch * workaroundsGetAlldesktopStickyMatch (CompDisplay *d)
{
WORKAROUNDS_OPTIONS_DISPLAY(d);
return &od->opt[WorkaroundsDisplayOptionAlldesktopStickyMatch].value.match;
}
CompOption * workaroundsGetAlldesktopStickyMatchOption (CompDisplay *d)
{
WORKAROUNDS_OPTIONS_DISPLAY(d);
return &od->opt[WorkaroundsDisplayOptionAlldesktopStickyMatch];
}
void workaroundsSetAlldesktopStickyMatchNotify (CompDisplay *d, workaroundsDisplayOptionChangeNotifyProc notify)
{
WORKAROUNDS_OPTIONS_DISPLAY(d);
od->notify[WorkaroundsDisplayOptionAlldesktopStickyMatch] = notify;
}
CompOption * workaroundsGetDisplayOption (CompDisplay *d, WorkaroundsDisplayOptions num)
{
WORKAROUNDS_OPTIONS_DISPLAY(d);
return &od->opt[num];
}
static const CompMetadataOptionInfo workaroundsOptionsDisplayOptionInfo[] = {
{ "legacy_fullscreen", "bool", 0, 0, 0 },
{ "firefox_menu_fix", "bool", 0, 0, 0 },
{ "notification_daemon_fix", "bool", 0, 0, 0 },
{ "java_fix", "bool", 0, 0, 0 },
{ "qt_fix", "bool", 0, 0, 0 },
{ "sticky_alldesktops", "bool", 0, 0, 0 },
{ "alldesktop_sticky_match", "match", 0, 0, 0 },
};
static Bool workaroundsOptionsSetDisplayOption (CompPlugin *plugin, CompDisplay *d, char *name, CompOptionValue *value)
{
WORKAROUNDS_OPTIONS_DISPLAY(d);
CompOption *o;
int index;
o = compFindOption (od->opt, WorkaroundsDisplayOptionNum, name, &index);
if (!o)
return FALSE;
switch (index)
{
case WorkaroundsDisplayOptionLegacyFullscreen:
if (compSetDisplayOption (d, o, value))
{
if (od->notify[WorkaroundsDisplayOptionLegacyFullscreen])
(*od->notify[WorkaroundsDisplayOptionLegacyFullscreen]) (d, o, WorkaroundsDisplayOptionLegacyFullscreen);
return TRUE;
}
break;
case WorkaroundsDisplayOptionFirefoxMenuFix:
if (compSetDisplayOption (d, o, value))
{
if (od->notify[WorkaroundsDisplayOptionFirefoxMenuFix])
(*od->notify[WorkaroundsDisplayOptionFirefoxMenuFix]) (d, o, WorkaroundsDisplayOptionFirefoxMenuFix);
return TRUE;
}
break;
case WorkaroundsDisplayOptionNotificationDaemonFix:
if (compSetDisplayOption (d, o, value))
{
if (od->notify[WorkaroundsDisplayOptionNotificationDaemonFix])
(*od->notify[WorkaroundsDisplayOptionNotificationDaemonFix]) (d, o, WorkaroundsDisplayOptionNotificationDaemonFix);
return TRUE;
}
break;
case WorkaroundsDisplayOptionJavaFix:
if (compSetDisplayOption (d, o, value))
{
if (od->notify[WorkaroundsDisplayOptionJavaFix])
(*od->notify[WorkaroundsDisplayOptionJavaFix]) (d, o, WorkaroundsDisplayOptionJavaFix);
return TRUE;
}
break;
case WorkaroundsDisplayOptionQtFix:
if (compSetDisplayOption (d, o, value))
{
if (od->notify[WorkaroundsDisplayOptionQtFix])
(*od->notify[WorkaroundsDisplayOptionQtFix]) (d, o, WorkaroundsDisplayOptionQtFix);
return TRUE;
}
break;
case WorkaroundsDisplayOptionStickyAlldesktops:
if (compSetDisplayOption (d, o, value))
{
if (od->notify[WorkaroundsDisplayOptionStickyAlldesktops])
(*od->notify[WorkaroundsDisplayOptionStickyAlldesktops]) (d, o, WorkaroundsDisplayOptionStickyAlldesktops);
return TRUE;
}
break;
case WorkaroundsDisplayOptionAlldesktopStickyMatch:
if (compSetDisplayOption (d, o, value))
{
if (od->notify[WorkaroundsDisplayOptionAlldesktopStickyMatch])
(*od->notify[WorkaroundsDisplayOptionAlldesktopStickyMatch]) (d, o, WorkaroundsDisplayOptionAlldesktopStickyMatch);
return TRUE;
}
break;
default:
break;
}
return FALSE;
}
static CompOption * workaroundsOptionsGetDisplayOptions (CompPlugin *plugin, CompDisplay *d, int *count)
{
WORKAROUNDS_OPTIONS_DISPLAY(d);
*count = WorkaroundsDisplayOptionNum;
return od->opt;
}
static Bool workaroundsOptionsInitScreen (CompPlugin *p, CompScreen *s)
{
WorkaroundsOptionsScreen *os;
WORKAROUNDS_OPTIONS_DISPLAY (s->display);
os = calloc (1, sizeof(WorkaroundsOptionsScreen));
if (!os)
return FALSE;
s->privates[od->screenPrivateIndex].ptr = os;
if (workaroundsPluginVTable && workaroundsPluginVTable->initScreen)
return workaroundsPluginVTable->initScreen (p, s);
return TRUE;
}
static void workaroundsOptionsFiniScreen (CompPlugin *p, CompScreen *s)
{
if (workaroundsPluginVTable && workaroundsPluginVTable->finiScreen)
return workaroundsPluginVTable->finiScreen (p, s);
WORKAROUNDS_OPTIONS_SCREEN (s);
free (os);
}
static Bool workaroundsOptionsInitDisplay (CompPlugin *p, CompDisplay *d)
{
WorkaroundsOptionsDisplay *od;
od = calloc (1, sizeof(WorkaroundsOptionsDisplay));
if (!od)
return FALSE;
od->screenPrivateIndex = allocateScreenPrivateIndex(d);
if (od->screenPrivateIndex < 0)
{
free(od);
return FALSE;
}
d->privates[displayPrivateIndex].ptr = od;
if (!compInitDisplayOptionsFromMetadata (d, &workaroundsOptionsMetadata, workaroundsOptionsDisplayOptionInfo, od->opt, WorkaroundsDisplayOptionNum))
{
free (od);
return FALSE;
}
if (workaroundsPluginVTable && workaroundsPluginVTable->initDisplay)
return workaroundsPluginVTable->initDisplay (p, d);
return TRUE;
}
static void workaroundsOptionsFiniDisplay (CompPlugin *p, CompDisplay *d)
{
if (workaroundsPluginVTable && workaroundsPluginVTable->finiDisplay)
return workaroundsPluginVTable->finiDisplay (p, d);
WORKAROUNDS_OPTIONS_DISPLAY (d);
freeScreenPrivateIndex(d, od->screenPrivateIndex);
compFiniDisplayOptions (d, od->opt, WorkaroundsDisplayOptionNum);
free (od);
}
static Bool workaroundsOptionsInit (CompPlugin *p)
{
displayPrivateIndex = allocateDisplayPrivateIndex();
if (displayPrivateIndex < 0)
return FALSE;
if (!compInitPluginMetadataFromInfo (&workaroundsOptionsMetadata, "workarounds",workaroundsOptionsDisplayOptionInfo, WorkaroundsDisplayOptionNum, 0, 0))
return FALSE;
compAddMetadataFromFile (&workaroundsOptionsMetadata, "workarounds");
if (workaroundsPluginVTable && workaroundsPluginVTable->init)
return workaroundsPluginVTable->init (p);
return TRUE;
}
static void workaroundsOptionsFini (CompPlugin *p)
{
if (workaroundsPluginVTable && workaroundsPluginVTable->fini)
return workaroundsPluginVTable->fini (p);
if (displayPrivateIndex >= 0)
freeDisplayPrivateIndex(displayPrivateIndex);
compFiniMetadata (&workaroundsOptionsMetadata);
}
static CompMetadata *
workaroundsOptionsGetMetadata (CompPlugin *plugin)
{
return &workaroundsOptionsMetadata;
}
CompPluginVTable *getCompPluginInfo (void)
{
if (!workaroundsPluginVTable)
{
workaroundsPluginVTable = workaroundsOptionsGetCompPluginInfo ();
memcpy(&workaroundsOptionsVTable, workaroundsPluginVTable, sizeof(CompPluginVTable));
workaroundsOptionsVTable.getMetadata = workaroundsOptionsGetMetadata;
workaroundsOptionsVTable.init = workaroundsOptionsInit;
workaroundsOptionsVTable.fini = workaroundsOptionsFini;
workaroundsOptionsVTable.initDisplay = workaroundsOptionsInitDisplay;
workaroundsOptionsVTable.finiDisplay = workaroundsOptionsFiniDisplay;
workaroundsOptionsVTable.initScreen = workaroundsOptionsInitScreen;
workaroundsOptionsVTable.finiScreen = workaroundsOptionsFiniScreen;
workaroundsOptionsVTable.getDisplayOptions = workaroundsOptionsGetDisplayOptions;
workaroundsOptionsVTable.setDisplayOption = workaroundsOptionsSetDisplayOption;
}
return &workaroundsOptionsVTable;
}
syntax highlighted by Code2HTML, v. 0.9.1