diff options
4 files changed, 52 insertions, 3 deletions
diff --git a/src/com/android/gallery3d/filtershow/FilterShowActivity.java b/src/com/android/gallery3d/filtershow/FilterShowActivity.java index eb5c25899..56680b012 100644 --- a/src/com/android/gallery3d/filtershow/FilterShowActivity.java +++ b/src/com/android/gallery3d/filtershow/FilterShowActivity.java @@ -117,6 +117,7 @@ public class FilterShowActivity extends FragmentActivity implements OnItemClickL private WeakReference<ProgressDialog> mSavingProgressDialog; private LoadBitmapTask mLoadBitmapTask; + private boolean mLoading = true; private CategoryAdapter mCategoryLooksAdapter = null; private CategoryAdapter mCategoryBordersAdapter = null; @@ -132,6 +133,7 @@ public class FilterShowActivity extends FragmentActivity implements OnItemClickL if (onlyUsePortrait) { setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); } + MasterImage.setMaster(mMasterImage); clearGalleryBitmapPool(); @@ -320,6 +322,7 @@ public class FilterShowActivity extends FragmentActivity implements OnItemClickL } private void startLoadBitmap(Uri uri) { + mLoading = true; final View loading = findViewById(R.id.loading); final View imageShow = findViewById(R.id.imageShow); imageShow.setVisibility(View.INVISIBLE); @@ -457,7 +460,7 @@ public class FilterShowActivity extends FragmentActivity implements OnItemClickL @Override protected void onPostExecute(Boolean result) { - + MasterImage.setMaster(mMasterImage); if (isCancelled()) { return; } @@ -495,6 +498,7 @@ public class FilterShowActivity extends FragmentActivity implements OnItemClickL if (mAction == TINY_PLANET_ACTION) { showRepresentation(mCategoryFiltersAdapter.getTinyPlanet()); } + mLoading = false; super.onPostExecute(result); } @@ -634,6 +638,7 @@ public class FilterShowActivity extends FragmentActivity implements OnItemClickL @Override public void onPause() { super.onPause(); + rsPause(); if (mShareActionProvider != null) { mShareActionProvider.setOnShareTargetSelectedListener(null); } @@ -642,11 +647,48 @@ public class FilterShowActivity extends FragmentActivity implements OnItemClickL @Override public void onResume() { super.onResume(); + rsResume(); if (mShareActionProvider != null) { mShareActionProvider.setOnShareTargetSelectedListener(this); } } + private void rsResume() { + ImageFilter.setActivityForMemoryToasts(this); + MasterImage.setMaster(mMasterImage); + if (CachingPipeline.getRenderScriptContext() == null) { + CachingPipeline.createRenderscriptContext(this); + } + FiltersManager.setResources(getResources()); + if (!mLoading) { + Bitmap largeBitmap = mImageLoader.getOriginalBitmapLarge(); + FilteringPipeline pipeline = FilteringPipeline.getPipeline(); + pipeline.setOriginal(largeBitmap); + float previewScale = (float) largeBitmap.getWidth() / + (float) mImageLoader.getOriginalBounds().width(); + pipeline.setPreviewScaleFactor(previewScale); + Bitmap highresBitmap = mImageLoader.getOriginalBitmapHighres(); + if (highresBitmap != null) { + float highResPreviewScale = (float) highresBitmap.getWidth() / + (float) mImageLoader.getOriginalBounds().width(); + pipeline.setHighResPreviewScaleFactor(highResPreviewScale); + } + pipeline.turnOnPipeline(true); + MasterImage.getImage().setOriginalGeometry(largeBitmap); + } + } + + private void rsPause() { + FilteringPipeline.getPipeline().turnOnPipeline(false); + FilteringPipeline.reset(); + ImageFilter.resetStatics(); + FiltersManager.getPreviewManager().freeRSFilterScripts(); + FiltersManager.getManager().freeRSFilterScripts(); + FiltersManager.getHighresManager().freeRSFilterScripts(); + FiltersManager.reset(); + CachingPipeline.destroyRenderScriptContext(); + } + @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { diff --git a/src/com/android/gallery3d/filtershow/cache/CachingPipeline.java b/src/com/android/gallery3d/filtershow/cache/CachingPipeline.java index e3c77000b..8760c4a09 100644 --- a/src/com/android/gallery3d/filtershow/cache/CachingPipeline.java +++ b/src/com/android/gallery3d/filtershow/cache/CachingPipeline.java @@ -91,7 +91,9 @@ public class CachingPipeline { } public static synchronized void destroyRenderScriptContext() { - sRS.destroy(); + if (sRS != null) { + sRS.destroy(); + } sRS = null; sResources = null; } diff --git a/src/com/android/gallery3d/filtershow/editors/EditorStraighten.java b/src/com/android/gallery3d/filtershow/editors/EditorStraighten.java index 3c0c01733..4c071dc69 100644 --- a/src/com/android/gallery3d/filtershow/editors/EditorStraighten.java +++ b/src/com/android/gallery3d/filtershow/editors/EditorStraighten.java @@ -39,7 +39,7 @@ public class EditorStraighten extends Editor implements EditorInfo { @Override public String calculateUserMessage(Context context, String effectName, Object parameterValue) { String apply = context.getString(R.string.apply_effect); - apply += " " + effectName + " " + parameterValue; + apply += " " + effectName; return apply; } diff --git a/src/com/android/gallery3d/filtershow/imageshow/MasterImage.java b/src/com/android/gallery3d/filtershow/imageshow/MasterImage.java index 658d8bc6c..5e5d70b7c 100644 --- a/src/com/android/gallery3d/filtershow/imageshow/MasterImage.java +++ b/src/com/android/gallery3d/filtershow/imageshow/MasterImage.java @@ -91,6 +91,11 @@ public class MasterImage implements RenderingRequestCaller { private MasterImage() { } + // TODO: remove singleton + public static void setMaster(MasterImage master) { + sMasterImage = master; + } + public static MasterImage getImage() { if (sMasterImage == null) { sMasterImage = new MasterImage(); |