xserver: Branch 'mpx' - 17 commits

Peter Hutterer whot at kemper.freedesktop.org
Fri Feb 8 13:40:32 PST 2008


 .gitignore                             |    2 ++
 Xi/exevents.c                          |    3 +++
 hw/xfree86/common/xf86Xinput.c         |    2 +-
 hw/xfree86/doc/man/xorg.conf.man.pre   |   16 ++++++++--------
 hw/xfree86/loader/loadmod.c            |    2 +-
 hw/xfree86/os-support/bsd/i386_video.c |    2 +-
 miext/rootless/rootlessWindow.c        |    2 +-
 xkb/xkbUtils.c                         |   24 ++++++++++++++++--------
 8 files changed, 33 insertions(+), 20 deletions(-)

New commits:
commit 0b0a09797302ac2171db5df20fc5110aafc8efbb
Author: Peter Hutterer <peter at cs.unisa.edu.au>
Date:   Thu Feb 7 15:48:04 2008 +1030

    xkb: when copying the keymap, make sure the structs default to 0/NULL.
    
    It actually does help if a pointer is NULL rather than pointing to nirvana
    when you're trying to free it lateron. Who would have thought?
    (cherry picked from commit 7a97ca667405a42d008265c3a870210cc1da97dd)

diff --git a/xkb/xkbUtils.c b/xkb/xkbUtils.c
index 740bc7d..91aee18 100644
--- a/xkb/xkbUtils.c
+++ b/xkb/xkbUtils.c
@@ -1733,9 +1733,8 @@ XkbCopyKeymap(XkbDescPtr src, XkbDescPtr dst, Bool sendNotifies)
         else {
             if (dst->geom->sz_shapes) {
                 xfree(dst->geom->shapes);
-                dst->geom->shapes = NULL;
             }
-            
+            dst->geom->shapes = NULL;
             dst->geom->num_shapes = 0;
             dst->geom->sz_shapes = 0;
         }
@@ -1784,6 +1783,7 @@ XkbCopyKeymap(XkbDescPtr src, XkbDescPtr dst, Bool sendNotifies)
             }
 
             dst->geom->num_sections = 0;
+            dst->geom->sections = NULL;
         }
 
         if (src->geom->num_sections) {
@@ -1795,6 +1795,7 @@ XkbCopyKeymap(XkbDescPtr src, XkbDescPtr dst, Bool sendNotifies)
                 tmp = xalloc(src->geom->num_sections * sizeof(XkbSectionRec));
             if (!tmp)
                 return FALSE;
+            memset(tmp, 0, src->geom->num_sections * sizeof(XkbSectionRec));
             dst->geom->sections = tmp;
             dst->geom->num_sections = src->geom->num_sections;
 
@@ -1831,6 +1832,10 @@ XkbCopyKeymap(XkbDescPtr src, XkbDescPtr dst, Bool sendNotifies)
                         return FALSE;
                     dsection->doodads = tmp;
                 }
+                else {
+                    dsection->doodads = NULL;
+                }
+
                 for (k = 0,
                       sdoodad = ssection->doodads,
                       ddoodad = dsection->doodads;
@@ -1858,9 +1863,9 @@ XkbCopyKeymap(XkbDescPtr src, XkbDescPtr dst, Bool sendNotifies)
         else {
             if (dst->geom->sz_sections) {
                 xfree(dst->geom->sections);
-                dst->geom->sections = NULL;
             }
 
+            dst->geom->sections = NULL;
             dst->geom->num_sections = 0;
             dst->geom->sz_sections = 0;
         }
@@ -1889,6 +1894,8 @@ XkbCopyKeymap(XkbDescPtr src, XkbDescPtr dst, Bool sendNotifies)
                     }
                 }
             }
+            dst->geom->num_doodads = 0;
+            dst->geom->doodads = NULL;
         }
 
         if (src->geom->num_doodads) {
@@ -1901,7 +1908,7 @@ XkbCopyKeymap(XkbDescPtr src, XkbDescPtr dst, Bool sendNotifies)
                               sizeof(XkbDoodadRec));
             if (!tmp)
                 return FALSE;
