History log of /frameworks/native/services/surfaceflinger/tests/Transaction_test.cpp
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
41b08b5e97b04d726fb8bbacddbce563a1c890f9 02-Jun-2017 Robert Carr <racarr@google.com> SurfaceFlinger: Fix final cropping of child layers.

Straightforward mistake documented by the test case. Not sure how it
made it this long.

Test: Included in Transaction_test.cpp. Manual from bug. go/wm-smoke.
Bug: 37511473
Change-Id: I87a57825cca879c5519fe72fef199168f7c23479
/frameworks/native/services/surfaceflinger/tests/Transaction_test.cpp
7bf247e2db180da661b18084d50e0b389686fc0c 18-May-2017 Robert Carr <racarr@google.com> SurfaceFlinger: setGeometryAppliesWithResize crop latching fixes.

The same sort of thing we had with setPosition...not sure why I didn't
realize we would need the fixes here too! In particular we need to ensure
the following scenarios work:

1. Additional calls to set(Final)Crop while in the setGeometryAppliesWithResize
state are eventually applied.
2. Additional calls to set(Final)Crop while in the setGeometryAppliesWithResize
state are not immediately applied.
3. In LayerRejector.cpp we have to be sure we are not just latching a buffer
at the old size, which we still allow. This is the correct time to latch
the transparentRegion as it is content dependent, but doesn't represent
a size changing.

The difference between this and the original CL which was reverted has to do with
point 3. The original CL tried to solve point 3 by moving the latching logic from
the LayerRejecter in to Layer::doTransaction. However, in general doTransaction
will not be called in between Latching the buffer and drawing the frame, so this
introduced errors. The new test "FinalCropLatchingBufferOldSize" encapsulates this.

Bug: 37621737
Bug: 37531386
Test: Included in Transaction_test.cpp
Change-Id: I14bd09d01ac6b85895caa1b707d6fa7dac962074
/frameworks/native/services/surfaceflinger/tests/Transaction_test.cpp
a3ed032256c475ce13c52b0261da6a5e2ffa77be 16-May-2017 Rob Carr <racarr@google.com> Revert "SurfaceFlinger: setGeometryAppliesWithResize crop latching fixes."

This reverts commit 1e079c2804edfae77925150280fe79418e58750b.

Bug: 38331032
Change-Id: Ib703b7b80a940550487a80d8ad62947e4becae93
/frameworks/native/services/surfaceflinger/tests/Transaction_test.cpp
1e079c2804edfae77925150280fe79418e58750b 09-May-2017 Robert Carr <racarr@google.com> SurfaceFlinger: setGeometryAppliesWithResize crop latching fixes.

The same sort of thing we had with setPosition...not sure why I didn't
realize we would need the fixes here too! In particular we need to ensure
the following scenarios work:

1. Additional calls to set(Final)Crop while in the setGeometryAppliesWithResize
state are eventually applied.
2. Additional calls to set(Final)Crop while in the setGeometryAppliesWithResize
state are not immediately applied.
3. When we latch the buffer completing the resize...current hasn't been swapped
to drawing...which means our location in LayerRejector.cpp was the wrong
place to update the crop. This raises questions about whether the
Transparent region latching works.

Bug: 37531386
Test: Included in Transaction_test.
Change-Id: I5140d44fd5e591a4afe5bddc201db45f7bcb5674
/frameworks/native/services/surfaceflinger/tests/Transaction_test.cpp
412903fce3a93f411c85c54375a1851bfb370400 27-Apr-2017 Dan Stoza <stoza@google.com> SurfaceFlinger: Select which layer state to visit

Modifies the traverseIn[Reverse]ZOrder methods to also take an enum
value specifying whether to traverse the current state or the drawing
state.

This has the effect of fixing a bug where we weren't performing
transactions on a child layer because its parent was only visiting its
drawing layers (rather than its current layers) and was thus skipping
the child, which had not yet been moved from current to drawing.

Bug: 36858924
Test: ChildLayerTest.Bug36858924 doesn't hang
Change-Id: I1959f40bc07e77864ba024511d429592a398a67a
/frameworks/native/services/surfaceflinger/tests/Transaction_test.cpp
1725eeeb7db8a2c933dcc9d01cce14e17c76c6e6 27-Apr-2017 Robert Carr <racarr@google.com> SurfaceFlinger: Correct extra parent scaling with buffer transforms.

