| Index: platform_tools/android/apps/viewer/src/main/java/org/skia/viewer/StateAdapter.java
|
| diff --git a/platform_tools/android/apps/viewer/src/main/java/org/skia/viewer/StateAdapter.java b/platform_tools/android/apps/viewer/src/main/java/org/skia/viewer/StateAdapter.java
|
| index d546c7bb3e19d520baff1a61efeaebb0ac85621c..5ee68efc3c672003f9ff271b8b671a5b932b5449 100644
|
| --- a/platform_tools/android/apps/viewer/src/main/java/org/skia/viewer/StateAdapter.java
|
| +++ b/platform_tools/android/apps/viewer/src/main/java/org/skia/viewer/StateAdapter.java
|
| @@ -1,6 +1,7 @@
|
| package org.skia.viewer;
|
|
|
| import android.view.LayoutInflater;
|
| +import android.view.SurfaceView;
|
| import android.view.View;
|
| import android.view.ViewGroup;
|
| import android.widget.AdapterView;
|
| @@ -30,6 +31,7 @@ public class StateAdapter extends BaseAdapter implements AdapterView.OnItemSelec
|
| static final String NAME = "name";
|
| static final String VALUE = "value";
|
| static final String OPTIONS = "options";
|
| + private static final String BACKEND_STATE_NAME = "Backend";
|
|
|
| ViewerActivity mViewerActivity;
|
| LinearLayout mLayout;
|
| @@ -146,6 +148,21 @@ public class StateAdapter extends BaseAdapter implements AdapterView.OnItemSelec
|
| stateItem.setTag(null); // Reset the tag to let updateDrawer update this item view.
|
| mViewerActivity.onStateChanged(stateName, stateValue);
|
| }
|
| +
|
| + // Due to the current Android limitation, we're required to recreate the SurfaceView for
|
| + // switching to/from the Raster backend.
|
| + // (Although we can switch between GPU backend without recreating the SurfaceView.)
|
| + final Object oldValue = stateItem.getTag(R.integer.value_tag_key);
|
| + if (stateName.equals(BACKEND_STATE_NAME)
|
| + && oldValue != null && !stateValue.equals(oldValue)) {
|
| + LinearLayout mainLayout = (LinearLayout) mViewerActivity.findViewById(R.id.mainLayout);
|
| + mainLayout.removeAllViews();
|
| + SurfaceView surfaceView = new SurfaceView(mViewerActivity);
|
| + surfaceView.setId(R.id.surfaceView);
|
| + surfaceView.getHolder().addCallback(mViewerActivity);
|
| + surfaceView.setOnTouchListener(mViewerActivity);
|
| + mainLayout.addView(surfaceView);
|
| + }
|
| }
|
|
|
| @Override
|
|
|