-            bzero(tmp, src->geom->num_doodads * sizeof(XkbDoodadRec));
+            memset(tmp, 0, src->geom->num_doodads * sizeof(XkbDoodadRec));
             dst->geom->doodads = tmp;
 
             dst->geom->sz_doodads = src->geom->num_doodads;
@@ -1930,9 +1937,9 @@ XkbCopyKeymap(XkbDescPtr src, XkbDescPtr dst, Bool sendNotifies)
         else {
             if (dst->geom->sz_doodads) {
                 xfree(dst->geom->doodads);
-                dst->geom->doodads = NULL;
             }
 
+            dst->geom->doodads = NULL;
             dst->geom->num_doodads = 0;
             dst->geom->sz_doodads = 0;
         }
@@ -1960,10 +1967,10 @@ XkbCopyKeymap(XkbDescPtr src, XkbDescPtr dst, Bool sendNotifies)
             dst->geom->num_key_aliases = dst->geom->sz_key_aliases;
         }
         else {
-            if (dst->geom->sz_key_aliases && dst->geom->key_aliases) {
+            if (dst->geom->key_aliases) {
                 xfree(dst->geom->key_aliases);
-                dst->geom->key_aliases = NULL;
             }
+            dst->geom->key_aliases = NULL;
             dst->geom->num_key_aliases = 0;
             dst->geom->sz_key_aliases = 0;
         }
@@ -1994,8 +2001,8 @@ XkbCopyKeymap(XkbDescPtr src, XkbDescPtr dst, Bool sendNotifies)
         else {
             if (dst->geom->label_font) {
                 xfree(dst->geom->label_font);
-                dst->geom->label_font = NULL;
             }
+            dst->geom->label_font = NULL;
             dst->geom->label_color = NULL;
             dst->geom->base_color = NULL;
         }
commit 9d5edebe9664f4ac35b82830e000a72d5ca9cbe4
Author: Peter Hutterer <peter at cs.unisa.edu.au>
Date:   Thu Feb 7 21:22:50 2008 +1030

    Xi: finish XKB initialisation before copying the keymap.

diff --git a/Xi/exevents.c b/Xi/exevents.c
index faf391f..46ee66d 100644
--- a/Xi/exevents.c
+++ b/Xi/exevents.c
@@ -184,7 +184,10 @@ CopyKeyClass(DeviceIntPtr device, DeviceIntPtr master)
 #ifdef XKB
         if (!noXkbExtension && dk->xkbInfo && dk->xkbInfo->desc) {
             if (!mk->xkbInfo || !mk->xkbInfo->desc)
+            {
                 XkbInitDevice(master);
+                XkbFinishDeviceInit(master);
+            }
             if (!XkbCopyKeymap(dk->xkbInfo->desc, mk->xkbInfo->desc, True))
                 FatalError("Couldn't pivot keymap from device to core!\n");
         }
commit 96eafa3d4f05997dac8be6a8d66a92410511824c
Author: Peter Hutterer <peter at cs.unisa.edu.au>
Date:   Tue Feb 5 16:01:56 2008 +1030

    xkb: when copying sections, make sure num_rows is set too.
    (cherry picked from commit 41991fb991313202e8e6b513fe928ba14f8fcb87)

diff --git a/xkb/xkbUtils.c b/xkb/xkbUtils.c
index 68ecb32..740bc7d 100644
--- a/xkb/xkbUtils.c
+++ b/xkb/xkbUtils.c
@@ -1809,6 +1809,7 @@ XkbCopyKeymap(XkbDescPtr src, XkbDescPtr dst, Bool sendNotifies)
                         return FALSE;
                     dsection->rows = tmp;
                 }
