Don't call onSurfaceChanged() if nothing interesting has changed.
diff --git a/core/java/android/service/wallpaper/WallpaperService.java b/core/java/android/service/wallpaper/WallpaperService.java
index 80a154b..5bb07f3 100644
--- a/core/java/android/service/wallpaper/WallpaperService.java
+++ b/core/java/android/service/wallpaper/WallpaperService.java
@@ -223,7 +223,7 @@
                     ? (mWindowFlags&~WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE)
                     : (mWindowFlags|WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE);
             if (mCreated) {
-                updateSurface(false);
+                updateSurface(false, false);
             }
         }
         
@@ -291,7 +291,7 @@
         public void onSurfaceDestroyed(SurfaceHolder holder) {
         }
 
-        void updateSurface(boolean force) {
+        void updateSurface(boolean forceRelayout, boolean forceReport) {
             int myWidth = mSurfaceHolder.getRequestedWidth();
             if (myWidth <= 0) myWidth = ViewGroup.LayoutParams.FILL_PARENT;
             int myHeight = mSurfaceHolder.getRequestedHeight();
@@ -302,8 +302,8 @@
             boolean sizeChanged = mWidth != myWidth || mHeight != myHeight;
             final boolean typeChanged = mType != mSurfaceHolder.getRequestedType();
             final boolean flagsChanged = mCurWindowFlags != mWindowFlags;
-            if (force || creating || formatChanged || sizeChanged || typeChanged
-                    || flagsChanged) {
+            if (forceRelayout || creating || formatChanged || sizeChanged
+                    || typeChanged || flagsChanged) {
 
                 if (DEBUG) Log.i(TAG, "Changes: creating=" + creating
                         + " format=" + formatChanged + " size=" + sizeChanged);
@@ -382,7 +382,14 @@
                                 }
                             }
                         }
-                        if (force || creating || formatChanged || sizeChanged) {
+                        if (forceReport || creating || formatChanged || sizeChanged) {
+                            if (DEBUG) {
+                                RuntimeException e = new RuntimeException();
+                                e.fillInStackTrace();
+                                Log.w(TAG, "forceReport=" + forceReport + " creating=" + creating
+                                        + " formatChanged=" + formatChanged
+                                        + " sizeChanged=" + sizeChanged, e);
+                            }
                             onSurfaceChanged(mSurfaceHolder, mFormat,
                                     mCurWidth, mCurHeight);
                             if (callbacks != null) {
@@ -408,6 +415,7 @@
         }
         
         void attach(IWallpaperEngineWrapper wrapper) {
+            if (DEBUG) Log.v(TAG, "attach: " + this + " wrapper=" + wrapper);
             mIWallpaperEngine = wrapper;
             mCaller = wrapper.mCaller;
             mConnection = wrapper.mConnection;
@@ -423,7 +431,7 @@
             onCreate(mSurfaceHolder);
             
             mInitializing = false;
-            updateSurface(false);
+            updateSurface(false, false);
         }
         
         void detach() {
@@ -499,7 +507,7 @@
                     return;
                 }
                 case MSG_UPDATE_SURFACE:
-                    mEngine.updateSurface(false);
+                    mEngine.updateSurface(true, false);
                     break;
                 case MSG_VISIBILITY_CHANGED:
                     if (DEBUG) Log.v(TAG, "Visibility change in " + mEngine
@@ -524,7 +532,7 @@
                 } break;
                 case MSG_WINDOW_RESIZED: {
                     final boolean reportDraw = message.arg1 != 0;
-                    mEngine.updateSurface(true);
+                    mEngine.updateSurface(true, false);
                     if (reportDraw) {
                         try {
                             mEngine.mSession.finishDrawing(mEngine.mWindow);
diff --git a/services/java/com/android/server/WallpaperManagerService.java b/services/java/com/android/server/WallpaperManagerService.java
index e828681..07bab18 100644
--- a/services/java/com/android/server/WallpaperManagerService.java
+++ b/services/java/com/android/server/WallpaperManagerService.java
@@ -65,7 +65,7 @@
 
 class WallpaperManagerService extends IWallpaperManager.Stub {
     static final String TAG = "WallpaperService";
-    static final boolean DEBUG = true;
+    static final boolean DEBUG = false;
 
     Object mLock = new Object();