Switch to public API for surface view when rendering preview
Bug: 152003916
Test: Manual
Change-Id: I112c4de21032f09895014ffe3a01cfc06ce588d2
diff --git a/src/com/android/customization/model/grid/GridOptionsManager.java b/src/com/android/customization/model/grid/GridOptionsManager.java
index a334f5e..b0e0787 100644
--- a/src/com/android/customization/model/grid/GridOptionsManager.java
+++ b/src/com/android/customization/model/grid/GridOptionsManager.java
@@ -67,8 +67,8 @@
}
/** Call through content provider API to render preview */
- public void renderPreview(Bundle bundle, String gridName) {
- mProvider.renderPreview(gridName, bundle);
+ public Bundle renderPreview(Bundle bundle, String gridName) {
+ return mProvider.renderPreview(gridName, bundle);
}
private static class FetchTask extends AsyncTask<Void, Void, Pair<List<GridOption>, String>> {
diff --git a/src/com/android/customization/model/grid/LauncherGridOptionsProvider.java b/src/com/android/customization/model/grid/LauncherGridOptionsProvider.java
index 7d1d5cd..70a8fc8 100644
--- a/src/com/android/customization/model/grid/LauncherGridOptionsProvider.java
+++ b/src/com/android/customization/model/grid/LauncherGridOptionsProvider.java
@@ -118,9 +118,9 @@
* @param bundle surface view request bundle generated from
* {@link SurfaceViewRequestUtils#createSurfaceBundle(SurfaceView)}.
*/
- void renderPreview(String name, Bundle bundle) {
+ Bundle renderPreview(String name, Bundle bundle) {
bundle.putString("name", name);
- mPreviewUtils.renderPreview(bundle);
+ return mPreviewUtils.renderPreview(bundle);
}
int applyGrid(String name) {
diff --git a/src/com/android/customization/picker/grid/GridFragment.java b/src/com/android/customization/picker/grid/GridFragment.java
index 7a01f26..8a4f4b0 100644
--- a/src/com/android/customization/picker/grid/GridFragment.java
+++ b/src/com/android/customization/picker/grid/GridFragment.java
@@ -23,6 +23,8 @@
import android.graphics.drawable.BitmapDrawable;
import android.net.Uri;
import android.os.Bundle;
+import android.os.Message;
+import android.os.RemoteException;
import android.util.DisplayMetrics;
import android.util.Log;
import android.view.LayoutInflater;
@@ -47,7 +49,6 @@
import com.android.customization.picker.BasePreviewAdapter;
import com.android.customization.picker.BasePreviewAdapter.PreviewPage;
import com.android.customization.widget.OptionSelectorController;
-import com.android.systemui.shared.system.SurfaceViewRequestUtils;
import com.android.wallpaper.R;
import com.android.wallpaper.asset.Asset;
import com.android.wallpaper.asset.ContentUriAsset;
@@ -55,6 +56,7 @@
import com.android.wallpaper.module.CurrentWallpaperInfoFactory;
import com.android.wallpaper.module.InjectorProvider;
import com.android.wallpaper.picker.ToolbarFragment;
+import com.android.wallpaper.util.SurfaceViewUtils;
import com.android.wallpaper.widget.PreviewPager;
import com.bumptech.glide.Glide;
@@ -282,11 +284,18 @@
if (usesSurfaceViewForPreview) {
mPreviewSurface.setZOrderOnTop(true);
mPreviewSurface.getHolder().addCallback(new SurfaceHolder.Callback() {
+
+ private Message mCallback;
+
@Override
public void surfaceCreated(SurfaceHolder holder) {
- Bundle bundle = SurfaceViewRequestUtils.createSurfaceBundle(
- mPreviewSurface);
- mGridManager.renderPreview(bundle, mName);
+ Bundle result = mGridManager.renderPreview(
+ SurfaceViewUtils.createSurfaceViewRequest(mPreviewSurface), mName);
+ if (result != null) {
+ mPreviewSurface.setChildSurfacePackage(
+ SurfaceViewUtils.getSurfacePackage(result));
+ mCallback = SurfaceViewUtils.getCallback(result);
+ }
}
@Override
@@ -294,7 +303,17 @@
int height) {}
@Override
- public void surfaceDestroyed(SurfaceHolder holder) {}
+ public void surfaceDestroyed(SurfaceHolder holder) {
+ if (mCallback != null) {
+ try {
+ mCallback.replyTo.send(mCallback);
+ } catch (RemoteException e) {
+ e.printStackTrace();
+ } finally {
+ mCallback = null;
+ }
+ }
+ }
});
} else {
mPreviewAsset.loadDrawableWithTransition(mActivity,