Chromium Code Reviews| Index: platform_tools/android/app/src/com/skia/SkiaSampleActivity.java |
| diff --git a/platform_tools/android/app/src/com/skia/SkiaSampleActivity.java b/platform_tools/android/app/src/com/skia/SkiaSampleActivity.java |
| index 62f81a58f5808086a28d6f2446f6cae8c29a4bfe..c7a8fd9500ff61febbf97005d6d3e36642e3c818 100644 |
| --- a/platform_tools/android/app/src/com/skia/SkiaSampleActivity.java |
| +++ b/platform_tools/android/app/src/com/skia/SkiaSampleActivity.java |
| @@ -38,25 +38,34 @@ public class SkiaSampleActivity extends Activity |
| setContentView(R.layout.layout); |
| mTitle = (TextView) findViewById(R.id.title_view); |
| - mSampleView = new SkiaSampleView(this); |
| mSlideList = new ArrayAdapter<String>(this, android.R.layout.simple_expandable_list_item_1); |
| try { |
| System.loadLibrary("skia_android"); |
| System.loadLibrary("SampleApp"); |
| - LinearLayout holder = (LinearLayout) findViewById(R.id.holder); |
| - holder.addView(mSampleView, new LinearLayout.LayoutParams( |
| - ViewGroup.LayoutParams.MATCH_PARENT, |
| - ViewGroup.LayoutParams.MATCH_PARENT)); |
| + createSampleView(false, 0); |
| setupActionBar(); |
| - |
| } catch (UnsatisfiedLinkError e) { |
| mTitle.setText("ERROR: native library could not be loaded"); |
| } |
| } |
| + private void createSampleView(boolean useOpenGLAPI, int msaaSampleCount) { |
| + if (mSampleView != null) { |
| + ViewGroup viewGroup = (ViewGroup) mSampleView.getParent(); |
| + viewGroup.removeView(mSampleView); |
| + mSampleView.terminate(); |
| + } |
| + |
| + mSampleView = new SkiaSampleView(this, useOpenGLAPI, msaaSampleCount); |
| + LinearLayout holder = (LinearLayout) findViewById(R.id.holder); |
| + holder.addView(mSampleView, new LinearLayout.LayoutParams( |
| + ViewGroup.LayoutParams.MATCH_PARENT, |
| + ViewGroup.LayoutParams.MATCH_PARENT)); |
| + } |
| + |
| private void setupActionBar() { |
| ActionBar.OnNavigationListener navigationCallback = new ActionBar.OnNavigationListener() { |
| @Override |
| @@ -76,7 +85,7 @@ public class SkiaSampleActivity extends Activity |
| @Override |
| protected void onResume () { |
| super.onResume(); |
| - if (mSampleView.getWidth() > 0 && mSampleView.getHeight() > 0) { |
| + if (mSampleView != null && mSampleView.getWidth() > 0 && mSampleView.getHeight() > 0) { |
| //TODO try mSampleView.requestRender() instead |
| mSampleView.inval(); |
| } |
| @@ -84,7 +93,9 @@ public class SkiaSampleActivity extends Activity |
| @Override |
| public void onDestroy() { |
| - mSampleView.terminate(); |
| + if (mSampleView != null) { |
| + mSampleView.terminate(); |
| + } |
| super.onDestroy(); |
| } |
| @@ -95,7 +106,25 @@ public class SkiaSampleActivity extends Activity |
| } |
| @Override |
| + public boolean onPrepareOptionsMenu(Menu menu) { |
| + if (mSampleView != null) { |
| + boolean usesOpenGLAPI = mSampleView.getUsesOpenGLAPI(); |
| + boolean isMSAA4 = mSampleView.getMSAASampleCount() == 4; |
| + |
| + ((MenuItem) menu.findItem(R.id.glcontext_opengles)).setChecked(!usesOpenGLAPI && !isMSAA4); |
|
djsollen
2013/11/07 16:57:43
style nit, but a few of these lines exceed 100 cha
Kimmo Kinnunen
2013/11/20 13:45:00
Done.
|
| + ((MenuItem) menu.findItem(R.id.glcontext_msaa4_opengles)).setChecked(!usesOpenGLAPI && isMSAA4); |
| + ((MenuItem) menu.findItem(R.id.glcontext_opengl)).setChecked(usesOpenGLAPI && !isMSAA4); |
| + ((MenuItem) menu.findItem(R.id.glcontext_msaa4_opengl)).setChecked(usesOpenGLAPI && isMSAA4); |
| + } |
| + return true; |
| + } |
| + |
| + @Override |
| public boolean onOptionsItemSelected(MenuItem item) { |
| + if (mSampleView == null) { |
| + return false; |
| + } |
| + |
| switch (item.getItemId()) { |
| case R.id.overview: |
| mSampleView.showOverview(); |
| @@ -124,6 +153,14 @@ public class SkiaSampleActivity extends Activity |
| case R.id.save_to_pdf: |
| mSampleView.saveToPDF(); |
| return true; |
| + case R.id.glcontext_opengles: |
| + return setOpenGLContextSettings(false, 0); |
| + case R.id.glcontext_msaa4_opengles: |
| + return setOpenGLContextSettings(false, 4); |
| + case R.id.glcontext_opengl: |
| + return setOpenGLContextSettings(true, 0); |
| + case R.id.glcontext_msaa4_opengl: |
| + return setOpenGLContextSettings(true, 4); |
| default: |
| return false; |
| } |
| @@ -198,4 +235,17 @@ public class SkiaSampleActivity extends Activity |
| } |
| }.start(); |
| } |
| + |
| + private boolean setOpenGLContextSettings(boolean requestedOpenGLAPI, int requestedSampleCount) { |
| + if (mSampleView != null && |
| + mSampleView.getMSAASampleCount() == requestedSampleCount && |
| + mSampleView.getUsesOpenGLAPI() == requestedOpenGLAPI) { |
| + return true; |
| + } |
| + |
| + createSampleView(requestedOpenGLAPI, requestedSampleCount); |
| + |
| + return (mSampleView.getMSAASampleCount() == 0) == (requestedSampleCount == 0) && |
| + mSampleView.getUsesOpenGLAPI() == requestedOpenGLAPI; |
| + } |
| } |