diff options
-rw-r--r-- | core/java/android/tv/TvInputService.java | 9 | ||||
-rw-r--r-- | services/core/java/com/android/server/tv/TvInputManagerService.java | 4 |
2 files changed, 13 insertions, 0 deletions
diff --git a/core/java/android/tv/TvInputService.java b/core/java/android/tv/TvInputService.java index 636e3b4..70e7f95 100644 --- a/core/java/android/tv/TvInputService.java +++ b/core/java/android/tv/TvInputService.java @@ -150,6 +150,7 @@ public abstract class TvInputService extends Service { private final KeyEvent.DispatcherState mDispatcherState = new KeyEvent.DispatcherState(); private final WindowManager mWindowManager; private WindowManager.LayoutParams mWindowParams; + private Surface mSurface; private View mOverlayView; private boolean mOverlayViewEnabled; private IBinder mWindowToken; @@ -346,6 +347,10 @@ public abstract class TvInputService extends Service { */ void release() { onRelease(); + if (mSurface != null) { + mSurface.release(); + mSurface = null; + } removeOverlayView(true); } @@ -354,6 +359,10 @@ public abstract class TvInputService extends Service { */ void setSurface(Surface surface) { onSetSurface(surface); + if (mSurface != null) { + mSurface.release(); + } + mSurface = surface; // TODO: Handle failure. } diff --git a/services/core/java/com/android/server/tv/TvInputManagerService.java b/services/core/java/com/android/server/tv/TvInputManagerService.java index 649f9dc..50dd27d 100644 --- a/services/core/java/com/android/server/tv/TvInputManagerService.java +++ b/services/core/java/com/android/server/tv/TvInputManagerService.java @@ -554,6 +554,10 @@ public final class TvInputManagerService extends SystemService { } } } finally { + if (surface != null) { + // surface is not used in TvInputManagerService. + surface.release(); + } Binder.restoreCallingIdentity(identity); } } |