dix: clean up the GestureInfoRec on device close
Direct leak of 1080 byte(s) in 3 object(s) allocated from: #0 0x7f00a4ed8cc7 in calloc (/lib64/libasan.so.8+0xd8cc7) (BuildId: 6f17f87dc4c1aa9f9dde7c4856604c3a25ba4872) #1 0x59f740 in InitGestureClassDeviceStruct ../dix/devices.c:1692 #2 0x418a0b in xwl_pointer_proc_pointer_gestures ../hw/xwayland/xwayland-input.c:325 #3 0x598e5c in ActivateDevice ../dix/devices.c:578 #4 0x420207 in init_pointer_gestures_device ../hw/xwayland/xwayland-input.c:1677 #5 0x420bf1 in seat_handle_capabilities ../hw/xwayland/xwayland-input.c:1801 #6 0x7f00a4145055 in ffi_call_unix64 (/lib64/libffi.so.8+0x9055) (BuildId: 308041eea4a8d89d9265d3c24b7261dfbe44a61e) Acked-by: Olivier Fourdan <ofourdan@redhat.com>
This commit is contained in:
parent
83453fb51e
commit
45009fb7f5
|
@ -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);
|
||||
|
|
|
@ -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.
|
||||
*/
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Reference in New Issue