xserver: Branch 'input-hotplug'

Daniel Stone daniels at kemper.freedesktop.org
Mon Aug 7 18:11:24 EEST 2006


 hw/xfree86/common/xf86Xinput.c |   20 ++++++++++++--------
 1 files changed, 12 insertions(+), 8 deletions(-)

New commits:
diff-tree afcad4ad99bbfc8bdcd0f4fdd70e072108410d30 (from 98fdf874eeadd5b37413922d8afba8415d0c56bb)
Author: Daniel Stone <daniel at fooishbar.org>
Date:   Mon Aug 7 18:11:05 2006 +0300

    xfree86 ddx: always free GKE/GPE events
    free() events we get passed back from GKE and GPE so we don't just, er,
    leak them all.  *cough*.

diff --git a/hw/xfree86/common/xf86Xinput.c b/hw/xfree86/common/xf86Xinput.c
index bcae3f0..91db82e 100644
--- a/hw/xfree86/common/xf86Xinput.c
+++ b/hw/xfree86/common/xf86Xinput.c
@@ -639,7 +639,7 @@ xf86PostMotionEvent(DeviceIntPtr	device,
     int i = 0, nevents = 0;
     Bool drag = xf86SendDragEvents(device);
     LocalDevicePtr local = (LocalDevicePtr) device->public.devicePrivate;
-    xEvent *xE = NULL;
+    xEvent *events = NULL;
     int *valuators = NULL;
     int flags = 0;
 
@@ -662,14 +662,15 @@ xf86PostMotionEvent(DeviceIntPtr	device,
 #endif
     }
 
-    nevents = GetPointerEvents(&xE, device, MotionNotify, 0,
+    nevents = GetPointerEvents(&events, device, MotionNotify, 0,
                                flags, num_valuators, valuators);
 
     for (i = 0; i < nevents; i++) {
-        if (xE->u.keyButtonPointer.time > xf86Info.lastEventTime)
-            xf86Info.lastEventTime = xE->u.keyButtonPointer.time;
-        mieqEnqueue(xE++);
+        if (events->u.keyButtonPointer.time > xf86Info.lastEventTime)
+            xf86Info.lastEventTime = events->u.keyButtonPointer.time;
+        mieqEnqueue(events + i);
     }
+    xfree(events);
     
 #if 0
     if (HAS_MOTION_HISTORY(local)) {
@@ -818,8 +819,9 @@ xf86PostButtonEvent(DeviceIntPtr	device,
     for (i = 0; i < nevents; i++) {
         if (events->u.keyButtonPointer.time > xf86Info.lastEventTime)
             xf86Info.lastEventTime = events->u.keyButtonPointer.time;
-        mieqEnqueue(events++);
+        mieqEnqueue(events + i);
     }
+    xfree(events);
 }
 
 _X_EXPORT void
@@ -862,8 +864,9 @@ xf86PostKeyEvent(DeviceIntPtr	device,
     for (i = 0; i < nevents; i++) {
         if (events->u.keyButtonPointer.time > xf86Info.lastEventTime)
             xf86Info.lastEventTime = events->u.keyButtonPointer.time;
-        mieqEnqueue(events++);
+        mieqEnqueue(events + i);
     }
+    xfree(events);
 }
 
 _X_EXPORT void
@@ -885,8 +888,9 @@ xf86PostKeyboardEvent(DeviceIntPtr      
     for (i = 0; i < nevents; i++) {
         if (events->u.keyButtonPointer.time > xf86Info.lastEventTime)
             xf86Info.lastEventTime = events->u.keyButtonPointer.time;
-        mieqEnqueue(events++);
+        mieqEnqueue(events + i);
     }
+    xfree(events);
 }
 
 /* 



More information about the xorg-commit mailing list