22
22
#ifndef CCS_BACKEND_H
23
23
#define CCS_BACKEND_H
25
#include <ccs-object.h>
26
#include <ccs-string.h>
28
#include <ccs-setting-types.h>
30
COMPIZCONFIG_BEGIN_DECLS
32
typedef struct _CCSSetting CCSSetting;
33
typedef struct _CCSPlugin CCSPlugin;
34
typedef struct _CCSContext CCSContext;
27
35
typedef struct _CCSBackend CCSBackend;
28
typedef struct _CCSBackendVTable CCSBackendVTable;
36
typedef struct _CCSBackendInfo CCSBackendInfo;
37
typedef struct _CCSBackendPrivate CCSBackendPrivate;
38
typedef struct _CCSBackendInterface CCSBackendInterface;
39
typedef struct _CCSIntegration CCSIntegration;
41
typedef struct _CCSSettingValue CCSSettingValue;
42
typedef enum _CCSSettingType CCSSettingType;
44
typedef struct _CCSIntegratedSettingInfo CCSIntegratedSettingInfo;
45
typedef struct _CCSIntegratedSettingInfoInterface CCSIntegratedSettingInfoInterface;
47
typedef const char * (*CCSIntegratedSettingInfoPluginName) (CCSIntegratedSettingInfo *);
48
typedef const char * (*CCSIntegratedSettingInfoSettingName) (CCSIntegratedSettingInfo *);
49
typedef CCSSettingType (*CCSIntegratedSettingInfoGetType) (CCSIntegratedSettingInfo *);
50
typedef void (*CCSIntegratedSettingInfoFree) (CCSIntegratedSettingInfo *);
52
struct _CCSIntegratedSettingInfoInterface
54
CCSIntegratedSettingInfoPluginName pluginName;
55
CCSIntegratedSettingInfoSettingName settingName;
56
CCSIntegratedSettingInfoGetType getType;
57
CCSIntegratedSettingInfoFree free;
61
* @brief The _CCSIntegratedSettingInfo struct
63
* This interface represents some basic information about a DE
64
* integrated setting, it cannot be operated upon itself
66
struct _CCSIntegratedSettingInfo
71
typedef struct _CCSIntegratedSetting CCSIntegratedSetting;
72
typedef struct _CCSIntegratedSettingInterface CCSIntegratedSettingInterface;
74
typedef CCSSettingValue * (*CCSIntegratedSettingReadValue) (CCSIntegratedSetting *, CCSSettingType);
75
typedef void (*CCSIntegratedSettingWriteValue) (CCSIntegratedSetting *, CCSSettingValue *, CCSSettingType);
76
typedef void (*CCSIntegratedSettingFree) (CCSIntegratedSetting *);
78
struct _CCSIntegratedSettingInterface
80
CCSIntegratedSettingReadValue readValue;
81
CCSIntegratedSettingWriteValue writeValue;
82
CCSIntegratedSettingFree free;
85
const char * ccsIntegratedSettingInfoPluginName (CCSIntegratedSettingInfo *);
86
const char * ccsIntegratedSettingInfoSettingName (CCSIntegratedSettingInfo *);
87
CCSSettingType ccsIntegratedSettingInfoGetType (CCSIntegratedSettingInfo *);
88
void ccsFreeIntegratedSettingInfo (CCSIntegratedSettingInfo *);
90
CCSREF_HDR (IntegratedSettingInfo, CCSIntegratedSettingInfo);
91
CCSLIST_HDR (IntegratedSettingInfo, CCSIntegratedSettingInfo);
93
unsigned int ccsCCSIntegratedSettingInfoInterfaceGetType ();
96
* @brief The _CCSIntegratedSetting struct
98
* A CCSIntegratedSetting represents an desktop environment setting which
99
* we are "integrated" with - its functionality is more or less a subset
100
* of CCSSetting, values can be written and read from it but not much else.
102
struct _CCSIntegratedSetting
107
CCSSettingValue * ccsIntegratedSettingReadValue(CCSIntegratedSetting *, CCSSettingType);
108
void ccsIntegratedSettingWriteValue (CCSIntegratedSetting *, CCSSettingValue *, CCSSettingType);
109
void ccsFreeIntegratedSetting (CCSIntegratedSetting *);
111
CCSREF_HDR (IntegratedSetting, CCSIntegratedSetting);
112
CCSLIST_HDR (IntegratedSetting, CCSIntegratedSetting);
114
unsigned int ccsCCSIntegratedSettingInterfaceGetType ();
117
* @brief ccsSharedIntegratedInfoSettingNew
118
* @param pluginName Plugin name of the integrated setting
119
* @param settingName Compiz name of the integrated setting
120
* @param type A CCSSettingType
121
* @param ai A CCSObjectAllocationInterface *
122
* @return a new CCSIntegratedSettingInfo
124
* ccsSharedIntegratedSettingInfoNew () returns the most fundamental
125
* implementation of a CCSIntegratedSettingInfo *, which is basic
126
* information about it, the plugin name, setting name, and type.
128
CCSIntegratedSettingInfo *
129
ccsSharedIntegratedSettingInfoNew (const char *pluginName,
130
const char *settingName,
132
CCSObjectAllocationInterface *ai);
134
typedef struct _CCSIntegratedSettingsStorage CCSIntegratedSettingsStorage;
135
typedef struct _CCSIntegratedSettingsStorageInterface CCSIntegratedSettingsStorageInterface;
138
* A predicate definition to find a CCSIntegratedSetting in a
139
* CCSIntegratedSettingStorage object. Returns true if the user
140
* predicate matches. The void * is some user-specified data
142
typedef Bool (*CCSIntegratedSettingsStorageFindPredicate) (CCSIntegratedSetting *, void *);
144
typedef CCSIntegratedSettingList (*CCSIntegratedSettingsStorageFindMatchingSettingsByPluginAndSettingName) (CCSIntegratedSettingsStorage *storage,
145
const char *pluginName,
146
const char *settingName);
147
typedef void (*CCSIntegratedSettingsStorageAddSetting) (CCSIntegratedSettingsStorage *storage,
148
CCSIntegratedSetting *setting);
150
typedef CCSIntegratedSettingList (*CCSIntegratedSettingsStorageFindMatchingSettingsByPredicate) (CCSIntegratedSettingsStorage *storage,
151
CCSIntegratedSettingsStorageFindPredicate pred,
154
typedef Bool (*CCSIntegratedSettingsStorageEmpty) (CCSIntegratedSettingsStorage *storage);
156
typedef void (*CCSIntegratedSettingsStorageFree) (CCSIntegratedSettingsStorage *storage);
158
struct _CCSIntegratedSettingsStorageInterface
160
CCSIntegratedSettingsStorageFindMatchingSettingsByPredicate findMatchingSettingsByPredicate;
161
CCSIntegratedSettingsStorageFindMatchingSettingsByPluginAndSettingName findMatchingSettingsByPluginAndSettingName;
162
CCSIntegratedSettingsStorageAddSetting addSetting;
163
CCSIntegratedSettingsStorageEmpty empty;
164
CCSIntegratedSettingsStorageFree free;
168
* @brief The _CCSIntegratedSettingsStorage struct
170
* CCSIntegratedSettingsStorage represents a list of currently active integrated
171
* DE settings. Access is restricted such that settings can only be added and
172
* the list can only be searched by predicates.
174
struct _CCSIntegratedSettingsStorage
179
CCSREF_HDR (IntegratedSettingsStorage, CCSIntegratedSettingsStorage);
182
* @brief ccsIntegratedSettingsStorageFindMatchingSettingsByPredicate
186
* @return a CCSIntegratedSettingList of CCSIntegratedSetting objects
187
* matching CCSIntegratedSettingsStorageFindPredicate
189
CCSIntegratedSettingList
190
ccsIntegratedSettingsStorageFindMatchingSettingsByPredicate (CCSIntegratedSettingsStorage *storage,
191
CCSIntegratedSettingsStorageFindPredicate pred,
195
* @brief ccsIntegratedSettingsStorageFindMatchingSettingsByPluginAndSettingName
199
* @return a CCSIntegratedSettingList of CCSIntegratedSetting objects
200
* with the specified plugin and setting names.
202
CCSIntegratedSettingList
203
ccsIntegratedSettingsStorageFindMatchingSettingsByPluginAndSettingName (CCSIntegratedSettingsStorage *storage,
204
const char *pluginName,
205
const char *settingName);
208
ccsIntegratedSettingsStorageAddSetting (CCSIntegratedSettingsStorage *storage,
209
CCSIntegratedSetting *setting);
212
ccsIntegratedSettingsStorageEmpty (CCSIntegratedSettingsStorage *storage);
215
ccsFreeIntegratedSettingsStorage (CCSIntegratedSettingsStorage *storage);
217
unsigned int ccsCCSIntegratedSettingsStorageInterfaceGetType ();
219
CCSIntegratedSettingsStorage *
220
ccsIntegratedSettingsStorageDefaultImplNew (CCSObjectAllocationInterface *ai);
222
typedef struct _CCSIntegratedSettingFactory CCSIntegratedSettingFactory;
223
typedef struct _CCSIntegratedSettingFactoryInterface CCSIntegratedSettingFactoryInterface;
225
typedef CCSIntegratedSetting * (*CCSIntegratedSettingFactoryCreateIntegratedSettingForCCSSettingNameAndType) (CCSIntegratedSettingFactory *factory,
226
CCSIntegration *integration,
227
const char *pluginName,
228
const char *settingName,
229
CCSSettingType type);
231
typedef void (*CCSIntegratedSettingFactoryFree) (CCSIntegratedSettingFactory *);
233
struct _CCSIntegratedSettingFactoryInterface
235
CCSIntegratedSettingFactoryCreateIntegratedSettingForCCSSettingNameAndType createIntegratedSettingForCCSSettingNameAndType;
236
CCSIntegratedSettingFactoryFree free;
240
* @brief The _CCSIntegratedSettingFactory struct
242
* CCSIntegratedSettingFactory is an interface for creating a CCSIntegratedSetting
243
* for a particular integration backend when appropriate. It doesn't make sense to load
244
* such information on startup until we need it as we might never write to these settings
245
* and loading them is an expensive process. In addition, we need to allow a place
246
* for testing code to prevent CCSIntegratedSetting objects from pulling
247
* in dependencies that they shouldn't.
249
struct _CCSIntegratedSettingFactory
254
CCSREF_HDR (IntegratedSettingFactory, CCSIntegratedSettingFactory);
256
unsigned int ccsCCSIntegratedSettingFactoryInterfaceGetType ();
258
CCSIntegratedSetting *
259
ccsIntegratedSettingFactoryCreateIntegratedSettingForCCSSettingNameAndType (CCSIntegratedSettingFactory *factory,
260
CCSIntegration *integration,
261
const char *pluginName,
262
const char *settingName,
263
CCSSettingType type);
266
ccsFreeIntegratedSettingFactory (CCSIntegratedSettingFactory *factory);
268
typedef struct _CCSIntegration CCSIntegration;
269
typedef struct _CCSIntegrationInterface CCSIntegrationInterface;
271
typedef CCSIntegratedSetting * (*CCSIntegrationGetIntegratedSetting) (CCSIntegration *integration,
272
const char *pluginName,
273
const char *settingName);
274
typedef Bool (*CCSIntegrationReadOptionIntoSetting) (CCSIntegration *integration,
277
CCSIntegratedSetting *integratedSetting);
278
typedef void (*CCSIntegrationWriteSettingIntoOption) (CCSIntegration *integration,
281
CCSIntegratedSetting *integratedSetting);
282
typedef void (*CCSIntegrationUpdateIntegratedSettings) (CCSIntegration *integration,
284
CCSIntegratedSettingList integratedSettings);
285
typedef void (*CCSIntegrationDisallowIntegratedWrites) (CCSIntegration *integration);
286
typedef void (*CCSIntegrationAllowIntegratedWrites) (CCSIntegration *integration);
287
typedef void (*CCSFreeIntegrationBackend) (CCSIntegration *integration);
289
struct _CCSIntegrationInterface
291
CCSIntegrationGetIntegratedSetting getIntegratedSetting;
292
CCSIntegrationReadOptionIntoSetting readOptionIntoSetting;
293
CCSIntegrationWriteSettingIntoOption writeSettingIntoOption;
294
CCSIntegrationUpdateIntegratedSettings updateIntegratedSettings;
295
CCSIntegrationDisallowIntegratedWrites disallowIntegratedWrites;
296
CCSIntegrationAllowIntegratedWrites allowIntegratedWrites;
297
CCSFreeIntegrationBackend freeIntegrationBackend;
301
* @brief The _CCSIntegration struct
303
* An object that represents integration with a desktop environment. Generally
304
* these objects store a list of hardcoded settings that can be retrieved using
305
* ccsIntegrationGetIntegratedOptionIndex and then written to and read
306
* from using the readOptionIntoSetting and writeOptionIntoSetting.
308
struct _CCSIntegration
313
CCSREF_HDR (Integration, CCSIntegration)
315
unsigned int ccsCCSIntegrationInterfaceGetType ();
317
CCSIntegratedSetting * ccsIntegrationGetIntegratedSetting (CCSIntegration *integration,
318
const char *pluginName,
319
const char *settingName);
320
Bool ccsIntegrationReadOptionIntoSetting (CCSIntegration *integration,
323
CCSIntegratedSetting *integratedSetting);
324
void ccsIntegrationWriteSettingIntoOption (CCSIntegration *integration,
327
CCSIntegratedSetting *integratedSetting);
329
void ccsIntegrationUpdateIntegratedSettings (CCSIntegration *integration,
331
CCSIntegratedSettingList integratedSettings);
333
void ccsIntegrationDisallowIntegratedWrites (CCSIntegration *integration);
334
void ccsIntegrationAllowIntegratedWrites (CCSIntegration *integration);
336
void ccsFreeIntegration (CCSIntegration *integration);
339
ccsNullIntegrationBackendNew (CCSObjectAllocationInterface *ai);
344
* This object represents CCSBackend directly in memory. It does
345
* not represent the details that come with a loaded backend.
347
* Backends are capable of reading, writing and updating settings
348
* from intergrated locations. Clients should check if these functions
349
* are supported first as the function pointers are permitted to be NULL.
30
351
struct _CCSBackend
33
CCSBackendVTable *vTable;
36
typedef CCSBackendVTable * (*BackendGetInfoProc) (void);
38
typedef void (*CCSExecuteEventsFunc) (unsigned int flags);
40
typedef Bool (*CCSInitBackendFunc) (CCSContext * context);
41
typedef Bool (*CCSFiniBackendFunc) (CCSContext * context);
43
typedef Bool (*CCSContextReadInitFunc) (CCSContext * context);
44
typedef void (*CCSContextReadSettingFunc)
45
(CCSContext * context, CCSSetting * setting);
46
typedef void (*CCSContextReadDoneFunc) (CCSContext * context);
48
typedef Bool (*CCSContextWriteInitFunc) (CCSContext * context);
49
typedef void (*CCSContextWriteSettingFunc)
50
(CCSContext * context, CCSSetting * setting);
51
typedef void (*CCSContextWriteDoneFunc) (CCSContext * context);
53
typedef Bool (*CCSGetIsIntegratedFunc) (CCSSetting * setting);
54
typedef Bool (*CCSGetIsReadOnlyFunc) (CCSSetting * setting);
56
typedef CCSStringList (*CCSGetExistingProfilesFunc) (CCSContext * context);
57
typedef Bool (*CCSDeleteProfileFunc) (CCSContext * context, char * name);
59
struct _CCSBackendVTable
64
Bool integrationSupport;
356
struct _CCSBackendInfo
358
const char *name; /* name of the backend */
359
const char *shortDesc; /* backend's short description */
360
const char *longDesc; /* backend's long description */
361
Bool integrationSupport; /* does the backend support DE integration? */
362
Bool profileSupport; /* does the backend support profiles? */
363
unsigned int refCount; /* reference count */
366
typedef CCSBackendInterface * (*BackendGetInfoProc) (void);
368
typedef void (*CCSBackendExecuteEventsFunc) (CCSBackend *backend, unsigned int flags);
370
typedef Bool (*CCSBackendInitFunc) (CCSBackend *, CCSContext * context);
371
typedef Bool (*CCSBackendFiniFunc) (CCSBackend *);
373
typedef Bool (*CCSBackendReadInitFunc) (CCSBackend *, CCSContext * context);
374
typedef void (*CCSBackendReadSettingFunc)
375
(CCSBackend *, CCSContext * context, CCSSetting * setting);
376
typedef void (*CCSBackendReadDoneFunc) (CCSBackend *backend, CCSContext * context);
378
typedef Bool (*CCSBackendWriteInitFunc) (CCSBackend *backend, CCSContext * context);
379
typedef void (*CCSBackendWriteSettingFunc)
380
(CCSBackend *, CCSContext * context, CCSSetting * setting);
381
typedef void (*CCSBackendWriteDoneFunc) (CCSBackend *, CCSContext * context);
383
typedef void (*CCSBackendUpdateFunc) (CCSBackend *, CCSContext *, CCSPlugin *, CCSSetting *);
385
typedef Bool (*CCSBackendGetSettingIsIntegratedFunc) (CCSBackend *, CCSSetting * setting);
386
typedef Bool (*CCSBackendGetSettingIsReadOnlyFunc) (CCSBackend *, CCSSetting * setting);
388
typedef CCSStringList (*CCSBackendGetExistingProfilesFunc) (CCSBackend *, CCSContext * context);
389
typedef Bool (*CCSBackendDeleteProfileFunc) (CCSBackend *, CCSContext * context, char * name);
391
typedef void (*CCSBackendSetIntegration) (CCSBackend *, CCSIntegration *);
393
typedef const CCSBackendInfo * (*CCSBackendGetInfoFunc) (CCSBackend *);
395
struct _CCSBackendInterface
397
CCSBackendGetInfoFunc backendGetInfo;
67
399
/* something like a event loop call for the backend,
68
400
so it can check for file changes (gconf changes in the gconf backend)
69
401
no need for reload settings signals anymore */
70
CCSExecuteEventsFunc executeEvents;
72
CCSInitBackendFunc backendInit;
73
CCSFiniBackendFunc backendFini;
75
CCSContextReadInitFunc readInit;
76
CCSContextReadSettingFunc readSetting;
77
CCSContextReadDoneFunc readDone;
79
CCSContextWriteInitFunc writeInit;
80
CCSContextWriteSettingFunc writeSetting;
81
CCSContextWriteDoneFunc writeDone;
84
CCSGetIsIntegratedFunc getSettingIsIntegrated;
85
CCSGetIsReadOnlyFunc getSettingIsReadOnly;
87
CCSGetExistingProfilesFunc getExistingProfiles;
88
CCSDeleteProfileFunc deleteProfile;
91
CCSBackendVTable* getBackendInfo (void);
402
CCSBackendExecuteEventsFunc executeEvents;
404
CCSBackendInitFunc backendInit;
405
CCSBackendFiniFunc backendFini;
407
CCSBackendReadInitFunc readInit;
408
CCSBackendReadSettingFunc readSetting;
409
CCSBackendReadDoneFunc readDone;
411
CCSBackendWriteInitFunc writeInit;
412
CCSBackendWriteSettingFunc writeSetting;
413
CCSBackendWriteDoneFunc writeDone;
415
CCSBackendUpdateFunc updateSetting;
417
CCSBackendGetSettingIsIntegratedFunc getSettingIsIntegrated;
418
CCSBackendGetSettingIsReadOnlyFunc getSettingIsReadOnly;
420
CCSBackendGetExistingProfilesFunc getExistingProfiles;
421
CCSBackendDeleteProfileFunc deleteProfile;
422
CCSBackendSetIntegration setIntegration;
425
unsigned int ccsCCSBackendInterfaceGetType ();
428
* @brief ccsBackendGetInfo
429
* @param backend a CCSBackend *
430
* @return a const CCSBackendInfo * for this backend
432
* This function returns some basic info about this backend, what its
433
* name is, what it suppoirts etc
435
const CCSBackendInfo * ccsBackendGetInfo (CCSBackend *backend);
438
* @brief ccsBackendExecuteEvents
439
* @param backend a CCSBackend *
440
* @param flags ProcessEventsGlibMainLoopMask or 0
442
* something like a event loop call for the backend,
443
* so it can check for file changes (gconf changes in the gconf backend)
445
void ccsBackendExecuteEvents (CCSBackend *backend, unsigned int flags);
448
* @brief ccsBackendInit
453
* Initializes a backend for a context
455
Bool ccsBackendInit (CCSBackend *backend, CCSContext *context);
458
* @brief ccsBackendFini
463
* Cleans up the backend
465
Bool ccsBackendFini (CCSBackend *backend);
466
Bool ccsBackendReadInit (CCSBackend *backend, CCSContext *context);
467
void ccsBackendReadSetting (CCSBackend *backend, CCSContext *context, CCSSetting *setting);
468
void ccsBackendReadDone (CCSBackend *backend, CCSContext *context);
469
Bool ccsBackendWriteInit (CCSBackend *backend, CCSContext *context);
470
void ccsBackendWriteSetting (CCSBackend *backend, CCSContext *context, CCSSetting *setting);
471
void ccsBackendWriteDone (CCSBackend *backend, CCSContext *context);
474
* @brief ccsBackendUpdateSetting
475
* @param backend The backend on which the update should be processed
476
* @param context The context on which the backend resides.
477
* @param plugin The plugin for the setting
478
* @param setting The setting itself.
480
* This causes the specified setting to be re-read from the configuration
481
* database and re-written to any integrated keys. It should genrally
482
* be called by calback functions which know that the value
485
void ccsBackendUpdateSetting (CCSBackend *backend, CCSContext *context, CCSPlugin *plugin, CCSSetting *setting);
486
Bool ccsBackendGetSettingIsIntegrated (CCSBackend *backend, CCSSetting *setting);
487
Bool ccsBackendGetSettingIsReadOnly (CCSBackend *backend, CCSSetting *setting);
490
* @brief ccsBackendGetExistingProfiles
493
* @return a CCSStringist of available profiles for this backend
495
CCSStringList ccsBackendGetExistingProfiles (CCSBackend *backend, CCSContext *context);
496
Bool ccsBackendDeleteProfile (CCSBackend *backend, CCSContext *context, char *name);
497
void ccsBackendSetIntegration (CCSBackend *backend, CCSIntegration *integration);
498
void ccsFreeBackend (CCSBackend *backend);
500
typedef struct _CCSDynamicBackend CCSDynamicBackend;
501
typedef struct _CCSDynamicBackendPrivate CCSDynamicBackendPrivate;
502
typedef struct _CCSDynamicBackendInterface CCSDynamicBackendInterface;
503
typedef struct _CCSInterfaceTable CCSInterfaceTable;
506
* @brief The _CCSDynamicBackend struct
508
* This object represents a CCSBackend loaded in memory as a dlopen
509
* object. It implements the CCSBackend interface and provides an
510
* interface of its own for managing the dynamic backend and checking
513
* All function pointers are fully implemented and are safe to call
515
struct _CCSDynamicBackend
520
typedef const char * (*CCSDynamicBackendGetBackendName) (CCSDynamicBackend *);
521
typedef Bool (*CCSDynamicBackendSupportsRead) (CCSDynamicBackend *);
522
typedef Bool (*CCSDynamicBackendSupportsWrite) (CCSDynamicBackend *);
523
typedef Bool (*CCSDynamicBackendSupportsProfiles) (CCSDynamicBackend *);
524
typedef Bool (*CCSDynamicBackendSupportsIntegration) (CCSDynamicBackend *);
525
typedef CCSBackend * (*CCSDynamicBackendGetRawBackend) (CCSDynamicBackend *);
527
struct _CCSDynamicBackendInterface
529
CCSDynamicBackendGetBackendName getBackendName;
530
CCSDynamicBackendSupportsRead supportsRead;
531
CCSDynamicBackendSupportsWrite supportsWrite;
532
CCSDynamicBackendSupportsProfiles supportsProfiles;
533
CCSDynamicBackendSupportsIntegration supportsIntegration;
534
CCSDynamicBackendGetRawBackend getRawBackend;
537
const char * ccsDynamicBackendGetBackendName (CCSDynamicBackend *);
538
Bool ccsDynamicBackendSupportsRead (CCSDynamicBackend *);
539
Bool ccsDynamicBackendSupportsWrite (CCSDynamicBackend *);
540
Bool ccsDynamicBackendSupportsProfiles (CCSDynamicBackend *);
541
Bool ccsDynamicBackendSupportsIntegration (CCSDynamicBackend *);
542
CCSBackend * ccsDynamicBackendGetRawBackend (CCSDynamicBackend *);
544
unsigned int ccsCCSDynamicBackendInterfaceGetType ();
546
void ccsFreeDynamicBackend (CCSDynamicBackend *);
549
* @brief ccsOpenBackend
550
* @param name the name of the backend to open
551
* @param interface storage for this backend's interface
552
* @return a dlopen handle for this backend
554
CCSBackend * ccsOpenBackend (const CCSInterfaceTable *, CCSContext *context, const char *name);
557
* @brief ccsBackendNewWithDynamicInterface
563
* Creates a new CCSBackend for a CCSBackendInterface and dlopen handle
567
ccsBackendNewWithDynamicInterface (CCSContext *context, const CCSBackendInterface *interface);
569
CCSBackendInterface* getBackendInfo (void);
571
COMPIZCONFIG_END_DECLS