Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2588648b authored by Sascha Prueter's avatar Sascha Prueter Committed by Android Git Automerger
Browse files

am 203f69f0: Merge "Call setSize to sync Surface to SurfaceFlinger. DO NOT MERGE" into jb-mr1.1-dev

* commit '203f69f0':
  Call setSize to sync Surface to SurfaceFlinger. DO NOT MERGE
parents fa455b47 203f69f0
Loading
Loading
Loading
Loading
+18 −1
Original line number Diff line number Diff line
@@ -225,6 +225,9 @@ public class Surface implements Parcelable {
    // non compatibility mode.
    private Matrix mCompatibleMatrix;

    private int mWidth;
    private int mHeight;

    private native void nativeCreate(SurfaceSession session, String name,
            int w, int h, int format, int flags)
            throws OutOfResourcesException;
@@ -330,6 +333,8 @@ public class Surface implements Parcelable {
        checkHeadless();

        mName = name;
        mWidth = w;
        mHeight = h;
        nativeCreate(session, name, w, h, format, flags);

        mCloseGuard.open("release");
@@ -538,7 +543,7 @@ public class Surface implements Parcelable {

    /** @hide */
    public void setPosition(int x, int y) {
        nativeSetPosition((float)x, (float)y);
        nativeSetPosition(x, y);
    }

    /** @hide */
@@ -548,9 +553,21 @@ public class Surface implements Parcelable {

    /** @hide */
    public void setSize(int w, int h) {
        mWidth = w;
        mHeight = h;
        nativeSetSize(w, h);
    }

    /** @hide */
    public int getWidth() {
        return mWidth;
    }

    /** @hide */
    public int getHeight() {
        return mHeight;
    }

    /** @hide */
    public void hide() {
        nativeSetFlags(SURFACE_HIDDEN, SURFACE_HIDDEN);
+1 −1
Original line number Diff line number Diff line
@@ -12327,7 +12327,7 @@ public final class ActivityManagerService extends ActivityManagerNative
                }
                newConfig.seq = mConfigurationSeq;
                mConfiguration = newConfig;
                Slog.i(TAG, "Config changed: " + newConfig);
                Slog.i(TAG, "Config changes=" + Integer.toHexString(changes) + " " + newConfig);
                final Configuration configCopy = new Configuration(mConfiguration);
                
+52 −38
Original line number Diff line number Diff line
@@ -5800,6 +5800,8 @@ public class WindowManagerService extends IWindowManager.Stub
            // Figure out the part of the screen that is actually the app.
            boolean including = false;
            final WindowList windows = displayContent.getWindowList();
            try {
                Surface.openTransaction();
                for (int i = windows.size() - 1; i >= 0; i--) {
                    WindowState ws = windows.get(i);
                    if (!ws.mHasSurface) {
@@ -5828,8 +5830,17 @@ public class WindowManagerService extends IWindowManager.Stub
                    // window.
                    including = !ws.mIsImWindow && !ws.isFullscreen(dw, dh);

                if (maxLayer < ws.mWinAnimator.mSurfaceLayer) {
                    maxLayer = ws.mWinAnimator.mSurfaceLayer;
                    final WindowStateAnimator winAnimator = ws.mWinAnimator;

                    // The setSize() method causes all previous Surface transactions to sync to
                    // the SurfaceFlinger. This will force any outstanding setLayer calls to be
                    // synced as well for screen capture. Without this we can get black bitmaps.
                    Surface surface = winAnimator.mSurface;
                    surface.setSize(surface.getWidth(), surface.getHeight());


                    if (maxLayer < winAnimator.mSurfaceLayer) {
                        maxLayer = winAnimator.mSurfaceLayer;
                    }

                    // Don't include wallpaper in bounds calculation
@@ -5843,7 +5854,10 @@ public class WindowManagerService extends IWindowManager.Stub
                        frame.union(left, top, right, bottom);
                    }
                }
            } finally {
                Surface.closeTransaction();
                Binder.restoreCallingIdentity(ident);
            }

            // Constrain frame to the screen size.
            frame.intersect(0, 0, dw, dh);