Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0c207340 authored by Lucas Dupin's avatar Lucas Dupin
Browse files

Fix for SurfaceView out of a view hierarchy

At most of the time, developers rely on GLSurfaceView to manage
the OpenGL lifecycle. This means that a SurfaceView might not
always have a ViewRootImpl.

Test: select timelapse wallpaper and set it.
Bug: 37363390
Change-Id: I3cdb1ec2a6e91cfad65fd823a7436f0010c0859c
parent d210ce63
Loading
Loading
Loading
Loading
+9 −1
Original line number Diff line number Diff line
@@ -295,7 +295,15 @@ public class SurfaceView extends View implements ViewRootImpl.WindowStoppedCallb

    @Override
    protected void onDetachedFromWindow() {
        getViewRootImpl().removeWindowStoppedCallback(this);
        ViewRootImpl viewRoot = getViewRootImpl();
        // It's possible to create a SurfaceView using the default constructor and never
        // attach it to a view hierarchy, this is a common use case when dealing with
        // OpenGL. A developer will probably create a new GLSurfaceView, and let it manage
        // the lifecycle. Instead of attaching it to a view, he/she can just pass
        // the SurfaceHolder forward, most live wallpapers do it.
        if (viewRoot != null) {
            viewRoot.removeWindowStoppedCallback(this);
        }

        mAttachedToWindow = false;
        if (mGlobalListenersAdded) {