diff options
author | Ruben Brunk <rubenbrunk@google.com> | 2013-04-24 15:46:15 -0700 |
---|---|---|
committer | Ruben Brunk <rubenbrunk@google.com> | 2013-04-25 10:33:43 -0700 |
commit | d7eedcd228a27536f31b4a80141fde831ebc6d86 (patch) | |
tree | d8a87f9cfbeac8a41b6a19818a618f0d7408d393 | |
parent | a63fa601615a1b5ca465fcd0ee327ceaa8e05570 (diff) | |
download | android_packages_apps_Snap-d7eedcd228a27536f31b4a80141fde831ebc6d86.tar.gz android_packages_apps_Snap-d7eedcd228a27536f31b4a80141fde831ebc6d86.tar.bz2 android_packages_apps_Snap-d7eedcd228a27536f31b4a80141fde831ebc6d86.zip |
Fixes EDIT intents.
Bug: 8712238
Change-Id: I63bb07dc304b2745a29e3bf7510e8b38ccb59c48
3 files changed, 51 insertions, 2 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/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(); |