From 02d91ccb0955252153206061a44340f051077624 Mon Sep 17 00:00:00 2001 From: Peter Hutterer Date: Thu, 21 Jun 2012 15:42:17 +1000 Subject: [PATCH 1/3] 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 Reviewed-by: Alan Coopersmith Tested-by: Alan Coopersmith --- test/Makefile.am | 2 -- 1 file changed, 2 deletions(-) diff --git a/test/Makefile.am b/test/Makefile.am index aa018c962..34f53fc1e 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) From 4dbbcdf64563cb95f83c04b2442cb7e868384264 Mon Sep 17 00:00:00 2001 From: Daniel d'Andrada Date: Thu, 26 Jul 2012 17:31:57 -0300 Subject: [PATCH 2/3] 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 Reviewed-by: Chase Douglas Signed-off-by: Peter Hutterer --- Xi/exevents.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Xi/exevents.c b/Xi/exevents.c index 9f6ec84b9..494d07e20 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; From 7328900042b9c1312aed48753fd6054e64613e4c Mon Sep 17 00:00:00 2001 From: Alan Coopersmith Date: Mon, 30 Jul 2012 23:37:06 -0700 Subject: [PATCH 3/3] 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 Reviewed-by: Peter Hutterer Signed-off-by: Peter Hutterer --- Xi/xiproperty.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Xi/xiproperty.c b/Xi/xiproperty.c index ca731042c..4beedcf6d 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; } }