diff options
author | Galia Peycheva <galinap@google.com> | 2021-07-28 13:36:55 +0000 |
---|---|---|
committer | Galia Peycheva <galinap@google.com> | 2021-08-02 10:04:31 +0000 |
commit | 3686bac8c3d3cde73542f5faf4241f332430b773 (patch) | |
tree | 2357a0901a10a4258ebb9e1bd017995e1d61eabb | |
parent | 0a878cabbe8464c89fdb5654b6afd90ce1c661ff (diff) | |
download | Basic-3686bac8c3d3cde73542f5faf4241f332430b773.tar.gz |
Fix Colors crashing on rotation
This CL makes the Colors dream service create a new SurfaceView and
render thread on every onAttachedToWindow.
onAttachedToWindow is called every time on a screen rotation.
Bug: 160375160
Test: verify Colors is rendered properly and doesn't crash on rotation
Change-Id: I5e76ff5c723b840503bbee113a1c6b3dff0e25dc
-rw-r--r-- | src/com/android/dreams/basic/Colors.java | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/src/com/android/dreams/basic/Colors.java b/src/com/android/dreams/basic/Colors.java index d30c174..5bff87b 100644 --- a/src/com/android/dreams/basic/Colors.java +++ b/src/com/android/dreams/basic/Colors.java @@ -53,14 +53,6 @@ public class Colors extends DreamService implements SurfaceHolder.Callback { setInteractive(false); - mSurfaceView = new SurfaceView(this); - mSurfaceView.getHolder().addCallback(this); - - if (mRendererHandlerThread == null) { - mRendererHandlerThread = new HandlerThread(TAG); - mRendererHandlerThread.start(); - mRendererHandler = new Handler(mRendererHandlerThread.getLooper()); - } } @Override @@ -68,6 +60,10 @@ public class Colors extends DreamService implements SurfaceHolder.Callback { super.onAttachedToWindow(); setInteractive(false); setFullscreen(true); + + mSurfaceView = new SurfaceView(this); + mSurfaceView.getHolder().addCallback(this); + setContentView(mSurfaceView); } @@ -76,6 +72,10 @@ public class Colors extends DreamService implements SurfaceHolder.Callback { LOG("surfaceCreated(%s, %d, %d)", holder.getSurface(), holder.getSurfaceFrame().width(), holder.getSurfaceFrame().height()); + mRendererHandlerThread = new HandlerThread(TAG); + mRendererHandlerThread.start(); + mRendererHandler = new Handler(mRendererHandlerThread.getLooper()); + mRendererHandler.post(new Runnable() { @Override public void run() { |