xserver: Branch 'master' - 5 commits

Keith Packard keithp at kemper.freedesktop.org
Wed Oct 19 17:33:54 PDT 2011


 hw/xfree86/common/xf86Helper.c |    6 ------
 hw/xfree86/loader/loadmod.c    |   41 +++++++++++++++--------------------------
 man/Xserver.man                |    6 ++++++
 3 files changed, 21 insertions(+), 32 deletions(-)

New commits:
commit af3f64fb77c13180e513ee99d1fd9a1b624fd8ea
Merge: 15bbdc1... df0dd36...
Author: Keith Packard <keithp at keithp.com>
Date:   Wed Oct 19 17:33:07 2011 -0700

    Merge remote-tracking branch 'hramrach/pull'

commit df0dd36deea0c756819825113e825059ddd19243
Author: Michal Suchanek <hramrach at centrum.cz>
Date:   Sat Oct 8 14:26:24 2011 +0200

    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 at centrum.cz>
    Reviewed-by: Peter Hutterer <peter.hutterer at who-t.net>

diff --git a/hw/xfree86/loader/loadmod.c b/hw/xfree86/loader/loadmod.c
index 2e6c667..a21f43d 100644
--- a/hw/xfree86/loader/loadmod.c
+++ b/hw/xfree86/loader/loadmod.c
@@ -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);
commit 24d435163eb5fbd9b73cd8ba13a9b3cdbbe8a1df
Author: Michal Suchanek <hramrach at centrum.cz>
Date:   Sat Oct 8 14:19:34 2011 +0200

    Use UnloadModuleOrDriver for UnloadSubModule.
    
    Signed-off-by: Michal Suchanek <hramrach at centrum.cz>
    Reviewed-by: Peter Hutterer <peter.hutterer at who-t.net>

diff --git a/hw/xfree86/loader/loadmod.c b/hw/xfree86/loader/loadmod.c
index 9f82099..2e6c667 100644
--- a/hw/xfree86/loader/loadmod.c
+++ b/hw/xfree86/loader/loadmod.c
@@ -1072,7 +1072,10 @@ UnloadModuleOrDriver(ModuleDescPtr mod)
     if (mod == NULL || mod->name == NULL)
 	return;
 
-    xf86MsgVerb(X_INFO, 3, "UnloadModule: \"%s\"\n", mod->name);
+    if (mod->parent)
+	xf86MsgVerb(X_INFO, 3, "UnloadSubModule: \"%s\"\n", mod->name);
+    else
+	xf86MsgVerb(X_INFO, 3, "UnloadModule: \"%s\"\n", mod->name);
 
     if ((mod->TearDownProc) && (mod->TearDownData))
 	mod->TearDownProc(mod->TearDownData);
@@ -1092,23 +1095,8 @@ UnloadSubModule(pointer _mod)
 {
     ModuleDescPtr mod = (ModuleDescPtr)_mod;
 
-    if (mod == NULL || mod->name == NULL)
-	return;
-
-    xf86MsgVerb(X_INFO, 3, "UnloadSubModule: \"%s\"\n", mod->name);
-
-    if ((mod->TearDownProc) && (mod->TearDownData))
-	mod->TearDownProc(mod->TearDownData);
-    LoaderUnload(mod->name, mod->handle);
-
     RemoveChild(mod);
-
-    if (mod->child)
-	UnloadModuleOrDriver(mod->child);
-
-    free(mod->path);
-    free(mod->name);
-    free(mod);
+    UnloadModuleOrDriver(mod);
 }
 
 static void
@@ -1135,6 +1123,7 @@ RemoveChild(ModuleDescPtr child)
     }
     if (mdp == child)
 	prevsib->sib = child->sib;
+    child->sib = NULL;
     return;
 }
 
commit 0d4bb5442ceb8e8e4a8de6cfc4203cae469eee72
Author: Michal Suchanek <hramrach at centrum.cz>
Date:   Sat Oct 8 14:13:33 2011 +0200

    Unload submodules.
    
    Signed-off-by: Michal Suchanek <hramrach at centrum.cz>
    Reviewed-by: Peter Hutterer <peter.hutterer at who-t.net>

diff --git a/hw/xfree86/common/xf86Helper.c b/hw/xfree86/common/xf86Helper.c
index a8aa316..4e9bcad 100644
--- a/hw/xfree86/common/xf86Helper.c
+++ b/hw/xfree86/common/xf86Helper.c
@@ -1643,13 +1643,7 @@ xf86LoadOneModule(char *name, pointer opt)
 void
 xf86UnloadSubModule(pointer mod)
 {
-    /*
-     * This is disabled for now.  The loader isn't smart enough yet to undo
-     * relocations.
-     */
-#if 0
     UnloadSubModule(mod);
-#endif
 }
 
 Bool
commit b04aff76ac2eb461c71b85525a00e25efb8bf267
Author: Michal Suchanek <hramrach at centrum.cz>
Date:   Thu Oct 13 17:14:53 2011 +0200

    Document -background none option
    
    Document option introduced in commit 8976e97.
    
    Signed-off-by: Michal Suchanek <hramrach at centrum.cz>
    Reviewed-by: Jeremy Huddleston <jeremyhu at apple.com>
    Reviewed-by: Alan Coopersmith <alan.coopersmith at oracle.com>

diff --git a/man/Xserver.man b/man/Xserver.man
index 1a36b09..fe24337 100644
--- a/man/Xserver.man
+++ b/man/Xserver.man
@@ -100,6 +100,12 @@ specifies a file which contains a collection of authorization records used
 to authenticate access.  See also the \fIxdm\fP(1) and
 \fIXsecurity\fP(__miscmansuffix__) manual pages.
 .TP 8
+.BI \-background\ none
+Asks the driver not to clear the background on startup, if the driver supports that.
+May be useful for smooth transition with eg. fbdev driver.
+For security reasons this is not the default as the screen contents might
+show a previous user session.
+.TP 8
 .B \-br
 sets the default root window to solid black instead of the standard root weave
 pattern.   This is the default unless -retro or -wr is specified.


More information about the xorg-commit mailing list