From 0ae653c84b82a15e1049be3a638f0b09fd751f48 Mon Sep 17 00:00:00 2001 From: Nathan Sweet Date: Sat, 27 Apr 2024 20:18:51 -0400 Subject: [PATCH] Fixed ActorGestureListener holding actor references forever. These references can prevent GC! --- .../gdx/scenes/scene2d/utils/ActorGestureListener.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/gdx/src/com/badlogic/gdx/scenes/scene2d/utils/ActorGestureListener.java b/gdx/src/com/badlogic/gdx/scenes/scene2d/utils/ActorGestureListener.java index 5e6cc75d6c9..f7d59008157 100644 --- a/gdx/src/com/badlogic/gdx/scenes/scene2d/utils/ActorGestureListener.java +++ b/gdx/src/com/badlogic/gdx/scenes/scene2d/utils/ActorGestureListener.java @@ -114,10 +114,12 @@ public boolean handle (Event e) { touchDown(event, tmpCoords.x, tmpCoords.y, event.getPointer(), event.getButton()); if (event.getTouchFocus()) event.getStage().addTouchFocus(this, event.getListenerActor(), event.getTarget(), event.getPointer(), event.getButton()); + actor = null; return true; case touchUp: if (event.isTouchFocusCancel()) { detector.reset(); + touchDownTarget = null; return false; } this.event = event; @@ -125,11 +127,14 @@ public boolean handle (Event e) { detector.touchUp(event.getStageX(), event.getStageY(), event.getPointer(), event.getButton()); actor.stageToLocalCoordinates(tmpCoords.set(event.getStageX(), event.getStageY())); touchUp(event, tmpCoords.x, tmpCoords.y, event.getPointer(), event.getButton()); + actor = null; + touchDownTarget = null; return true; case touchDragged: this.event = event; actor = event.getListenerActor(); detector.touchDragged(event.getStageX(), event.getStageY(), event.getPointer()); + actor = null; return true; } return false; @@ -170,6 +175,7 @@ public GestureDetector getGestureDetector () { return detector; } + /** Returns null if there is no current touch down. */ public @Null Actor getTouchDownTarget () { return touchDownTarget; }