summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--core/java/android/tv/TvInputService.java9
-rw-r--r--services/core/java/com/android/server/tv/TvInputManagerService.java4
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);
}
}