mirror of
https://github.com/X11Libre/xserver.git
synced 2026-04-14 17:18:09 +00:00
Do not uselessly reload modules in DuplicateModule
The function does not initialize the module so it has no business loading it. If some user of DuplicateModule expects a module actually loaded they should use LoadModule. Signed-off-by: Michal Suchanek <hramrach@centrum.cz> Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
This commit is contained in:
@@ -94,6 +94,8 @@ const ModuleVersions LoaderVersionInfo = {
|
||||
ABI_FONT_VERSION
|
||||
};
|
||||
|
||||
static int ModuleDuplicated[] = {};
|
||||
|
||||
static void
|
||||
FreeStringList(char **paths)
|
||||
{
|
||||
@@ -785,7 +787,6 @@ ModuleDescPtr
|
||||
DuplicateModule(ModuleDescPtr mod, ModuleDescPtr parent)
|
||||
{
|
||||
ModuleDescPtr ret;
|
||||
int errmaj, errmin;
|
||||
|
||||
if (!mod)
|
||||
return NULL;
|
||||
@@ -794,14 +795,11 @@ DuplicateModule(ModuleDescPtr mod, ModuleDescPtr parent)
|
||||
if (ret == NULL)
|
||||
return NULL;
|
||||
|
||||
if (!(ret->handle = LoaderOpen(mod->path, &errmaj, &errmin))) {
|
||||
free(ret);
|
||||
return NULL;
|
||||
}
|
||||
ret->handle = mod->handle;
|
||||
|
||||
ret->SetupProc = mod->SetupProc;
|
||||
ret->TearDownProc = mod->TearDownProc;
|
||||
ret->TearDownData = NULL;
|
||||
ret->TearDownData = ModuleDuplicated;
|
||||
ret->child = DuplicateModule(mod->child, ret);
|
||||
ret->sib = DuplicateModule(mod->sib, parent);
|
||||
ret->parent = parent;
|
||||
@@ -1077,9 +1075,11 @@ UnloadModuleOrDriver(ModuleDescPtr mod)
|
||||
else
|
||||
xf86MsgVerb(X_INFO, 3, "UnloadModule: \"%s\"\n", mod->name);
|
||||
|
||||
if ((mod->TearDownProc) && (mod->TearDownData))
|
||||
mod->TearDownProc(mod->TearDownData);
|
||||
LoaderUnload(mod->name, mod->handle);
|
||||
if (mod->TearDownData != ModuleDuplicated) {
|
||||
if ((mod->TearDownProc) && (mod->TearDownData))
|
||||
mod->TearDownProc(mod->TearDownData);
|
||||
LoaderUnload(mod->name, mod->handle);
|
||||
}
|
||||
|
||||
if (mod->child)
|
||||
UnloadModuleOrDriver(mod->child);
|
||||
|
||||
Reference in New Issue
Block a user