We need to account for the buffer transform when calculating the extra
parent scaling.

Bug: 37673612
Test: Regression test included in Transaction_test
Change-Id: Ice21f1ecf3789358646d95c753ee361f50c0d246
/frameworks/native/services/surfaceflinger/tests/Transaction_test.cpp
9b429f41cbd5964f96f9fb746af3b6932e4acc66 17-Apr-2017 Robert Carr <racarr@google.com> SurfaceFlinger: Inherit non-transform Scaling from parent.

When a Layer is fixed-size, we may apply additional scaling
to the buffer not accounted for in the transform. This means
that if the WindowManager calls setSize we will scale the parent
surface but not the child surfaces, breaking the contract that
the WM can treat the child surfaces as pixels in the parent.

Test: Included test in Transaction_test.
Bug: 36820947
Bug: 37344435
Change-Id: I5478bad176388fe8e5407379bc36cdfd6600ab97
/frameworks/native/services/surfaceflinger/tests/Transaction_test.cpp
db66e627ad8904491e384c64f82fc77a939b9705 11-Apr-2017 Robert Carr <racarr@google.com> SurfaceFlinger: Add parent-less relative layering.

This is a temporary functionality for the intermediate state where not
all child-surface like things in WM land are ported to use Child
Surfaces. In particular, we have ported SurfaceView to use child
surfaces and relative Z ordering. However the TV frameworks provide a
View framework component which overlays views over the SurfaceView but
below the main application window. Since we have not ported View
framework surfaces to use child layers, there is nothing the WM or
View Framework can do about this situation. Luckily the WM API's to
have requested this are @hide but we have the one media framework
component using it. In order to solve this issue we provide a method
to set Z ordering relative to another window without inheriting
its coordinate space as a child window would. This way the WM can
recognize these TYPE_APPLICATION_MEDIA_OVERLAY windows and Z-order
them at -1 with respect to the parents (and the SurfaceView can be at
-2).

Test: Included in transaction tests. Also manual test of bug repro steps with accomp frameworks/base CL
Bug: 36693738
Change-Id: I921852d3d34f67f79ec745b9703f9e679867e7a1
/frameworks/native/services/surfaceflinger/tests/Transaction_test.cpp
6452f12c95e855a96ab8f690f28914cd37de762b 21-Mar-2017 Robert Carr <racarr@google.com> SurfaceFlinger: Inherit Alpha for child surfaces.

Necessary for various animations to work correctly and
for the general goal of treating child surfaces like
pixels in the parent surface.

Test: Includes new test in SurfaceFlinger_test
Bug: None yet ;)
Change-Id: Ic8309518bd327bbba6ad2f79f265e24cf37898e7
/frameworks/native/services/surfaceflinger/tests/Transaction_test.cpp
8d5227b8416b099c884429312daf2d60496fa484 16-Mar-2017 Robert Carr <racarr@google.com> Include finalCrop in setGeometryAppliesWithResize.

A refresher on this archaic function. Normally window crop and
position apply immediately. This is so the window manager can always
crop surfaces (e.g. while docked resizing) even if the app is lagging
behind. In some cases though the apps position or cropping may depend
on whether the resize has occured or not. For example when an app
gains shadows, we need to move expand the Surface and move it by a
negative offset for the content to remain in the same place. This
movement needs to be synchronized with the buffer latching for the
expansion.

We implemented setGeometryAppliesWithResize to take care of this. At
the time it wasn't clear if it was needed for finalCrop so we let it
be. Now that we are exclusively using final crop in the pinned stack
however it is required. The same way we have an issue with position
and shadows, we have an issue with expanding the crop rect (we may
have actually been cropping out part of a larger surface that is now
supposed to be shadows).

Also includes a test suite for setGeometryAppliesWithResize behavior
which was previously untested.

Bug: 35396882
Test: SurfaceFlinger_test
Change-Id: Ie4d32162eb21154496bb231161692d18341a1e1e
/frameworks/native/services/surfaceflinger/tests/Transaction_test.cpp
77c073bdbe1b24a332056e1194a6162b7717a848 01-Mar-2017 Rob Carr <racarr@google.com> Merge changes from topic 'surfaceview-without-wm'

