94c7d3d948beff287eed53e6d841e29e05cad8b3 |
|
24-Apr-2018 |
Robert Carr <racarr@google.com> |
SurfaceFlinger: Only update client parent if set. We use the idea of client with parents to allow applications to access SurfaceFlinger as long as they have an original "root" Surface granted to them from the WindowManager. Sometimes the WindowManager may reparent these child surfaces to a new surface, and so we need to update which Surface is providing this grant. However, if a client never had a root surface and is instead relying on ACCESS_SURFACE_FLINGER, e.g. the WindowManager we need to not reparent or we may end up making the client invalid when the Surface dies when we never intended to. Bug: 78301580 Bug: 62536731 Test: Manual repro of b/78301580 Change-Id: Ib18cfe86e1cec3da7808fcd01e2b7ce02bebff6d
/frameworks/native/services/surfaceflinger/Client.h
|
ccd348460ca25890a8fb709e82e6f780e3ce878e |
|
14-Mar-2018 |
rongliu <rongliu@google.com> |
Pass correct window type and app id to hw composer. 1. Set -1 as default value for window type and app id. 2. When send layer information to hal, layers inherit type and app id from parent node when parent node has valid type/appId. 3. Add window type and app id to SurfaceFlinger dumpsys. Bug: 74622357 Test: Manual test. Several things verified: 1. Android settings layer, status bar layer, nav bar layer have valid window type and appId when start android settings. 2. Layers without buffer have window type -1 and app id -1. 3. When send layers to hal, Chrome SurfaceView layer inherit type and app id from its parent (MainActivity layer). Change-Id: I8d6ad274ca18b61d1bbf6b28f7def5160b55b1e7 Merged-In: I8d6ad274ca18b61d1bbf6b28f7def5160b55b1e7
/frameworks/native/services/surfaceflinger/Client.h
|
f456f32e0f9292d71b57b3255cde416b677faac2 |
|
15-Jun-2017 |
Chia-I Wu <olv@google.com> |
surfaceflinger: protect Client::mParentLayer with a lock Updates to wp<> is not atomic. Use Client::mLock to protect mParentLayer. Bug: 38505866 Test: camera and youtube work Change-Id: I2739382d5bb99961a47c1011963b6f676d34eec6
/frameworks/native/services/surfaceflinger/Client.h
|
cae605cd5668f8107e340ad8a672c7f034147401 |
|
29-Mar-2017 |
Robert Carr <racarr@google.com> |
Fix seamless rotation with SurfaceView WM bypass. First a brief review on seamless rotation. In seamless rotation the WM will do the following atomically: 1. Update the display transform. 2. Set window transforms to make the surfaces at their old size appear at the correct location in the new coordinate space. 3. Set a flag to undo the transforms when the surfaces resize. However, windows with NATIVE_WINDOW_TRANSFORM_DISPLAY needed to be special cased. The flag will perform step 2 in terms of buffer mapping, but not in terms of bounds computation. So to compensate the WM would apply the transform to the bounds, set these bounds, and then skip applying the transform matrix (as the buffer is transformed by the flag). Now that the WM can't see the Camera view, it can't implement this special logic and the Camera view inherits the parent transform. We compensate for this in SurfaceFlinger by omitting parent rotation transform components for Surfaces with NATIVE_WINDOW_TRANSFORM_INVERSE_DISPLAY. To some extent this breaks arbitrary rotation for surfaces with NATIVE_WINDOW_TRANSFORM_INVERSE_DISPLAY but this is essentially ok: 1. We lived with that bug until N-MR1 2. We fixed it in N-MR1 because the camera was falling back to ROTATE a lot which shouldn't be happening anymore, following introduction of specifying rotation animation in manifest. Test: Rotate camera, disable HWC, rotate camera some more. Switch to front camera, repeat. Bug: 36230754 Bug: 36727915 Change-Id: Ied390c9cb3968fcce32a84ee7947f699746fdc81
/frameworks/native/services/surfaceflinger/Client.h
|
479c60c85c40fd3536b0c88036e838dc1a4c56a0 |
|
27-Jan-2017 |
Albert Chaulk <achaulk@google.com> |
Refactor how layer metadata for use by VR is propagated from WindowManager based on feedback in frameworks/base. Since windowType and ownerUid are immutable, they are sent on creation instead of separate IPC. Bug: 30984984 Test: built locally Change-Id: I380b3cdcf6aec471fc23f1e27846ab80492e8add
/frameworks/native/services/surfaceflinger/Client.h
|
1db73f66624e7d151710483dd58e03eed672f064 |
|
21-Dec-2016 |
Robert Carr <racarr@google.com> |
SurfaceFlinger: Add support for non-privileged clients. Allow clients without privilege to create child layers through scoped connections. We enable this in preparation for allowing SurfaceView to bypass the WindowManager. We include support for reparenting of all of a layer's children for the WindowManager to use in cases where one surface is replacing another (while keeping its children around). Test: Tested with corresponding SurfaceView modifications. Change-Id: I9920e6730d719113522a68788e63fb59f70d3406
/frameworks/native/services/surfaceflinger/Client.h
|
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/Client.h
|
9a9816ad3f3e2ee0d52a21e742d9bbdc3ddf25ff |
|
12-Sep-2016 |
Chih-Hung Hsieh <chh@google.com> |
Merge "Fix google-explicit-constructor warnings in surfaceflinger." am: 5e703a6ad0 am: 101b4cc9d7 am: 32db2f3c9f Change-Id: Ie75a9e21c634691243d4f5c972f2f2879c48a76e
|
342b760763300593cd20b01dac8cef61e7b25b86 |
|
01-Sep-2016 |
Chih-Hung Hsieh <chh@google.com> |
Fix google-explicit-constructor warnings in surfaceflinger. * Add explicit keyword to conversion constructors, or use NOLINT for implicit converters. Bug: 28341362 Test: build with WITH_TIDY=1 Change-Id: I94f511c3be31dc22022db6466ee9ed0c6be2bc8e
/frameworks/native/services/surfaceflinger/Client.h
|
367c5684f4d417e5176bec12d67f4e2e42738fe0 |
|
20-Jun-2016 |
Robert Carr <racarr@google.com> |
SurfaceControl: Add getTransformToDisplayInverse For seamless rotation, the window manager needs access to this flag, as it will apply the inverse display transform itself to all other windows. Bug: 28823590 Change-Id: Ifeee1078a9cb4cd01c8052570c137c6228b2f13d
/frameworks/native/services/surfaceflinger/Client.h
|
d85084b2b65828442eafaff9b811e9b6c9ca9fad |
|
20-Mar-2014 |
Svetoslav <svetoslavganov@google.com> |
Adding render stats APIs to UiAutomation (framework native). bug:12927198 Change-Id: Ibb1c07f7d89e11281e5c1f27f412a29ac6f9c4ab
/frameworks/native/services/surfaceflinger/Client.h
|
4d9b822e2c18142e55fe2611aa6cd7dc7d4a62c6 |
|
13-Mar-2013 |
Mathias Agopian <mathias@google.com> |
get rid of ISurface ISurface was only used to get the IGraphicBufferProducer from a Layer. It's now replaced by a BBinder subclass / IBinder and is only used as a handle to the surface, to both refer to it and manage its life-time. Also cleaned-up a bit the ISurfaceComposer interface and "create layer" code path. Change-Id: I68d0e02d57b862cffb31d5168c3bc10cea0906eb
/frameworks/native/services/surfaceflinger/Client.h
|
13127d8921356dff794250e04208c3ed60b3a3df |
|
06-Mar-2013 |
Mathias Agopian <mathias@google.com> |
Get rid of LayerBase. The functionality of LayerBase and Layer is folded into Layer. There wasn't a need for this abstraction anymore. Change-Id: I66511c08cc3d89009ba4deabf47e26cd4cfeaefb
/frameworks/native/services/surfaceflinger/Client.h
|
b79f61d41ef053bee1087ec612896c59f95f9686 |
|
06-Mar-2013 |
Mathias Agopian <mathias@google.com> |
fold LayerBaseClient into LayerBase Change-Id: Ic745136522df59c42f0885fd969e75ea55d09f01
/frameworks/native/services/surfaceflinger/Client.h
|
ac9fa427d4a86745e60a5f7fd8e3ea340c4db907 |
|
12-Feb-2013 |
Mathias Agopian <mathias@google.com> |
get rid of Surface identity and token we use the IBinder instead. Change-Id: I4aa0b58869ba43f19980013620051e5a261b062d
/frameworks/native/services/surfaceflinger/Client.h
|
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/Client.h
|
db403e8ff0d7727015e1a5009bab20eb7ec205bc |
|
19-Jun-2012 |
Mathias Agopian <mathias@google.com> |
split-up Client.h out of SurfaceFlinger.h Change-Id: I1993bf23e417163749d886283563a93d50b361b4
/frameworks/native/services/surfaceflinger/Client.h
|