From 36991744a221c30a47085442e6416bdde40b85e8 Mon Sep 17 00:00:00 2001 From: Dianne Hackborn Date: Tue, 11 Oct 2011 21:35:26 -0700 Subject: [PATCH] Fix issue #5445966: WindowManager reporting -long on prime when it shouldn't be. The window manager now uses the app screen dimensions to compute the various configuration properties, as it should. This means that prime is official a "not long" device. Poor prime. It probably feels inadequate now. Because it is. Oh and all that other stuff? Debugging logs. Turned off. And why the heck not, debugging logs are great. Change-Id: Iaaf8ef270d986d34fd046d699ef4c0ecea1981fc --- core/java/android/view/Display.java | 5 +++ .../java/com/android/server/wm/DragState.java | 6 ++-- .../server/wm/ScreenRotationAnimation.java | 10 +++--- .../java/com/android/server/wm/Session.java | 6 ++-- .../server/wm/WindowManagerService.java | 33 ++++++++++++------- .../com/android/server/wm/WindowState.java | 6 ++-- 6 files changed, 43 insertions(+), 23 deletions(-) diff --git a/core/java/android/view/Display.java b/core/java/android/view/Display.java index 3bd0f76dfc3b6..ad2283ea9285e 100644 --- a/core/java/android/view/Display.java +++ b/core/java/android/view/Display.java @@ -117,6 +117,11 @@ public class Display { outSize.x = getRawWidth(); outSize.y = getRawHeight(); } + if (false) { + RuntimeException here = new RuntimeException("here"); + here.fillInStackTrace(); + Slog.v(TAG, "Returning display size: " + outSize, here); + } if (DEBUG_DISPLAY_SIZE && doCompat) Slog.v( TAG, "Returning display size: " + outSize); } catch (RemoteException e) { diff --git a/services/java/com/android/server/wm/DragState.java b/services/java/com/android/server/wm/DragState.java index 25cc259ac776d..73cd64e9f735e 100644 --- a/services/java/com/android/server/wm/DragState.java +++ b/services/java/com/android/server/wm/DragState.java @@ -274,7 +274,8 @@ class DragState { final int myPid = Process.myPid(); // Move the surface to the given touch - if (WindowManagerService.SHOW_TRANSACTIONS) Slog.i(WindowManagerService.TAG, ">>> OPEN TRANSACTION notifyMoveLw"); + if (WindowManagerService.SHOW_LIGHT_TRANSACTIONS) Slog.i( + WindowManagerService.TAG, ">>> OPEN TRANSACTION notifyMoveLw"); Surface.openTransaction(); try { mSurface.setPosition(x - mThumbOffsetX, y - mThumbOffsetY); @@ -283,7 +284,8 @@ class DragState { (int)(x - mThumbOffsetX) + "," + (int)(y - mThumbOffsetY) + ")"); } finally { Surface.closeTransaction(); - if (WindowManagerService.SHOW_TRANSACTIONS) Slog.i(WindowManagerService.TAG, "<<< CLOSE TRANSACTION notifyMoveLw"); + if (WindowManagerService.SHOW_LIGHT_TRANSACTIONS) Slog.i( + WindowManagerService.TAG, "<<< CLOSE TRANSACTION notifyMoveLw"); } // Tell the affected window diff --git a/services/java/com/android/server/wm/ScreenRotationAnimation.java b/services/java/com/android/server/wm/ScreenRotationAnimation.java index e25638f248886..91576e7ac0d6c 100644 --- a/services/java/com/android/server/wm/ScreenRotationAnimation.java +++ b/services/java/com/android/server/wm/ScreenRotationAnimation.java @@ -81,7 +81,7 @@ class ScreenRotationAnimation { mOriginalHeight = originalHeight; if (!inTransaction) { - if (WindowManagerService.SHOW_TRANSACTIONS) Slog.i(WindowManagerService.TAG, + if (WindowManagerService.SHOW_LIGHT_TRANSACTIONS) Slog.i(WindowManagerService.TAG, ">>> OPEN TRANSACTION ScreenRotationAnimation"); Surface.openTransaction(); } @@ -117,7 +117,7 @@ class ScreenRotationAnimation { mSurface = null; return; } - + Paint paint = new Paint(0); paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC)); c.drawBitmap(screenshot, 0, 0, paint); @@ -127,7 +127,7 @@ class ScreenRotationAnimation { } finally { if (!inTransaction) { Surface.closeTransaction(); - if (WindowManagerService.SHOW_TRANSACTIONS) Slog.i(WindowManagerService.TAG, + if (WindowManagerService.SHOW_LIGHT_TRANSACTIONS) Slog.i(WindowManagerService.TAG, "<<< CLOSE TRANSACTION ScreenRotationAnimation"); } @@ -254,7 +254,7 @@ class ScreenRotationAnimation { mEnterAnimation.restrictDuration(maxAnimationDuration); mEnterAnimation.scaleCurrentDuration(animationScale); - if (WindowManagerService.SHOW_TRANSACTIONS) Slog.i(WindowManagerService.TAG, + if (WindowManagerService.SHOW_LIGHT_TRANSACTIONS) Slog.i(WindowManagerService.TAG, ">>> OPEN TRANSACTION ScreenRotationAnimation.dismiss"); Surface.openTransaction(); @@ -266,7 +266,7 @@ class ScreenRotationAnimation { Slog.w(TAG, "Unable to allocate black surface", e); } finally { Surface.closeTransaction(); - if (WindowManagerService.SHOW_TRANSACTIONS) Slog.i(WindowManagerService.TAG, + if (WindowManagerService.SHOW_LIGHT_TRANSACTIONS) Slog.i(WindowManagerService.TAG, "<<< CLOSE TRANSACTION ScreenRotationAnimation.dismiss"); } diff --git a/services/java/com/android/server/wm/Session.java b/services/java/com/android/server/wm/Session.java index 10882f9cbd34b..03b7546f8a7ca 100644 --- a/services/java/com/android/server/wm/Session.java +++ b/services/java/com/android/server/wm/Session.java @@ -278,7 +278,8 @@ final class Session extends IWindowSession.Stub // Make the surface visible at the proper location final Surface surface = mService.mDragState.mSurface; - if (WindowManagerService.SHOW_TRANSACTIONS) Slog.i(WindowManagerService.TAG, ">>> OPEN TRANSACTION performDrag"); + if (WindowManagerService.SHOW_LIGHT_TRANSACTIONS) Slog.i( + WindowManagerService.TAG, ">>> OPEN TRANSACTION performDrag"); Surface.openTransaction(); try { surface.setPosition(touchX - thumbCenterX, @@ -288,7 +289,8 @@ final class Session extends IWindowSession.Stub surface.show(); } finally { Surface.closeTransaction(); - if (WindowManagerService.SHOW_TRANSACTIONS) Slog.i(WindowManagerService.TAG, "<<< CLOSE TRANSACTION performDrag"); + if (WindowManagerService.SHOW_LIGHT_TRANSACTIONS) Slog.i( + WindowManagerService.TAG, "<<< CLOSE TRANSACTION performDrag"); } } diff --git a/services/java/com/android/server/wm/WindowManagerService.java b/services/java/com/android/server/wm/WindowManagerService.java index 595c256fb8eb8..0a9ef3d6711f6 100644 --- a/services/java/com/android/server/wm/WindowManagerService.java +++ b/services/java/com/android/server/wm/WindowManagerService.java @@ -169,6 +169,7 @@ public class WindowManagerService extends IWindowManager.Stub static final boolean DEBUG_SCREENSHOT = false; static final boolean SHOW_SURFACE_ALLOC = false; static final boolean SHOW_TRANSACTIONS = false; + static final boolean SHOW_LIGHT_TRANSACTIONS = false || SHOW_TRANSACTIONS; static final boolean HIDE_STACK_CRAWLS = true; static final boolean PROFILE_ORIENTATION = false; @@ -2369,7 +2370,7 @@ public class WindowManagerService extends IWindowManager.Stub synchronized (mWindowMap) { WindowState w = windowForClientLocked(session, client, false); if ((w != null) && (w.mSurface != null)) { - if (SHOW_TRANSACTIONS) Slog.i(TAG, + if (SHOW_LIGHT_TRANSACTIONS) Slog.i(TAG, ">>> OPEN TRANSACTION setTransparentRegion"); Surface.openTransaction(); try { @@ -2378,7 +2379,7 @@ public class WindowManagerService extends IWindowManager.Stub w.mSurface.setTransparentRegionHint(region); } finally { Surface.closeTransaction(); - if (SHOW_TRANSACTIONS) Slog.i(TAG, + if (SHOW_LIGHT_TRANSACTIONS) Slog.i(TAG, "<<< CLOSE TRANSACTION setTransparentRegion"); } } @@ -4905,7 +4906,8 @@ public class WindowManagerService extends IWindowManager.Stub } } - if (SHOW_TRANSACTIONS) Slog.i(TAG, ">>> OPEN TRANSACTION showStrictModeViolation"); + if (SHOW_LIGHT_TRANSACTIONS) Slog.i(TAG, + ">>> OPEN TRANSACTION showStrictModeViolation"); Surface.openTransaction(); try { if (mStrictModeFlash == null) { @@ -4914,7 +4916,8 @@ public class WindowManagerService extends IWindowManager.Stub mStrictModeFlash.setVisibility(on); } finally { Surface.closeTransaction(); - if (SHOW_TRANSACTIONS) Slog.i(TAG, "<<< CLOSE TRANSACTION showStrictModeViolation"); + if (SHOW_LIGHT_TRANSACTIONS) Slog.i(TAG, + "<<< CLOSE TRANSACTION showStrictModeViolation"); } } } @@ -5231,7 +5234,7 @@ public class WindowManagerService extends IWindowManager.Stub mInputManager.setDisplayOrientation(0, rotation); if (!inTransaction) { - if (SHOW_TRANSACTIONS) Slog.i(TAG, + if (SHOW_TRANSACTIONS) Slog.i(TAG, ">>> OPEN TRANSACTION setRotationUnchecked"); Surface.openTransaction(); } @@ -5246,7 +5249,7 @@ public class WindowManagerService extends IWindowManager.Stub } finally { if (!inTransaction) { Surface.closeTransaction(); - if (SHOW_TRANSACTIONS) Slog.i(TAG, + if (SHOW_LIGHT_TRANSACTIONS) Slog.i(TAG, "<<< CLOSE TRANSACTION setRotationUnchecked"); } } @@ -5843,6 +5846,10 @@ public class WindowManagerService extends IWindowManager.Stub final DisplayMetrics dm = mDisplayMetrics; mAppDisplayWidth = mPolicy.getNonDecorDisplayWidth(dw, dh, mRotation); mAppDisplayHeight = mPolicy.getNonDecorDisplayHeight(dw, dh, mRotation); + if (false) { + Slog.i(TAG, "Set app display size: " + mAppDisplayWidth + + " x " + mAppDisplayHeight); + } mDisplay.getMetricsWithSize(dm, mAppDisplayWidth, mAppDisplayHeight); mCompatibleScreenScale = CompatibilityInfo.computeCompatibleScaling(dm, @@ -5860,8 +5867,8 @@ public class WindowManagerService extends IWindowManager.Stub // Compute the screen layout size class. int screenLayout; - int longSize = dw; - int shortSize = dh; + int longSize = mAppDisplayWidth; + int shortSize = mAppDisplayHeight; if (longSize < shortSize) { int tmp = longSize; longSize = shortSize; @@ -6847,7 +6854,7 @@ public class WindowManagerService extends IWindowManager.Stub private void rebuildBlackFrame(boolean inTransaction) { if (!inTransaction) { - if (SHOW_TRANSACTIONS) Slog.i(TAG, + if (SHOW_LIGHT_TRANSACTIONS) Slog.i(TAG, ">>> OPEN TRANSACTION rebuildBlackFrame"); Surface.openTransaction(); } @@ -6882,7 +6889,7 @@ public class WindowManagerService extends IWindowManager.Stub } finally { if (!inTransaction) { Surface.closeTransaction(); - if (SHOW_TRANSACTIONS) Slog.i(TAG, + if (SHOW_LIGHT_TRANSACTIONS) Slog.i(TAG, "<<< CLOSE TRANSACTION rebuildBlackFrame"); } } @@ -7354,7 +7361,8 @@ public class WindowManagerService extends IWindowManager.Stub createWatermark = true; } - if (SHOW_TRANSACTIONS) Slog.i(TAG, ">>> OPEN TRANSACTION performLayoutAndPlaceSurfaces"); + if (SHOW_LIGHT_TRANSACTIONS) Slog.i(TAG, + ">>> OPEN TRANSACTION performLayoutAndPlaceSurfaces"); Surface.openTransaction(); @@ -8463,7 +8471,8 @@ public class WindowManagerService extends IWindowManager.Stub Surface.closeTransaction(); - if (SHOW_TRANSACTIONS) Slog.i(TAG, "<<< CLOSE TRANSACTION performLayoutAndPlaceSurfaces"); + if (SHOW_LIGHT_TRANSACTIONS) Slog.i(TAG, + "<<< CLOSE TRANSACTION performLayoutAndPlaceSurfaces"); if (mWatermark != null) { mWatermark.drawIfNeeded(); diff --git a/services/java/com/android/server/wm/WindowState.java b/services/java/com/android/server/wm/WindowState.java index 47f74fb4a676e..e9218181ab879 100644 --- a/services/java/com/android/server/wm/WindowState.java +++ b/services/java/com/android/server/wm/WindowState.java @@ -57,6 +57,7 @@ import java.util.ArrayList; final class WindowState implements WindowManagerPolicy.WindowState { static final boolean DEBUG_VISIBILITY = WindowManagerService.DEBUG_VISIBILITY; static final boolean SHOW_TRANSACTIONS = WindowManagerService.SHOW_TRANSACTIONS; + static final boolean SHOW_LIGHT_TRANSACTIONS = WindowManagerService.SHOW_LIGHT_TRANSACTIONS; static final boolean SHOW_SURFACE_ALLOC = WindowManagerService.SHOW_SURFACE_ALLOC; final WindowManagerService mService; @@ -671,7 +672,7 @@ final class WindowState implements WindowManagerPolicy.WindowState { WindowManagerService.TAG, "Got surface: " + mSurface + ", set left=" + mFrame.left + " top=" + mFrame.top + ", animLayer=" + mAnimLayer); - if (SHOW_TRANSACTIONS) { + if (SHOW_LIGHT_TRANSACTIONS) { Slog.i(WindowManagerService.TAG, ">>> OPEN TRANSACTION createSurfaceLocked"); WindowManagerService.logSurface(this, "CREATE pos=(" + mFrame.left + "," + mFrame.top + ") (" + @@ -700,7 +701,8 @@ final class WindowState implements WindowManagerPolicy.WindowState { mLastHidden = true; } finally { Surface.closeTransaction(); - if (SHOW_TRANSACTIONS) Slog.i(WindowManagerService.TAG, "<<< CLOSE TRANSACTION createSurfaceLocked"); + if (SHOW_LIGHT_TRANSACTIONS) Slog.i(WindowManagerService.TAG, + "<<< CLOSE TRANSACTION createSurfaceLocked"); } if (WindowManagerService.localLOGV) Slog.v( WindowManagerService.TAG, "Created surface " + this);