* changes:
Add detachChildren transaction.
Add deferTransaction variant taking GraphicBufferProducer.
3b14c2ac6af21b4d37788001908796fc0a1748d8 01-Mar-2017 Rob Carr <racarr@google.com> Merge "SurfaceFlinger: Trivial Transaction_test refactoring."
6961b6bc1f6f172745deee98e7dcb34a3668e4e6 01-Mar-2017 Mathias Agopian <mathias@google.com> Remove unneeded references to IMemory

Test: compiled & run
Bug: cleanup
Change-Id: Ifef6695275f244a420df574b3bc49adb99c93fbf
/frameworks/native/services/surfaceflinger/tests/Transaction_test.cpp
9524cb3b37a91b5741790c77ff24fd825b02bca7 13-Feb-2017 Robert Carr <racarr@google.com> Add detachChildren transaction.

Add SurfaceControl#detachChildren for use by the WindowManager.
This method is used in cases where the WM would previously preserve
windows the client tried to destroy. For example, when becoming invisible
(in the activity lifecycle sense, not in the SurfaceFlinger sense)
an app will destroy its child surfaces. Previously the WM would keep child
windows alive until the animation finishes to prevent glitches. The new
scheme for this is the WM will detach the children at this point,
at which point the parent layer becomes the owner of the children and the WM
can control the lifecycle as it wishes. I also included a test for reparentChildren
as I realized I had forgotten that.

Test: New test in Transaction_test.cpp
Change-Id: I79c22b2ccccceb9bdcc37b70c491bdf33dcf83d2
/frameworks/native/services/surfaceflinger/tests/Transaction_test.cpp
2b91c826ac5fc1d0f9370d02fd8c2373e5ca85d3 22-Feb-2017 Robert Carr <racarr@google.com> SurfaceFlinger: Trivial Transaction_test refactoring.

Make consistent use of the assertBG/FG color helpers
introduced in a past CL.

Test: Existing test passes.
Change-Id: Ic793c195e9ff8a99a3b6fbcfc9995b522c252c9a
/frameworks/native/services/surfaceflinger/tests/Transaction_test.cpp
1f0a16a5d7cd00ba7fda82e7d315afa1fd1303b9 25-Oct-2016 Robert Carr <racarr@google.com> SurfaceFlinger and libgui: Support for child layers.

Add support for parenting Layers in a tree. Layers
follow scene-graph style rules, that is to say:
1. A child is cropped to the final bounds of the parent.
2. A child inherits the parent's transform (including position)
3. A child's Z ordering is relative to the parent and bounded between
the parents siblings.
4. A childs lifetime is bounded by it's parents lifetime.

Test: New tests in Transaction_test plus manual testing with later branches.
Change-Id: I96f8ad863665b9a70b6f845561344c297b7e6eff
/frameworks/native/services/surfaceflinger/tests/Transaction_test.cpp
426ab7b1b42ad0f67b9eccd4e068973fc6266ff7 30-Jul-2016 Mukul Sati <msati@google.com> Remove unused variable

Remove an unused local variable in surfaceflinger tests
Change-Id: I30bc41094bb3487bc1d90586eda8d1a87ccae35a
/frameworks/native/services/surfaceflinger/tests/Transaction_test.cpp
15311bd8a5e8a8b74e7abe6314c764e02491a12d 02-Jun-2016 Pablo Ceballos <pceballos@google.com> Push empty sync transaction before taking screenshot in tests

Because of ag/1043009 it's now necessary to push an empty sync
transaction before taking a screenshot to ensure that all transactions
have been applied.

Bug 29074285

Change-Id: I9f1b4a5b6b1f39e1ff26d536817aef6f40865177
/frameworks/native/services/surfaceflinger/tests/Transaction_test.cpp
05289c2b78d21308a95ea6ef8f1d8f24359147cd 15-Apr-2016 Pablo Ceballos <pceballos@google.com> SF: Don't pop pending state into mCurrentState

Let mCurrentState always represent the most up to date state, even if
there are transactions we don't want to commit yet. Past snapshots of
the state are kept in mPendingState. In doTransaction(), grab the
correct pending state from mPendingState, but save it to a local copy
that gets committed rather than overriding mCurrentState.

Bug 27205755

Change-Id: Ib0ea809da1954409787c52b8f41d7963a57a6a4c
/frameworks/native/services/surfaceflinger/tests/Transaction_test.cpp
acbe67888f0bd65d5400400f0115bae6bd6199dc 04-Mar-2016 Pablo Ceballos <pceballos@google.com> Add final crop implementation