+                dsection->num_rows = ssection->num_rows;
                 for (j = 0, srow = ssection->rows, drow = dsection->rows;
                      j < ssection->num_rows;
                      j++, srow++, drow++) {
commit e5e531ce96264518f278f572a4d0bfcd345aa618
Merge: 6c38682... 1692dcf...
Author: Peter Hutterer <peter at cs.unisa.edu.au>
Date:   Thu Jan 31 16:36:17 2008 +1030

    Merge branch 'master' into mpx
    
    Conflicts:
    
    	dix/events.c

commit 1692dcf197470d074f69d5af1608cb2ff1d08872
Author: Peter Hutterer <peter at cs.unisa.edu.au>
Date:   Wed Jan 30 13:04:58 2008 +1030

    dix: print out event type if a bogus pointer event occurs.

diff --git a/dix/events.c b/dix/events.c
index 15aa16e..4a8e480 100644
--- a/dix/events.c
+++ b/dix/events.c
@@ -3312,7 +3312,7 @@ ProcessPointerEvent (xEvent *xE, DeviceIntPtr mouse, int count)
 		deactivateGrab = TRUE;
 	    break;
 	default: 
-	    FatalError("bogus pointer event from ddx");
+	    FatalError("bogus pointer event from ddx: %d", xE->u.u.type);
 	}
     }
     else if (!CheckMotion(xE))
