OSDN Git Service

Fix NPE in detecting panoramas.
authorGeorge Mount <mount@google.com>
Tue, 23 Oct 2012 21:28:58 +0000 (14:28 -0700)
committerGeorge Mount <mount@google.com>
Tue, 23 Oct 2012 21:28:58 +0000 (14:28 -0700)
 Bug 7398022

Change-Id: Iae646c424ffbe552d014f563c8f4e5e4385b4724

src/com/android/gallery3d/app/PanoramaMetadataSupport.java
src_pd/com/android/gallery3d/util/LightCycleHelper.java

index d404225..ba0c9e7 100644 (file)
@@ -20,6 +20,7 @@ import com.android.gallery3d.data.MediaObject.PanoramaSupportCallback;
 import com.android.gallery3d.data.PanoramaMetadataJob;
 import com.android.gallery3d.util.Future;
 import com.android.gallery3d.util.FutureListener;
+import com.android.gallery3d.util.LightCycleHelper;
 import com.android.gallery3d.util.LightCycleHelper.PanoramaMetadata;
 
 import java.util.ArrayList;
@@ -77,13 +78,16 @@ public class PanoramaMetadataSupport implements FutureListener<PanoramaMetadata>
     public void onFutureDone(Future<PanoramaMetadata> future) {
         synchronized (mLock) {
             mPanoramaMetadata = future.get();
+            if (mPanoramaMetadata == null) {
+                // Error getting panorama data from file. Treat as not panorama.
+                mPanoramaMetadata = LightCycleHelper.NOT_PANORAMA;
+            }
             for (PanoramaSupportCallback cb : mCallbacksWaiting) {
-                cb.panoramaInfoAvailable(mMediaObject,
-                        mPanoramaMetadata.mUsePanoramaViewer,
+                cb.panoramaInfoAvailable(mMediaObject, mPanoramaMetadata.mUsePanoramaViewer,
                         mPanoramaMetadata.mIsPanorama360);
             }
             mGetPanoMetadataTask = null;
             mCallbacksWaiting = null;
         }
-   }
+    }
 }
index 68c0195..bceeea6 100644 (file)
@@ -61,7 +61,7 @@ public class LightCycleHelper {
         }
     }
 
-    private static final PanoramaMetadata NOT_PANORAMA = new PanoramaMetadata(false, false);
+    public static final PanoramaMetadata NOT_PANORAMA = new PanoramaMetadata(false, false);
 
     public static void setupCaptureIntent(Context context, Intent it, String outputDir) {
         /* Do nothing */