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

Commit 6d4cde2a authored by Tracy Zhou's avatar Tracy Zhou Committed by Android (Google) Code Review
Browse files

Merge "Fix "Preview for grid goes missing after turning off and back on the...

Merge "Fix "Preview for grid goes missing after turning off and back on the screen"" into ub-launcher3-master
parents 243f888f 631bc0c8
Loading
Loading
Loading
Loading
+39 −32
Original line number Diff line number Diff line
@@ -28,6 +28,7 @@ import android.os.RemoteException;
import android.util.DisplayMetrics;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.Surface;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.View;
@@ -284,39 +285,15 @@ public class GridFragment extends AppbarFragment {
        private ImageView mPreview;
        private SurfaceView mPreviewSurface;

        private GridPreviewPage(Activity activity, int id, Uri previewUri, String name, int rows,
                int cols) {
            super(null, activity);
            mPageId = id;
            mPreviewAsset = new ContentUriAsset(activity, previewUri,
                    RequestOptions.fitCenterTransform());
            mName = name;
            mRows = rows;
            mCols = cols;
            mActivity = activity;
        }

        @Override
        public void setCard(CardView card) {
            super.setCard(card);
            mPreview = card.findViewById(R.id.grid_preview_image);
            mPreviewSurface = card.findViewById(R.id.grid_preview_surface);
        }

        public void bindPreviewContent() {
            Resources resources = card.getResources();
            bindWallpaperIfAvailable();
            final boolean usesSurfaceViewForPreview = mGridManager.usesSurfaceView();
            mPreview.setVisibility(usesSurfaceViewForPreview ? View.GONE : View.VISIBLE);
            mPreviewSurface.setVisibility(usesSurfaceViewForPreview ? View.VISIBLE : View.GONE);
            if (usesSurfaceViewForPreview) {
                mPreviewSurface.setZOrderOnTop(true);
                mPreviewSurface.getHolder().addCallback(new SurfaceHolder.Callback() {
        private final SurfaceHolder.Callback mSurfaceCallback = new SurfaceHolder.Callback() {

            private Surface mLastSurface;
            private Message mCallback;

            @Override
            public void surfaceCreated(SurfaceHolder holder) {
                if (mLastSurface != holder.getSurface()) {
                    mLastSurface = holder.getSurface();
                    Bundle result = mGridManager.renderPreview(
                            SurfaceViewUtils.createSurfaceViewRequest(mPreviewSurface), mName);
                    if (result != null) {
@@ -325,6 +302,7 @@ public class GridFragment extends AppbarFragment {
                        mCallback = SurfaceViewUtils.getCallback(result);
                    }
                }
            }

            @Override
            public void surfaceChanged(SurfaceHolder holder, int format, int width,
@@ -342,7 +320,36 @@ public class GridFragment extends AppbarFragment {
                    }
                }
            }
                });
        };

        private GridPreviewPage(Activity activity, int id, Uri previewUri, String name, int rows,
                int cols) {
            super(null, activity);
            mPageId = id;
            mPreviewAsset = new ContentUriAsset(activity, previewUri,
                    RequestOptions.fitCenterTransform());
            mName = name;
            mRows = rows;
            mCols = cols;
            mActivity = activity;
        }

        @Override
        public void setCard(CardView card) {
            super.setCard(card);
            mPreview = card.findViewById(R.id.grid_preview_image);
            mPreviewSurface = card.findViewById(R.id.grid_preview_surface);
        }

        public void bindPreviewContent() {
            Resources resources = card.getResources();
            bindWallpaperIfAvailable();
            final boolean usesSurfaceViewForPreview = mGridManager.usesSurfaceView();
            mPreview.setVisibility(usesSurfaceViewForPreview ? View.GONE : View.VISIBLE);
            mPreviewSurface.setVisibility(usesSurfaceViewForPreview ? View.VISIBLE : View.GONE);
            if (usesSurfaceViewForPreview) {
                mPreviewSurface.setZOrderOnTop(true);
                mPreviewSurface.getHolder().addCallback(mSurfaceCallback);
            } else {
                mPreviewAsset.loadDrawableWithTransition(mActivity,
                        mPreview /* imageView */,