xserver: Branch 'master' - 4 commits

Keith Packard keithp at kemper.freedesktop.org
Mon Aug 6 15:13:56 PDT 2012


 Xi/exevents.c    |    6 ++++++
 Xi/xiproperty.c  |    2 ++
 test/Makefile.am |    2 --
 3 files changed, 8 insertions(+), 2 deletions(-)

New commits:
commit 94b514d5e4b376d05e106eb3853da511256e8545
Merge: 7d87545... 7328900...
Author: Keith Packard <keithp at keithp.com>
Date:   Mon Aug 6 15:13:17 2012 -0700

    Merge remote-tracking branch 'whot/for-keith'

commit 7328900042b9c1312aed48753fd6054e64613e4c
Author: Alan Coopersmith <alan.coopersmith at oracle.com>
Date:   Mon Jul 30 23:37:06 2012 -0700

    XIChangeDeviceProperty: free newly allocated prop when SetProperty fails
    
    Reported by parfait 1.0:
    
    Error: Memory leak (CWE 401)
       Memory leak of pointer 'prop' allocated with XICreateDeviceProperty(property)
            at line 774 of Xi/xiproperty.c in function 'XIChangeDeviceProperty'.
              'prop' allocated at line 700 with XICreateDeviceProperty(property).
              prop leaks when handler != NULL at line 768
                  and handler->SetProperty != NULL at line 769
                  and checkonly != 0 at line 772
                  and rc != 0 at line 772.
    
    Signed-off-by: Alan Coopersmith <alan.coopersmith at oracle.com>
    Reviewed-by: Peter Hutterer <peter.hutterer at who-t.net>
    Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>

diff --git a/Xi/xiproperty.c b/Xi/xiproperty.c
index ca73104..4beedcf 100644
--- a/Xi/xiproperty.c
+++ b/Xi/xiproperty.c
@@ -771,6 +771,8 @@ XIChangeDeviceProperty(DeviceIntPtr dev, Atom property, Atom type,
                                                   &new_value, checkonly);
                         if (checkonly && rc != Success) {
                             free(new_value.data);
+                            if (add)
+                                XIDestroyDeviceProperty(prop);
                             return rc;
                         }
                     }
commit 4dbbcdf64563cb95f83c04b2442cb7e868384264
Author: Daniel d'Andrada <daniel.dandrada at canonical.com>
Date:   Thu Jul 26 17:31:57 2012 -0300

    Do sent TouchEnd to listeners that don't own an accepted touch
    
    When the owner of a touch accepts it, the other listeners must
    receive a TouchEnd.
    
    Even though there's code implementing the logic above in
    ProcessTouchOwnershipEvent(), DeliverTouchEndEvent() was refusing to send
    those TouchEnd events in this situatuation.
    
    Signed-off-by: Daniel d'Andrada <daniel.dandrada at canonical.com>
    Reviewed-by: Chase Douglas <chase.douglas at canonical.com>
    Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>

diff --git a/Xi/exevents.c b/Xi/exevents.c
index 9f6ec84..494d07e 100644
--- a/Xi/exevents.c
+++ b/Xi/exevents.c
@@ -1888,6 +1888,12 @@ DeliverTouchEndEvent(DeviceIntPtr dev, TouchPointInfoPtr ti, InternalEvent *ev,
         if (normal_end)
             listener->state = LISTENER_HAS_END;
     }
+    else if (ev->device_event.flags & TOUCH_ACCEPT) {
+        /* Touch has been accepted by its owner, which is not this listener */
+        if (listener->state != LISTENER_HAS_END)
+            rc = DeliverOneTouchEvent(client, dev, ti, grab, win, ev);
+        listener->state = LISTENER_HAS_END;
+    }
 
  out:
     return rc;
commit 02d91ccb0955252153206061a44340f051077624
Author: Peter Hutterer <peter.hutterer at who-t.net>
Date:   Thu Jun 21 15:42:17 2012 +1000

    test: always add DIX_LIB and OS_LIB on XORG builds
    
    With --disable-xorg, We also disabled a bunch of tests because of their
    perceived reliance on a DDX. The cause was libtool missing some object files
    that never ended up in libxservertest.la. Only the xfree86 test has a true
    dependency on XORG.
    
    DIX_LIB was pointing to dix.O (instead of libdix.la) when
    DTRACE_SPECIAL_OBJECTS was defined. libdix.la should be part of XSERVER_LIBS
    but dix.O is not a recognised libtool object, so it got skipped for
    libxservertest.a. Only in the XORG case would we add DIX_LIB and OS_LIB
    manually, thus forcing linkage with the dtrace-generated objects.
    
    Fixing this by packaging up the dtrace-generated files as part of
    libdix.la/libos.la doesn't work for Solaris (and possible others), so simply
    always force linkage against the DIX_LIB/OS_LIB in the case of dtrace objects.
    
    Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
    Reviewed-by: Alan Coopersmith <alan.coopersmith at oracle.com>
    Tested-by: Alan Coopersmith <alan.coopersmith at oracle.com>

diff --git a/test/Makefile.am b/test/Makefile.am
index aa018c9..34f53fc 100644
--- a/test/Makefile.am
+++ b/test/Makefile.am
@@ -23,11 +23,9 @@ INCLUDES += -I$(top_srcdir)/hw/xfree86/parser \
 endif
 TEST_LDADD=libxservertest.la $(XORG_SYS_LIBS) $(XSERVER_SYS_LIBS) $(GLX_SYS_LIBS)
 
-if XORG
 if SPECIAL_DTRACE_OBJECTS
 TEST_LDADD += $(OS_LIB) $(DIX_LIB)
 endif
-endif
 
 xkb_LDADD=$(TEST_LDADD)
 input_LDADD=$(TEST_LDADD)


More information about the xorg-commit mailing list