OSDN Git Service

Prevent crash in Home when using widgets whose ids collide with Home's
authorRomain Guy <romainguy@android.com>
Thu, 5 Nov 2009 21:36:15 +0000 (13:36 -0800)
committerRomain Guy <romainguy@android.com>
Thu, 5 Nov 2009 23:40:35 +0000 (15:40 -0800)
resources.

Bug #2228943.

Approved by mcleron, triaged by ryanpc.

Change-Id: Idf40f3b09502ae5d0d3b9a6a72c265a2de2ffca2

core/java/android/appwidget/AppWidgetHostView.java
libs/ui/FramebufferNativeWindow.cpp

index bb0cbe9..2f719f3 100644 (file)
@@ -123,8 +123,15 @@ public class AppWidgetHostView extends FrameLayout {
 
     @Override
     protected void dispatchRestoreInstanceState(SparseArray<Parcelable> container) {
-        ParcelableSparseArray jail = (ParcelableSparseArray) container.get(generateId());
+        final Parcelable parcelable = container.get(generateId());
+
+        ParcelableSparseArray jail = null;
+        if (parcelable != null && parcelable instanceof ParcelableSparseArray) {
+            jail = (ParcelableSparseArray) parcelable;
+        }
+
         if (jail == null) jail = new ParcelableSparseArray();
+
         super.dispatchRestoreInstanceState(jail);
     }
 
@@ -140,7 +147,7 @@ public class AppWidgetHostView extends FrameLayout {
 
     /**
      * Process a set of {@link RemoteViews} coming in as an update from the
-     * AppWidget provider. Will animate into these new views as needed.
+     * AppWidget provider. Will animate into these new views as needed
      */
     public void updateAppWidget(RemoteViews remoteViews) {
         if (LOGD) Log.d(TAG, "updateAppWidget called mOld=" + mOld);
index c5e22e5..0efba9c 100644 (file)
@@ -118,6 +118,8 @@ FramebufferNativeWindow::FramebufferNativeWindow()
         LOGE_IF(err, "fb buffer 1 allocation failed w=%d, h=%d, err=%s",
                 fbDev->width, fbDev->height, strerror(-err));
 
+        LOGE("xDpi %d", fbDev->xdpi);
+        LOGE("yDpi %d", fbDev->ydpi);
         const_cast<uint32_t&>(android_native_window_t::flags) = fbDev->flags; 
         const_cast<float&>(android_native_window_t::xdpi) = fbDev->xdpi;
         const_cast<float&>(android_native_window_t::ydpi) = fbDev->ydpi;