Add static extensions before those in modules
Make sure we add static extensions before anything in a module. This is more or less a no-op at the moment, but will come in handy later when extension dependency sorting is removed. Signed-off-by: Daniel Stone <daniel@fooishbar.org> Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net> Signed-off-by: Keith Packard <keithp@keithp.com>
This commit is contained in:
parent
9a953e0e9d
commit
2fba9445a0
|
@ -180,6 +180,11 @@ typedef struct {
|
|||
|
||||
extern _X_EXPORT ExtensionModule *ExtensionModuleList;
|
||||
|
||||
/* This really shouldn't be here, but gets moved in about three commits'
|
||||
* time. So odds are the only people who ever see this comment are doing
|
||||
* patch review, in which case, thanks! */
|
||||
extern _X_EXPORT void AddStaticExtensions(void);
|
||||
|
||||
/* Prototypes for Loader functions that are exported to modules */
|
||||
extern _X_EXPORT pointer LoadSubModule(pointer, const char *, const char **,
|
||||
const char **, pointer,
|
||||
|
|
|
@ -49,6 +49,10 @@ NewExtensionModule(void)
|
|||
ExtensionModule *save = ExtensionModuleList;
|
||||
int n;
|
||||
|
||||
/* Make sure built-in extensions get added to the list before those
|
||||
* in modules. */
|
||||
AddStaticExtensions();
|
||||
|
||||
/* Sanity check */
|
||||
if (!ExtensionModuleList)
|
||||
numExtensionModules = 0;
|
||||
|
|
|
@ -421,22 +421,31 @@ static ExtensionModule staticExtensions[] = {
|
|||
#endif
|
||||
};
|
||||
|
||||
/*ARGSUSED*/ void
|
||||
void
|
||||
AddStaticExtensions(void)
|
||||
{
|
||||
static Bool listInitialised = FALSE;
|
||||
int i;
|
||||
|
||||
if (listInitialised)
|
||||
return;
|
||||
listInitialised = TRUE;
|
||||
|
||||
/* Add built-in extensions to the list. */
|
||||
for (i = 0; i < ARRAY_SIZE(staticExtensions); i++)
|
||||
LoadExtension(&staticExtensions[i], TRUE);
|
||||
}
|
||||
|
||||
void
|
||||
InitExtensions(int argc, char *argv[])
|
||||
{
|
||||
int i;
|
||||
ExtensionModule *ext;
|
||||
static Bool listInitialised = FALSE;
|
||||
|
||||
if (!listInitialised) {
|
||||
/* Add built-in extensions to the list. */
|
||||
for (i = 0; i < ARRAY_SIZE(staticExtensions); i++)
|
||||
LoadExtension(&staticExtensions[i], TRUE);
|
||||
|
||||
/* Sort the extensions according the init dependencies. */
|
||||
LoaderSortExtensions();
|
||||
listInitialised = TRUE;
|
||||
}
|
||||
/* Make sure all static extensions have been added, then sort the
|
||||
* extensions according to their init dependencies. */
|
||||
AddStaticExtensions();
|
||||
LoaderSortExtensions();
|
||||
|
||||
for (i = 0; ExtensionModuleList[i].name != NULL; i++) {
|
||||
ext = &ExtensionModuleList[i];
|
||||
|
|
Loading…
Reference in New Issue
Block a user