commit d954f9c80348de294602d931d387e5cd1ef4b9a5
Author: Peter Hutterer <peter at cs.unisa.edu.au>
Date:   Wed Jan 30 10:39:54 2008 +1030

    xkb: don't update LEDs if they don't exist. (Bug #13961)
    
    In some weird cases we call this function when there is no SrvLedInfo on the
    device. And it turns out null-pointer dereferences are bad.
    
    X.Org Bug 13961 <http://bugs.freedesktop.org/show_bug.cgi?id=13961>

diff --git a/xkb/xkbLEDs.c b/xkb/xkbLEDs.c
index 2877af0..55ce12a 100644
--- a/xkb/xkbLEDs.c
+++ b/xkb/xkbLEDs.c
@@ -63,6 +63,9 @@ XkbSrvLedInfoPtr	sli;
 
     sli= XkbFindSrvLedInfo(dev,XkbDfltXIClass,XkbDfltXIId,0);
 
+    if (!sli)
+        return update;
+
     if (state_changes&(XkbModifierStateMask|XkbGroupStateMask))
 	update|= sli->usesEffective;
     if (state_changes&(XkbModifierBaseMask|XkbGroupBaseMask))
commit df325be394e1f75c396b2768f81373f2989aef7c
Author: Coleman Kane <cokane at cokane.org>
Date:   Tue Jan 29 09:47:00 2008 -0800

    Bug 13101: xorg-server has a typo in hw/xfree86/os-support/bsd/i386_video.c
    
    X.Org Bug #13101 <https://bugs.freedesktop.org/show_bug.cgi?id=13101>
    Patch #12360 <https://bugs.freedesktop.org/attachment.cgi?id=12360>

diff --git a/hw/xfree86/os-support/bsd/i386_video.c b/hw/xfree86/os-support/bsd/i386_video.c
index 42b9054..0dcff66 100644
--- a/hw/xfree86/os-support/bsd/i386_video.c
+++ b/hw/xfree86/os-support/bsd/i386_video.c
@@ -602,7 +602,7 @@ cleanMTRR()
 #ifdef DEBUG
 			ErrorF("Clean for (0x%lx,0x%lx)\n",
 				(unsigned long)mrd[i].mr_base,
-				(unsigned long)rd[i].mr_len);
+				(unsigned long)mrd[i].mr_len);
 #endif
 			if (mrd[i].mr_flags & MDF_FIXACTIVE) {
 				mro.mo_arg[0] = MEMRANGE_SET_UPDATE;
commit 94f412cb7e954fe872fed979057cbdfbef953c6f
Author: Julien Goodwin <julien at studio442.com.au>
Date:   Sun Jan 27 12:30:16 2008 +1100

    Loader: Fix verbosity confusion
    
    'Loading foo' is verbosity 3, whereas 'already built-in' is verbosity 0.
    This means that gdm's log would just be full of bare 'module already
    built-in' messages.

diff --git a/hw/xfree86/loader/loadmod.c b/hw/xfree86/loader/loadmod.c
index 584cabf..45e9cb3 100644
--- a/hw/xfree86/loader/loadmod.c
+++ b/hw/xfree86/loader/loadmod.c
@@ -864,7 +864,7 @@ doLoadModule(const char *module, const char *path, const char **subdirlist,
     for (cim = compiled_in_modules; *cim; cim++)
 	if (!strcmp (module, *cim))
 	{
-	    xf86MsgVerb(X_INFO, 0, "Module \"%s\" already built-in\n", module);
+	    xf86MsgVerb(X_INFO, 3, "Module \"%s\" already built-in\n", module);
 	    return (ModuleDescPtr) 1;
 	}
 
commit 442838fcb3bf07ac57553ae5600d9e6c59a559bb
Author: Julien Goodwin <julien at studio442.com.au>
Date:   Sun Jan 27 12:27:26 2008 +1100

    xorg.conf.man: Fix monitor/output confusion in monitor positioning
    
    On the Intel driver at least, LeftOf/RightOf/Above/Below in xorg.conf refers
    to output names, not monitor names.  Fix nomenclature in xorg.conf.man.

diff --git a/hw/xfree86/doc/man/xorg.conf.man.pre b/hw/xfree86/doc/man/xorg.conf.man.pre
index 1369a16..608ba37 100644
--- a/hw/xfree86/doc/man/xorg.conf.man.pre
+++ b/hw/xfree86/doc/man/xorg.conf.man.pre
@@ -1432,24 +1432,24 @@ This optional entry specifies the position of the monitor within the X
 screen.
 (RandR 1.2-supporting drivers only)
 .TP 7
-.BI "Option " "\*qLeftOf\*q  " \*qmonitor\*q
+.BI "Option " "\*qLeftOf\*q  " \*qoutput\*q
 This optional entry specifies that the monitor should be positioned to the
-left of the monitor of the given name.
+left of the output (not monitor) of the given name.
 (RandR 1.2-supporting drivers only)
 .TP 7
-.BI "Option " "\*qRightOf\*q  " \*qmonitor\*q
+.BI "Option " "\*qRightOf\*q  " \*qoutput\*q
 This optional entry specifies that the monitor should be positioned to the
-right of the monitor of the given name.
+right of the output (not monitor) of the given name.
 (RandR 1.2-supporting drivers only)
 .TP 7
-.BI "Option " "\*qAbove\*q  " \*qmonitor\*q
+.BI "Option " "\*qAbove\*q  " \*qoutput\*q
 This optional entry specifies that the monitor should be positioned above the
-monitor of the given name.
+output (not monitor) of the given name.
 (RandR 1.2-supporting drivers only)
 .TP 7
-.BI "Option " "\*qBelow\*q  " \*qmonitor\*q
+.BI "Option " "\*qBelow\*q  " \*qoutput\*q
 This optional entry specifies that the monitor should be positioned below the
-monitor of the given name.
+output (not monitor) of the given name.
 (RandR 1.2-supporting drivers only)
 .TP 7
 .BI "Option " "\*qEnable\*q  " \*qbool\*q
commit 5b8641a5fdc112c19e78ca2954878712e328d403
Author: Peter Hutterer <peter at cs.unisa.edu.au>
Date:   Tue Jan 29 10:01:37 2008 +1030

    xfree86: fix AlwaysCore handling. (Bug #14256)
    
    Assume AlwaysCore being set by default, just like the other options.
    
    X.Org Bug 14256 <http://bugs.freedesktop.org/show_bug.cgi?id=14256>

diff --git a/hw/xfree86/common/xf86Xinput.c b/hw/xfree86/common/xf86Xinput.c
index cd0c30a..9a94c04 100644
--- a/hw/xfree86/common/xf86Xinput.c
+++ b/hw/xfree86/common/xf86Xinput.c
@@ -115,7 +115,7 @@ _X_EXPORT void
 xf86ProcessCommonOptions(LocalDevicePtr local,
                          pointer	list)
 {
-    if (xf86SetBoolOption(list, "AlwaysCore", 0) ||
+    if (!xf86SetBoolOption(list, "AlwaysCore", 1) ||
         !xf86SetBoolOption(list, "SendCoreEvents", 1) ||
         !xf86SetBoolOption(list, "CorePointer", 1) ||
         !xf86SetBoolOption(list, "CoreKeyboard", 1)) {
commit 975ab11799c819a81da1dfe83505194410dbcb95
Author: Peter Hutterer <peter at cs.unisa.edu.au>
Date:   Sat Jan 26 09:39:54 2008 +1030

    config: don't reset connection info on disconnect.
    
    If dbus is restarted, we try to connect again and this is difficult if the
    busname and/or busobject is not set.
    (cherry picked from commit 210eeef495770c1883c842ff003c28ce25f279d4)

diff --git a/config/dbus.c b/config/dbus.c
index f6ac4c1..0be42af 100644
--- a/config/dbus.c
+++ b/config/dbus.c
@@ -396,9 +396,6 @@ err_start:
 static void
 disconnect_hook(void *data)
 {
-    struct connection_info *info = data;
-
-    reset_info(info);
 }
 
 #if 0
@@ -440,4 +437,6 @@ void
 config_dbus_fini(void)
 {
     config_dbus_core_remove_hook(&core_hook);
+    connection_data.busname[0] = '\0';
+    connection_data.busobject[0] = '\0';
 }
commit 7dde5a694a06efed0a9186f05d33f5be6f5dba71
Author: Peter Hutterer <peter at cs.unisa.edu.au>
Date:   Fri Jan 25 13:54:47 2008 +1030

    config: check connection != NULL before getting dbus' dispatch status.
    
    (cherry picked from commit d23266522390a4ef7203ae7c062b2b920e45f9d7)

diff --git a/config/dbus-core.c b/config/dbus-core.c
index 9cf1530..b349c6e 100644
--- a/config/dbus-core.c
+++ b/config/dbus-core.c
@@ -56,8 +56,9 @@ wakeup_handler(pointer data, int err, pointer read_mask)
     if (info->connection && FD_ISSET(info->fd, (fd_set *) read_mask)) {
         do {
             dbus_connection_read_write_dispatch(info->connection, 0);
-        } while (dbus_connection_get_dispatch_status(info->connection) ==
-                  DBUS_DISPATCH_DATA_REMAINS);
+        } while (info->connection &&
+                 dbus_connection_get_is_connected(info->connection) &&
+                 dbus_connection_get_dispatch_status(info->connection) == DBUS_DISPATCH_DATA_REMAINS);
     }
 }
 
commit f0ba7707161b8866e6fde32d6f25be6afcdecb48
Author: Peter Hutterer <peter at cs.unisa.edu.au>
Date:   Fri Jan 25 13:45:22 2008 +1030

    config: only shutdown libhal if the connection is valid.
    
    Thanks to libdbus' extensive use of assert we won't just get an error, it'll
    bring the whole server down for us.
    (cherry picked from commit fb07fab2c07e7b0834724541dc47bfba02ba8574)

diff --git a/config/hal.c b/config/hal.c
index 52a0113..1575422 100644
--- a/config/hal.c
+++ b/config/hal.c
@@ -283,12 +283,14 @@ disconnect_hook(void *data)
     struct config_hal_info *info = data;
 
     if (info->hal_ctx) {
-        dbus_error_init(&error);
-        if (!libhal_ctx_shutdown(info->hal_ctx, &error))
-            DebugF("[config/hal] couldn't shut down context: %s (%s)\n",
-                   error.name, error.message);
+        if (dbus_connection_get_is_connected(info->system_bus)) {
+            dbus_error_init(&error);
+            if (!libhal_ctx_shutdown(info->hal_ctx, &error))
+                DebugF("[config/hal] couldn't shut down context: %s (%s)\n",
+                        error.name, error.message);
+            dbus_error_free(&error);
+        }
         libhal_ctx_free(info->hal_ctx);
-        dbus_error_free(&error);
     }
 
     info->hal_ctx = NULL;
commit 2cb0ebec2b85d96289c23c17cfdcdf97ef6877d2
Author: Peter Hutterer <peter at cs.unisa.edu.au>
Date:   Fri Jan 25 11:48:13 2008 +1030

    config: add a debug message, fix a whitespace error.
    
    (cherry picked from commit 7732898aaa70e076000f6e6aa9420482896ed996)

diff --git a/config/hal.c b/config/hal.c
index 4ab2961..52a0113 100644
--- a/config/hal.c
+++ b/config/hal.c
@@ -105,7 +105,7 @@ get_prop_string(LibHalContext *hal_ctx, const char *udi, const char *name)
     char *prop, *ret;
 
     prop = libhal_device_get_property_string(hal_ctx, udi, name, NULL);
-    DebugF(" [config/hal] getting %s on %s returned %s\n", name, udi, prop);
+    DebugF("[config/hal] getting %s on %s returned %s\n", name, udi, prop);
     if (prop) {
         ret = xstrdup(prop);
         libhal_free_string(prop);
@@ -234,8 +234,9 @@ device_added(LibHalContext *hal_ctx, const char *udi)
     if (xkb_options)
         add_option(&options, "xkb_options", xkb_options);
 
+    DebugF("[config/hal] Adding device %s\n", name);
     if (NewInputDeviceRequest(options, &dev) != Success) {
-        DebugF("[config/hal] NewInputDeviceRequest failed\n");
+        ErrorF("[config/hal] NewInputDeviceRequest failed\n");
         dev = NULL;
         goto unwind;
     }
commit 4fc2d3cef8d7868b025aa14af7ed4b730e8f2c49
Author: Jeremy Huddleston <jeremy at tifa.local>
Date:   Mon Jan 28 12:18:43 2008 -0800

    Rootless: RootlessEnsureFrame: Added check for !IsRoot
    This was causing an issue with Apple-DRI and was reported here:
    http://trac.macosforge.org/projects/xquartz/ticket/51
    (cherry picked from commit 116800279d2ec783c63f43d3902627edde6a4cff)

diff --git a/miext/rootless/rootlessWindow.c b/miext/rootless/rootlessWindow.c
index b953398..7285f95 100644
--- a/miext/rootless/rootlessWindow.c
+++ b/miext/rootless/rootlessWindow.c
@@ -471,7 +471,7 @@ RootlessEnsureFrame(WindowPtr pWin)
     if (WINREC(pWin) != NULL)
         return WINREC(pWin);
 
-    if (!IsTopLevel(pWin))
+    if (!IsTopLevel(pWin) && !IsRoot(pWin))
         return NULL;
 
     if (pWin->drawable.class != InputOutput)
commit 16b0614c8c441eb1692bde9e58fadf54a9c6f00f
Merge: 1a88aed... e915a26...
Author: David Nusinow <dnusinow at debian.org>
Date:   Sat Jan 26 16:13:25 2008 -0500

    Merge commit 'upstream/master'

commit 1a88aed5c82c7c131e3d473ef7b8766a418fdf1b
Author: David Nusinow <dnusinow at debian.org>
Date:   Mon Jan 21 21:16:13 2008 -0500

    Add tags/TAGS to .gitignore for ctags usage

diff --git a/.gitignore b/.gitignore
index b52664b..406b74c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -27,6 +27,8 @@ install-sh
 libtool
 ltmain.sh
 missing
+TAGS
+tags
 ylwrap
 xorg-server.pc
 stamp-h?


More information about the xorg-commit mailing list