diff --git a/dix/devices.c b/dix/devices.c index 7150734a5..b063128df 100644 --- a/dix/devices.c +++ b/dix/devices.c @@ -827,6 +827,14 @@ FreeDeviceClass(int type, void **class) free((*t)); break; } + case XIGestureClass: + { + GestureClassPtr *g = (GestureClassPtr *) class; + + GestureFreeGestureInfo(&(*g)->gesture); + free((*g)); + break; + } case FocusClass: { FocusClassPtr *f = (FocusClassPtr *) class; @@ -941,6 +949,7 @@ FreeAllDeviceClasses(ClassesPtr classes) FreeDeviceClass(ButtonClass, (void *) &classes->button); FreeDeviceClass(FocusClass, (void *) &classes->focus); FreeDeviceClass(ProximityClass, (void *) &classes->proximity); + FreeDeviceClass(XIGestureClass, (void*) &classes->gesture); FreeFeedbackClass(KbdFeedbackClass, (void *) &classes->kbdfeed); FreeFeedbackClass(PtrFeedbackClass, (void *) &classes->ptrfeed); diff --git a/dix/gestures.c b/dix/gestures.c index 593a4a67f..43672ace5 100644 --- a/dix/gestures.c +++ b/dix/gestures.c @@ -58,6 +58,12 @@ GestureInitGestureInfo(GestureInfoPtr gi) return TRUE; } +void +GestureFreeGestureInfo(GestureInfoPtr gi) +{ + free(gi->sprite.spriteTrace); +} + /** * Given an event type returns the associated gesture event info. */ diff --git a/include/input.h b/include/input.h index f50c9524b..75c7c2df6 100644 --- a/include/input.h +++ b/include/input.h @@ -666,6 +666,7 @@ extern void TouchEmitTouchEnd(DeviceIntPtr dev, TouchPointInfoPtr ti, int flags, extern void TouchAcceptAndEnd(DeviceIntPtr dev, int touchid); extern Bool GestureInitGestureInfo(GestureInfoPtr gesture); +extern void GestureFreeGestureInfo(GestureInfoPtr gesture); extern GestureInfoPtr GestureBeginGesture(DeviceIntPtr dev, InternalEvent *ev); extern GestureInfoPtr GestureFindActiveByEventType(DeviceIntPtr dev, int type); extern void GestureEndGesture(GestureInfoPtr gi);