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

Commit a40fd09f authored by Filip Gruszczynski's avatar Filip Gruszczynski
Browse files

Load background drawable before passing to backdrop renderer.

Background renderer always expects that the default background drawable
is available. We pass the drawable to the renderer in two places, so we
need to make sure to load the drawable before each.

Bug: 26345599
Change-Id: I238623ff870e26ba34bb02197611172e316d3083
parent d1d53361
Loading
Loading
Loading
Loading
+3 −0
Original line number Original line Diff line number Diff line
@@ -99,6 +99,9 @@ public class BackdropFrameRenderer extends Thread implements Choreographer.Frame
        mResizingBackgroundDrawable = resizingBackgroundDrawable;
        mResizingBackgroundDrawable = resizingBackgroundDrawable;
        mCaptionBackgroundDrawable = captionBackgroundDrawableDrawable;
        mCaptionBackgroundDrawable = captionBackgroundDrawableDrawable;
        mUserCaptionBackgroundDrawable = userCaptionBackgroundDrawable;
        mUserCaptionBackgroundDrawable = userCaptionBackgroundDrawable;
        if (mCaptionBackgroundDrawable == null) {
            mCaptionBackgroundDrawable = mResizingBackgroundDrawable;
        }
        if (statusBarColor != 0) {
        if (statusBarColor != 0) {
            mStatusBarColor = new ColorDrawable(statusBarColor);
            mStatusBarColor = new ColorDrawable(statusBarColor);
            addSystemBarNodeIfNeeded();
            addSystemBarNodeIfNeeded();
+13 −7
Original line number Original line Diff line number Diff line
@@ -1616,14 +1616,8 @@ public class DecorView extends FrameLayout implements RootViewSurfaceTaker, Wind
    void onResourcesLoaded(LayoutInflater inflater, int layoutResource) {
    void onResourcesLoaded(LayoutInflater inflater, int layoutResource) {
        mStackId = getStackId();
        mStackId = getStackId();


        mResizingBackgroundDrawable = getResizingBackgroundDrawable(
                mWindow.mBackgroundResource, mWindow.mBackgroundFallbackResource);
        if (mCaptionBackgroundDrawable == null) {
            mCaptionBackgroundDrawable = getContext().getDrawable(
                    R.drawable.decor_caption_title_focused);
        }

        if (mBackdropFrameRenderer != null) {
        if (mBackdropFrameRenderer != null) {
            loadBackgroundDrawablesIfNeeded();
            mBackdropFrameRenderer.onResourcesLoaded(
            mBackdropFrameRenderer.onResourcesLoaded(
                    this, mResizingBackgroundDrawable, mCaptionBackgroundDrawable,
                    this, mResizingBackgroundDrawable, mCaptionBackgroundDrawable,
                    mUserCaptionBackgroundDrawable, getCurrentColor(mStatusColorViewState));
                    mUserCaptionBackgroundDrawable, getCurrentColor(mStatusColorViewState));
@@ -1645,6 +1639,17 @@ public class DecorView extends FrameLayout implements RootViewSurfaceTaker, Wind
        initializeElevation();
        initializeElevation();
    }
    }


    private void loadBackgroundDrawablesIfNeeded() {
        if (mResizingBackgroundDrawable == null) {
            mResizingBackgroundDrawable = getResizingBackgroundDrawable(
                    mWindow.mBackgroundResource, mWindow.mBackgroundFallbackResource);
        }
        if (mCaptionBackgroundDrawable == null) {
            mCaptionBackgroundDrawable = getContext().getDrawable(
                    R.drawable.decor_caption_title_focused);
        }
    }

    // Free floating overlapping windows require a caption.
    // Free floating overlapping windows require a caption.
    private DecorCaptionView createDecorCaptionView(LayoutInflater inflater) {
    private DecorCaptionView createDecorCaptionView(LayoutInflater inflater) {
        DecorCaptionView decorCaptionView = null;
        DecorCaptionView decorCaptionView = null;
@@ -1815,6 +1820,7 @@ public class DecorView extends FrameLayout implements RootViewSurfaceTaker, Wind
        }
        }
        final ThreadedRenderer renderer = getHardwareRenderer();
        final ThreadedRenderer renderer = getHardwareRenderer();
        if (renderer != null) {
        if (renderer != null) {
            loadBackgroundDrawablesIfNeeded();
            mBackdropFrameRenderer = new BackdropFrameRenderer(this, renderer,
            mBackdropFrameRenderer = new BackdropFrameRenderer(this, renderer,
                    initialBounds, mResizingBackgroundDrawable, mCaptionBackgroundDrawable,
                    initialBounds, mResizingBackgroundDrawable, mCaptionBackgroundDrawable,
                    mUserCaptionBackgroundDrawable, getCurrentColor(mStatusColorViewState));
                    mUserCaptionBackgroundDrawable, getCurrentColor(mStatusColorViewState));