summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRuben Brunk <rubenbrunk@google.com>2013-04-24 15:46:15 -0700
committerRuben Brunk <rubenbrunk@google.com>2013-04-25 10:33:43 -0700
commitd7eedcd228a27536f31b4a80141fde831ebc6d86 (patch)
treed8a87f9cfbeac8a41b6a19818a618f0d7408d393
parenta63fa601615a1b5ca465fcd0ee327ceaa8e05570 (diff)
downloadandroid_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
-rw-r--r--src/com/android/gallery3d/filtershow/FilterShowActivity.java44
-rw-r--r--src/com/android/gallery3d/filtershow/cache/CachingPipeline.java4
-rw-r--r--src/com/android/gallery3d/filtershow/imageshow/MasterImage.java5
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();