From 8f73b5dfac9be998fcd6cdc30bcb1e4b210ba575 Mon Sep 17 00:00:00 2001 From: Christopher Tate Date: Mon, 12 Sep 2011 15:22:12 -0700 Subject: [PATCH] Fix bug 5297302 - Remember to release surface after starting drag Forgetting to release it was "safe" in that GC would eventually tidy it up anyway, but in the meantime it was possible for a user to do lots of drag operations, racing ahead of the progress of the garbage collector, and wind up with drags failing because we'd run out of surface slots due to all the piled up stale drag shadows. Change-Id: I7ac93b13cc9996dda04a404571fbc44cb4314694 --- core/java/android/view/View.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/core/java/android/view/View.java b/core/java/android/view/View.java index 1cc428bd3da6c..65e98578ac4bd 100644 --- a/core/java/android/view/View.java +++ b/core/java/android/view/View.java @@ -13174,6 +13174,10 @@ public class View implements Drawable.Callback, Drawable.Callback2, KeyEvent.Cal shadowSize.x, shadowSize.y, shadowTouchPoint.x, shadowTouchPoint.y, data); if (ViewDebug.DEBUG_DRAG) Log.d(VIEW_LOG_TAG, "performDrag returned " + okay); + + // Off and running! Release our local surface instance; the drag + // shadow surface is now managed by the system process. + surface.release(); } } catch (Exception e) { Log.e(VIEW_LOG_TAG, "Unable to initiate drag", e);