OSDN Git Service

Fixes EDIT intents.
authorRuben Brunk <rubenbrunk@google.com>
Wed, 24 Apr 2013 22:46:15 +0000 (15:46 -0700)
committerRuben Brunk <rubenbrunk@google.com>
Thu, 25 Apr 2013 17:33:43 +0000 (10:33 -0700)
Bug: 8712238

Change-Id: I63bb07dc304b2745a29e3bf7510e8b38ccb59c48

src/com/android/gallery3d/filtershow/FilterShowActivity.java
src/com/android/gallery3d/filtershow/cache/CachingPipeline.java
src/com/android/gallery3d/filtershow/imageshow/MasterImage.java

index eb5c258..56680b0 100644 (file)
@@ -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()) {
index e3c7700..8760c4a 100644 (file)
@@ -91,7 +91,9 @@ public class CachingPipeline {
     }
 
     public static synchronized void destroyRenderScriptContext() {
-        sRS.destroy();
+        if (sRS != null) {
+            sRS.destroy();
+        }
         sRS = null;
         sResources = null;
     }
index 658d8bc..5e5d70b 100644 (file)
@@ -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();