Bug 26559810

Change-Id: Idaccd13cd625c92d18665ddecebdbb266ea365f3
/frameworks/native/services/surfaceflinger/tests/Transaction_test.cpp
5e4fcbe411f0a941d604d8a9974a02faa3fda170 02-Sep-2015 Pablo Ceballos <pceballos@google.com> SF: Improve surface flinger unit tests

- Fix compiler warnings
- Make checkPixel print out the actual/expected values on failure
- Add unit tests for setLayerStack, setFlags, and setMatrix
- Make the tests work when the display is off

Change-Id: I53ac1279b967fe06ff8cdb10d3ee4c0e2349b2d0
/frameworks/native/services/surfaceflinger/tests/Transaction_test.cpp
d575096d797628d7b39417fef23b78ca6e035d1a 28-Jul-2015 Haixia Shi <hshi@google.com> Add more SF tests to Transaction_test

TEST=verify all tests pass on hammerhead-eng
BUG=none

Change-Id: Idb4df0996ac4ebbef3784ee86bd43c584d62cf1f
/frameworks/native/services/surfaceflinger/tests/Transaction_test.cpp
5a16a62950de06d48769e29f0c68a154ed7a7a89 21-May-2015 Michael Lentine <mlentine@google.com> Fix surfaceflinger tests.

Update the screenshot code and add correct return values to surface flinger's
capturescreenshot function.

Buf: 18138368

Change-Id: Ieb42d289088589f941502fbd69da7aa939265e07
/frameworks/native/services/surfaceflinger/tests/Transaction_test.cpp
e3c697fb929c856b59fa56a8e05a2a7eba187c3d 15-Feb-2013 Mathias Agopian <mathias@google.com> Refactoring: Rename SurfaceTextureClient to Surface

Change-Id: Ibed34175ae273608393aaa5f0a7df207dc40d709
/frameworks/native/services/surfaceflinger/tests/Transaction_test.cpp
9d4e3d2f42e93e2d12bacabe97d307d30c3c20dd 25-Aug-2012 Jeff Brown <jeffbrown@google.com> Banish DisplayID from the SurfaceFlinger API.

Use only display tokens in the API to refer to new displays.

Don't require the caller to specify the display when creating
a surface (since in general a surface could be shown on
any display).

This is intended to be a minimum change just to update the API.
Note that SurfaceFlinger still uses DisplayID in a few places
internally that might cause some features not to work properly
when there are multiple displays (LayerScreenshot, for example).

Change-Id: I3d91eec2da406eefd97bcd53655d403ad865a7e6
/frameworks/native/services/surfaceflinger/tests/Transaction_test.cpp
c666cae2d5995097ec49a87e375e2afdd92802b7 26-Jul-2012 Mathias Agopian <mathias@google.com> get rid of the shared-memory control block

Change-Id: If814060aca1d2ff2619d4adcd57296983d207f7f
/frameworks/native/services/surfaceflinger/tests/Transaction_test.cpp
90ac799241f077a7b7e6c1875fd933864c8dd2a7 26-Feb-2012 Mathias Agopian <mathias@google.com> fix libgui header location

Change-Id: Iec71706cdd4f29c6904993648ce873e83ef9cafe
/frameworks/native/services/surfaceflinger/tests/Transaction_test.cpp
9d4536835248525f32f1504a3d28d5bbfa0a2910 20-Dec-2011 Steve Block <steveblock@google.com> Rename (IF_)LOGD(_IF) to (IF_)ALOGD(_IF) DO NOT MERGE

See https://android-git.corp.google.com/g/156016

Bug: 5449033
Change-Id: I4c4e33bb9df3e39e11cd985e193e6fbab4635298
/frameworks/native/services/surfaceflinger/tests/Transaction_test.cpp
23c2c5d1c6aaeaeb1804b7aa9b667e7e58c941bb 12-Oct-2011 Jamie Gennis <jgennis@google.com> SurfaceFlinger: add some layer update tests

This change adds two tests for SurfaceFlinger's behavior when updating
the position and size of a layer.

Change-Id: Id5e3ca1d7e629a3bd2c2d28275d80c7f9256d6da
/frameworks/native/services/surfaceflinger/tests/Transaction_test.cpp