Loading libs/gui/ISurfaceComposer.cpp +6 −6 Original line number Diff line number Diff line Loading @@ -69,7 +69,7 @@ public: const sp<IBinder>& applyToken, const InputWindowCommands& commands, int64_t desiredPresentTime, const cached_buffer_t& uncacheBuffer, const client_cache_t& uncacheBuffer, const std::vector<ListenerCallbacks>& listenerCallbacks) { Parcel data, reply; data.writeInterfaceToken(ISurfaceComposer::getInterfaceDescriptor()); Loading @@ -88,8 +88,8 @@ public: data.writeStrongBinder(applyToken); commands.write(data); data.writeInt64(desiredPresentTime); data.writeStrongBinder(uncacheBuffer.token); data.writeUint64(uncacheBuffer.cacheId); data.writeWeakBinder(uncacheBuffer.token); data.writeUint64(uncacheBuffer.id); if (data.writeVectorSize(listenerCallbacks) == NO_ERROR) { for (const auto& [listener, callbackIds] : listenerCallbacks) { Loading Loading @@ -991,9 +991,9 @@ status_t BnSurfaceComposer::onTransact( int64_t desiredPresentTime = data.readInt64(); cached_buffer_t uncachedBuffer; uncachedBuffer.token = data.readStrongBinder(); uncachedBuffer.cacheId = data.readUint64(); client_cache_t uncachedBuffer; uncachedBuffer.token = data.readWeakBinder(); uncachedBuffer.id = data.readUint64(); std::vector<ListenerCallbacks> listenerCallbacks; int32_t listenersSize = data.readInt32(); Loading libs/gui/LayerState.cpp +4 −4 Original line number Diff line number Diff line Loading @@ -87,8 +87,8 @@ status_t layer_state_t::write(Parcel& output) const colorTransform.asArray(), 16 * sizeof(float)); output.writeFloat(cornerRadius); output.writeBool(hasListenerCallbacks); output.writeStrongBinder(cachedBuffer.token); output.writeUint64(cachedBuffer.cacheId); output.writeWeakBinder(cachedBuffer.token); output.writeUint64(cachedBuffer.id); output.writeParcelable(metadata); output.writeFloat(bgColorAlpha); Loading Loading @@ -157,8 +157,8 @@ status_t layer_state_t::read(const Parcel& input) colorTransform = mat4(static_cast<const float*>(input.readInplace(16 * sizeof(float)))); cornerRadius = input.readFloat(); hasListenerCallbacks = input.readBool(); cachedBuffer.token = input.readStrongBinder(); cachedBuffer.cacheId = input.readUint64(); cachedBuffer.token = input.readWeakBinder(); cachedBuffer.id = input.readUint64(); input.readParcelable(&metadata); bgColorAlpha = input.readFloat(); Loading libs/gui/SurfaceComposerClient.cpp +3 −3 Original line number Diff line number Diff line Loading @@ -388,9 +388,9 @@ void SurfaceComposerClient::doDropReferenceTransaction(const sp<IBinder>& handle void SurfaceComposerClient::doUncacheBufferTransaction(uint64_t cacheId) { sp<ISurfaceComposer> sf(ComposerService::getComposerService()); cached_buffer_t uncacheBuffer; client_cache_t uncacheBuffer; uncacheBuffer.token = BufferCache::getInstance().getToken(); uncacheBuffer.cacheId = cacheId; uncacheBuffer.id = cacheId; sp<IBinder> applyToken = IInterface::asBinder(TransactionCompletedListener::getIInstance()); sf->setTransactionState({}, {}, 0, applyToken, {}, -1, uncacheBuffer, {}); Loading Loading @@ -424,7 +424,7 @@ void SurfaceComposerClient::Transaction::cacheBuffers() { } s->what |= layer_state_t::eCachedBufferChanged; s->cachedBuffer.token = BufferCache::getInstance().getToken(); s->cachedBuffer.cacheId = cacheId; s->cachedBuffer.id = cacheId; // If we have more buffers than the size of the cache, we should stop caching so we don't // evict other buffers in this transaction Loading libs/gui/include/gui/ISurfaceComposer.h +2 −2 Original line number Diff line number Diff line Loading @@ -44,7 +44,7 @@ namespace android { // ---------------------------------------------------------------------------- struct cached_buffer_t; struct client_cache_t; struct ComposerState; struct DisplayState; struct DisplayInfo; Loading Loading @@ -137,7 +137,7 @@ public: const sp<IBinder>& applyToken, const InputWindowCommands& inputWindowCommands, int64_t desiredPresentTime, const cached_buffer_t& uncacheBuffer, const client_cache_t& uncacheBuffer, const std::vector<ListenerCallbacks>& listenerCallbacks) = 0; /* signal that we're done booting. Loading libs/gui/include/gui/LayerState.h +8 −4 Original line number Diff line number Diff line Loading @@ -40,9 +40,13 @@ namespace android { class Parcel; class ISurfaceComposerClient; struct cached_buffer_t { sp<IBinder> token = nullptr; uint64_t cacheId; struct client_cache_t { wp<IBinder> token = nullptr; uint64_t id; bool operator==(const client_cache_t& other) const { return id == other.id; } bool isValid() const { return token != nullptr; } }; /* Loading Loading @@ -187,7 +191,7 @@ struct layer_state_t { InputWindowInfo inputInfo; #endif cached_buffer_t cachedBuffer; client_cache_t cachedBuffer; LayerMetadata metadata; Loading Loading
libs/gui/ISurfaceComposer.cpp +6 −6 Original line number Diff line number Diff line Loading @@ -69,7 +69,7 @@ public: const sp<IBinder>& applyToken, const InputWindowCommands& commands, int64_t desiredPresentTime, const cached_buffer_t& uncacheBuffer, const client_cache_t& uncacheBuffer, const std::vector<ListenerCallbacks>& listenerCallbacks) { Parcel data, reply; data.writeInterfaceToken(ISurfaceComposer::getInterfaceDescriptor()); Loading @@ -88,8 +88,8 @@ public: data.writeStrongBinder(applyToken); commands.write(data); data.writeInt64(desiredPresentTime); data.writeStrongBinder(uncacheBuffer.token); data.writeUint64(uncacheBuffer.cacheId); data.writeWeakBinder(uncacheBuffer.token); data.writeUint64(uncacheBuffer.id); if (data.writeVectorSize(listenerCallbacks) == NO_ERROR) { for (const auto& [listener, callbackIds] : listenerCallbacks) { Loading Loading @@ -991,9 +991,9 @@ status_t BnSurfaceComposer::onTransact( int64_t desiredPresentTime = data.readInt64(); cached_buffer_t uncachedBuffer; uncachedBuffer.token = data.readStrongBinder(); uncachedBuffer.cacheId = data.readUint64(); client_cache_t uncachedBuffer; uncachedBuffer.token = data.readWeakBinder(); uncachedBuffer.id = data.readUint64(); std::vector<ListenerCallbacks> listenerCallbacks; int32_t listenersSize = data.readInt32(); Loading
libs/gui/LayerState.cpp +4 −4 Original line number Diff line number Diff line Loading @@ -87,8 +87,8 @@ status_t layer_state_t::write(Parcel& output) const colorTransform.asArray(), 16 * sizeof(float)); output.writeFloat(cornerRadius); output.writeBool(hasListenerCallbacks); output.writeStrongBinder(cachedBuffer.token); output.writeUint64(cachedBuffer.cacheId); output.writeWeakBinder(cachedBuffer.token); output.writeUint64(cachedBuffer.id); output.writeParcelable(metadata); output.writeFloat(bgColorAlpha); Loading Loading @@ -157,8 +157,8 @@ status_t layer_state_t::read(const Parcel& input) colorTransform = mat4(static_cast<const float*>(input.readInplace(16 * sizeof(float)))); cornerRadius = input.readFloat(); hasListenerCallbacks = input.readBool(); cachedBuffer.token = input.readStrongBinder(); cachedBuffer.cacheId = input.readUint64(); cachedBuffer.token = input.readWeakBinder(); cachedBuffer.id = input.readUint64(); input.readParcelable(&metadata); bgColorAlpha = input.readFloat(); Loading
libs/gui/SurfaceComposerClient.cpp +3 −3 Original line number Diff line number Diff line Loading @@ -388,9 +388,9 @@ void SurfaceComposerClient::doDropReferenceTransaction(const sp<IBinder>& handle void SurfaceComposerClient::doUncacheBufferTransaction(uint64_t cacheId) { sp<ISurfaceComposer> sf(ComposerService::getComposerService()); cached_buffer_t uncacheBuffer; client_cache_t uncacheBuffer; uncacheBuffer.token = BufferCache::getInstance().getToken(); uncacheBuffer.cacheId = cacheId; uncacheBuffer.id = cacheId; sp<IBinder> applyToken = IInterface::asBinder(TransactionCompletedListener::getIInstance()); sf->setTransactionState({}, {}, 0, applyToken, {}, -1, uncacheBuffer, {}); Loading Loading @@ -424,7 +424,7 @@ void SurfaceComposerClient::Transaction::cacheBuffers() { } s->what |= layer_state_t::eCachedBufferChanged; s->cachedBuffer.token = BufferCache::getInstance().getToken(); s->cachedBuffer.cacheId = cacheId; s->cachedBuffer.id = cacheId; // If we have more buffers than the size of the cache, we should stop caching so we don't // evict other buffers in this transaction Loading
libs/gui/include/gui/ISurfaceComposer.h +2 −2 Original line number Diff line number Diff line Loading @@ -44,7 +44,7 @@ namespace android { // ---------------------------------------------------------------------------- struct cached_buffer_t; struct client_cache_t; struct ComposerState; struct DisplayState; struct DisplayInfo; Loading Loading @@ -137,7 +137,7 @@ public: const sp<IBinder>& applyToken, const InputWindowCommands& inputWindowCommands, int64_t desiredPresentTime, const cached_buffer_t& uncacheBuffer, const client_cache_t& uncacheBuffer, const std::vector<ListenerCallbacks>& listenerCallbacks) = 0; /* signal that we're done booting. Loading
libs/gui/include/gui/LayerState.h +8 −4 Original line number Diff line number Diff line Loading @@ -40,9 +40,13 @@ namespace android { class Parcel; class ISurfaceComposerClient; struct cached_buffer_t { sp<IBinder> token = nullptr; uint64_t cacheId; struct client_cache_t { wp<IBinder> token = nullptr; uint64_t id; bool operator==(const client_cache_t& other) const { return id == other.id; } bool isValid() const { return token != nullptr; } }; /* Loading Loading @@ -187,7 +191,7 @@ struct layer_state_t { InputWindowInfo inputInfo; #endif cached_buffer_t cachedBuffer; client_cache_t cachedBuffer; LayerMetadata metadata; Loading