Loading src/com/android/customization/picker/grid/GridOptionPreviewer.java +18 −35 Original line number Diff line number Diff line Loading @@ -15,9 +15,8 @@ */ package com.android.customization.picker.grid; import android.content.Context; import android.os.Bundle; import android.os.Message; import android.os.RemoteException; import android.view.Surface; import android.view.SurfaceHolder; import android.view.SurfaceView; Loading @@ -25,19 +24,18 @@ import android.view.ViewGroup; import com.android.customization.model.grid.GridOption; import com.android.customization.model.grid.GridOptionsManager; import com.android.wallpaper.picker.WorkspaceSurfaceHolderCallback; import com.android.wallpaper.util.SurfaceViewUtils; /** A class to load the {@link GridOption} preview to the view. */ class GridOptionPreviewer { private final WorkspaceSurfaceHolderCallback mSurfaceCallback = new WorkspaceSurfaceHolderCallback(); private final GridOptionsManager mGridManager; private final ViewGroup mPreviewContainer; private SurfaceView mGridOptionSurface; private GridOption mGridOption; private GridOptionSurfaceHolderCallback mSurfaceCallback; GridOptionPreviewer(GridOptionsManager gridManager, ViewGroup previewContainer) { mGridManager = gridManager; Loading Loading @@ -69,53 +67,38 @@ class GridOptionPreviewer { private void updateWorkspacePreview() { // Reattach SurfaceView to trigger #surfaceCreated to update preview for different option. mPreviewContainer.removeAllViews(); mSurfaceCallback.mLastSurface = null; if (mSurfaceCallback != null) { mSurfaceCallback.resetLastSurface(); } if (mGridOptionSurface == null) { mGridOptionSurface = new SurfaceView(mPreviewContainer.getContext()); mGridOptionSurface.setLayoutParams(new ViewGroup.LayoutParams( ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)); mGridOptionSurface.setZOrderMediaOverlay(true); mSurfaceCallback = new GridOptionSurfaceHolderCallback(mGridOptionSurface, mGridOptionSurface.getContext()); mGridOptionSurface.getHolder().addCallback(mSurfaceCallback); } mPreviewContainer.addView(mGridOptionSurface); } // TODO(158163054): Refactor and use with WorkspaceSurfaceHolderCallback. private class WorkspaceSurfaceHolderCallback implements SurfaceHolder.Callback { private Surface mLastSurface; private Message mCallback; private class GridOptionSurfaceHolderCallback extends WorkspaceSurfaceHolderCallback { private GridOptionSurfaceHolderCallback(SurfaceView workspaceSurface, Context context) { super(workspaceSurface, context); } @Override public void surfaceCreated(SurfaceHolder holder) { if (mLastSurface != holder.getSurface() && mGridOption != null) { mLastSurface = holder.getSurface(); Bundle result = mGridManager.renderPreview( SurfaceViewUtils.createSurfaceViewRequest(mGridOptionSurface), mGridOption.name); if (result != null) { mGridOptionSurface.setChildSurfacePackage( SurfaceViewUtils.getSurfacePackage(result)); mCallback = SurfaceViewUtils.getCallback(result); } if (mGridOption != null) { super.surfaceCreated(holder); } } @Override public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {} @Override public void surfaceDestroyed(SurfaceHolder holder) {} public void cleanUp() { if (mCallback != null) { try { mCallback.replyTo.send(mCallback); } catch (RemoteException e) { e.printStackTrace(); } finally { mCallback = null; } } protected Bundle renderPreview(SurfaceView workspaceSurface) { return mGridManager.renderPreview( SurfaceViewUtils.createSurfaceViewRequest(workspaceSurface), mGridOption.name); } } } Loading
src/com/android/customization/picker/grid/GridOptionPreviewer.java +18 −35 Original line number Diff line number Diff line Loading @@ -15,9 +15,8 @@ */ package com.android.customization.picker.grid; import android.content.Context; import android.os.Bundle; import android.os.Message; import android.os.RemoteException; import android.view.Surface; import android.view.SurfaceHolder; import android.view.SurfaceView; Loading @@ -25,19 +24,18 @@ import android.view.ViewGroup; import com.android.customization.model.grid.GridOption; import com.android.customization.model.grid.GridOptionsManager; import com.android.wallpaper.picker.WorkspaceSurfaceHolderCallback; import com.android.wallpaper.util.SurfaceViewUtils; /** A class to load the {@link GridOption} preview to the view. */ class GridOptionPreviewer { private final WorkspaceSurfaceHolderCallback mSurfaceCallback = new WorkspaceSurfaceHolderCallback(); private final GridOptionsManager mGridManager; private final ViewGroup mPreviewContainer; private SurfaceView mGridOptionSurface; private GridOption mGridOption; private GridOptionSurfaceHolderCallback mSurfaceCallback; GridOptionPreviewer(GridOptionsManager gridManager, ViewGroup previewContainer) { mGridManager = gridManager; Loading Loading @@ -69,53 +67,38 @@ class GridOptionPreviewer { private void updateWorkspacePreview() { // Reattach SurfaceView to trigger #surfaceCreated to update preview for different option. mPreviewContainer.removeAllViews(); mSurfaceCallback.mLastSurface = null; if (mSurfaceCallback != null) { mSurfaceCallback.resetLastSurface(); } if (mGridOptionSurface == null) { mGridOptionSurface = new SurfaceView(mPreviewContainer.getContext()); mGridOptionSurface.setLayoutParams(new ViewGroup.LayoutParams( ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)); mGridOptionSurface.setZOrderMediaOverlay(true); mSurfaceCallback = new GridOptionSurfaceHolderCallback(mGridOptionSurface, mGridOptionSurface.getContext()); mGridOptionSurface.getHolder().addCallback(mSurfaceCallback); } mPreviewContainer.addView(mGridOptionSurface); } // TODO(158163054): Refactor and use with WorkspaceSurfaceHolderCallback. private class WorkspaceSurfaceHolderCallback implements SurfaceHolder.Callback { private Surface mLastSurface; private Message mCallback; private class GridOptionSurfaceHolderCallback extends WorkspaceSurfaceHolderCallback { private GridOptionSurfaceHolderCallback(SurfaceView workspaceSurface, Context context) { super(workspaceSurface, context); } @Override public void surfaceCreated(SurfaceHolder holder) { if (mLastSurface != holder.getSurface() && mGridOption != null) { mLastSurface = holder.getSurface(); Bundle result = mGridManager.renderPreview( SurfaceViewUtils.createSurfaceViewRequest(mGridOptionSurface), mGridOption.name); if (result != null) { mGridOptionSurface.setChildSurfacePackage( SurfaceViewUtils.getSurfacePackage(result)); mCallback = SurfaceViewUtils.getCallback(result); } if (mGridOption != null) { super.surfaceCreated(holder); } } @Override public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {} @Override public void surfaceDestroyed(SurfaceHolder holder) {} public void cleanUp() { if (mCallback != null) { try { mCallback.replyTo.send(mCallback); } catch (RemoteException e) { e.printStackTrace(); } finally { mCallback = null; } } protected Bundle renderPreview(SurfaceView workspaceSurface) { return mGridManager.renderPreview( SurfaceViewUtils.createSurfaceViewRequest(workspaceSurface), mGridOption.name); } } }