diff options
author | Mathias Agopian <mathias@google.com> | 2012-07-24 20:43:54 -0700 |
---|---|---|
committer | Mathias Agopian <mathias@google.com> | 2012-07-24 20:43:54 -0700 |
commit | 8b33f032327f8de0dcc0e6d0d43ed80f834b51f6 (patch) | |
tree | d6228a0088740fe5f5c73f405f353bffd121bbae /libs/gui/ISurfaceComposer.cpp | |
parent | 921e6ac4b7610a178285898d191eb0e3afe906c0 (diff) | |
download | frameworks_native-8b33f032327f8de0dcc0e6d0d43ed80f834b51f6.zip frameworks_native-8b33f032327f8de0dcc0e6d0d43ed80f834b51f6.tar.gz frameworks_native-8b33f032327f8de0dcc0e6d0d43ed80f834b51f6.tar.bz2 |
update SF binder protocol to support setting display attributes
no change of functionality -- the old behavior is implemented
on top of this new protocol.
this new protocol will allow, eventually, to pass informations
about displays and layer stacks.
Change-Id: Ic6c2295e61ec8ecbc8ce01ab7664e35d928202fc
Diffstat (limited to 'libs/gui/ISurfaceComposer.cpp')
-rw-r--r-- | libs/gui/ISurfaceComposer.cpp | 38 |
1 files changed, 28 insertions, 10 deletions
diff --git a/libs/gui/ISurfaceComposer.cpp b/libs/gui/ISurfaceComposer.cpp index bc550bf..60341ff 100644 --- a/libs/gui/ISurfaceComposer.cpp +++ b/libs/gui/ISurfaceComposer.cpp @@ -76,18 +76,29 @@ public: return interface_cast<IMemoryHeap>(reply.readStrongBinder()); } - virtual void setTransactionState(const Vector<ComposerState>& state, - int orientation, uint32_t flags) + virtual void setTransactionState( + const Vector<ComposerState>& state, + const Vector<DisplayState>& displays, + uint32_t flags) { Parcel data, reply; data.writeInterfaceToken(ISurfaceComposer::getInterfaceDescriptor()); - Vector<ComposerState>::const_iterator b(state.begin()); - Vector<ComposerState>::const_iterator e(state.end()); - data.writeInt32(state.size()); - for ( ; b != e ; ++b ) { - b->write(data); + { + Vector<ComposerState>::const_iterator b(state.begin()); + Vector<ComposerState>::const_iterator e(state.end()); + data.writeInt32(state.size()); + for ( ; b != e ; ++b ) { + b->write(data); + } + } + { + Vector<DisplayState>::const_iterator b(displays.begin()); + Vector<DisplayState>::const_iterator e(displays.end()); + data.writeInt32(displays.size()); + for ( ; b != e ; ++b ) { + b->write(data); + } } - data.writeInt32(orientation); data.writeInt32(flags); remote()->transact(BnSurfaceComposer::SET_TRANSACTION_STATE, data, &reply); } @@ -244,9 +255,16 @@ status_t BnSurfaceComposer::onTransact( s.read(data); state.add(s); } - int orientation = data.readInt32(); + count = data.readInt32(); + DisplayState d; + Vector<DisplayState> displays; + displays.setCapacity(count); + for (size_t i=0 ; i<count ; i++) { + d.read(data); + displays.add(d); + } uint32_t flags = data.readInt32(); - setTransactionState(state, orientation, flags); + setTransactionState(state, displays, flags); } break; case BOOT_FINISHED: { CHECK_INTERFACE(ISurfaceComposer, data, reply); |