Loading libs/gui/ITransactionCompletedListener.cpp +3 −1 Original line number Original line Diff line number Diff line Loading @@ -48,6 +48,7 @@ status_t SurfaceStats::writeToParcel(Parcel* output) const { } else { } else { err = output->writeBool(false); err = output->writeBool(false); } } err = output->writeUint32(transformHint); return err; return err; } } Loading @@ -72,7 +73,8 @@ status_t SurfaceStats::readFromParcel(const Parcel* input) { return err; return err; } } } } return NO_ERROR; err = input->readUint32(&transformHint); return err; } } status_t TransactionStats::writeToParcel(Parcel* output) const { status_t TransactionStats::writeToParcel(Parcel* output) const { Loading libs/gui/SurfaceComposerClient.cpp +2 −1 Original line number Original line Diff line number Diff line Loading @@ -222,7 +222,8 @@ void TransactionCompletedListener::onTransactionCompleted(ListenerStats listener for (const auto& surfaceStats : transactionStats.surfaceStats) { for (const auto& surfaceStats : transactionStats.surfaceStats) { surfaceControlStats.emplace_back(surfaceControls[surfaceStats.surfaceControl], surfaceControlStats.emplace_back(surfaceControls[surfaceStats.surfaceControl], surfaceStats.acquireTime, surfaceStats.acquireTime, surfaceStats.previousReleaseFence); surfaceStats.previousReleaseFence, surfaceStats.transformHint); } } callbackFunction(transactionStats.latchTime, transactionStats.presentFence, callbackFunction(transactionStats.latchTime, transactionStats.presentFence, Loading libs/gui/include/gui/ITransactionCompletedListener.h +7 −2 Original line number Original line Diff line number Diff line Loading @@ -41,12 +41,17 @@ public: status_t readFromParcel(const Parcel* input) override; status_t readFromParcel(const Parcel* input) override; SurfaceStats() = default; SurfaceStats() = default; SurfaceStats(const sp<IBinder>& sc, nsecs_t time, const sp<Fence>& prevReleaseFence) SurfaceStats(const sp<IBinder>& sc, nsecs_t time, const sp<Fence>& prevReleaseFence, : surfaceControl(sc), acquireTime(time), previousReleaseFence(prevReleaseFence) {} uint32_t hint) : surfaceControl(sc), acquireTime(time), previousReleaseFence(prevReleaseFence), transformHint(hint) {} sp<IBinder> surfaceControl; sp<IBinder> surfaceControl; nsecs_t acquireTime = -1; nsecs_t acquireTime = -1; sp<Fence> previousReleaseFence; sp<Fence> previousReleaseFence; uint32_t transformHint = 0; }; }; class TransactionStats : public Parcelable { class TransactionStats : public Parcelable { Loading libs/gui/include/gui/SurfaceComposerClient.h +6 −2 Original line number Original line Diff line number Diff line Loading @@ -58,12 +58,16 @@ class Region; struct SurfaceControlStats { struct SurfaceControlStats { SurfaceControlStats(const sp<SurfaceControl>& sc, nsecs_t time, SurfaceControlStats(const sp<SurfaceControl>& sc, nsecs_t time, const sp<Fence>& prevReleaseFence) const sp<Fence>& prevReleaseFence, uint32_t hint) : surfaceControl(sc), acquireTime(time), previousReleaseFence(prevReleaseFence) {} : surfaceControl(sc), acquireTime(time), previousReleaseFence(prevReleaseFence), transformHint(hint) {} sp<SurfaceControl> surfaceControl; sp<SurfaceControl> surfaceControl; nsecs_t acquireTime = -1; nsecs_t acquireTime = -1; sp<Fence> previousReleaseFence; sp<Fence> previousReleaseFence; uint32_t transformHint = 0; }; }; using TransactionCompletedCallbackTakesContext = using TransactionCompletedCallbackTakesContext = Loading services/surfaceflinger/BufferStateLayer.cpp +6 −3 Original line number Original line Diff line number Diff line Loading @@ -103,12 +103,15 @@ void BufferStateLayer::onLayerDisplayed(const sp<Fence>& releaseFence) { } } } } void BufferStateLayer::setTransformHint(uint32_t /*orientation*/) const { void BufferStateLayer::setTransformHint(uint32_t orientation) const { // TODO(marissaw): send the transform hint to buffer owner mTransformHint = orientation; return; } } void BufferStateLayer::releasePendingBuffer(nsecs_t /*dequeueReadyTime*/) { void BufferStateLayer::releasePendingBuffer(nsecs_t /*dequeueReadyTime*/) { for (const auto& handle : mDrawingState.callbackHandles) { handle->transformHint = mTransformHint; } mFlinger->getTransactionCompletedThread().finalizePendingCallbackHandles( mFlinger->getTransactionCompletedThread().finalizePendingCallbackHandles( mDrawingState.callbackHandles); mDrawingState.callbackHandles); Loading Loading
libs/gui/ITransactionCompletedListener.cpp +3 −1 Original line number Original line Diff line number Diff line Loading @@ -48,6 +48,7 @@ status_t SurfaceStats::writeToParcel(Parcel* output) const { } else { } else { err = output->writeBool(false); err = output->writeBool(false); } } err = output->writeUint32(transformHint); return err; return err; } } Loading @@ -72,7 +73,8 @@ status_t SurfaceStats::readFromParcel(const Parcel* input) { return err; return err; } } } } return NO_ERROR; err = input->readUint32(&transformHint); return err; } } status_t TransactionStats::writeToParcel(Parcel* output) const { status_t TransactionStats::writeToParcel(Parcel* output) const { Loading
libs/gui/SurfaceComposerClient.cpp +2 −1 Original line number Original line Diff line number Diff line Loading @@ -222,7 +222,8 @@ void TransactionCompletedListener::onTransactionCompleted(ListenerStats listener for (const auto& surfaceStats : transactionStats.surfaceStats) { for (const auto& surfaceStats : transactionStats.surfaceStats) { surfaceControlStats.emplace_back(surfaceControls[surfaceStats.surfaceControl], surfaceControlStats.emplace_back(surfaceControls[surfaceStats.surfaceControl], surfaceStats.acquireTime, surfaceStats.acquireTime, surfaceStats.previousReleaseFence); surfaceStats.previousReleaseFence, surfaceStats.transformHint); } } callbackFunction(transactionStats.latchTime, transactionStats.presentFence, callbackFunction(transactionStats.latchTime, transactionStats.presentFence, Loading
libs/gui/include/gui/ITransactionCompletedListener.h +7 −2 Original line number Original line Diff line number Diff line Loading @@ -41,12 +41,17 @@ public: status_t readFromParcel(const Parcel* input) override; status_t readFromParcel(const Parcel* input) override; SurfaceStats() = default; SurfaceStats() = default; SurfaceStats(const sp<IBinder>& sc, nsecs_t time, const sp<Fence>& prevReleaseFence) SurfaceStats(const sp<IBinder>& sc, nsecs_t time, const sp<Fence>& prevReleaseFence, : surfaceControl(sc), acquireTime(time), previousReleaseFence(prevReleaseFence) {} uint32_t hint) : surfaceControl(sc), acquireTime(time), previousReleaseFence(prevReleaseFence), transformHint(hint) {} sp<IBinder> surfaceControl; sp<IBinder> surfaceControl; nsecs_t acquireTime = -1; nsecs_t acquireTime = -1; sp<Fence> previousReleaseFence; sp<Fence> previousReleaseFence; uint32_t transformHint = 0; }; }; class TransactionStats : public Parcelable { class TransactionStats : public Parcelable { Loading
libs/gui/include/gui/SurfaceComposerClient.h +6 −2 Original line number Original line Diff line number Diff line Loading @@ -58,12 +58,16 @@ class Region; struct SurfaceControlStats { struct SurfaceControlStats { SurfaceControlStats(const sp<SurfaceControl>& sc, nsecs_t time, SurfaceControlStats(const sp<SurfaceControl>& sc, nsecs_t time, const sp<Fence>& prevReleaseFence) const sp<Fence>& prevReleaseFence, uint32_t hint) : surfaceControl(sc), acquireTime(time), previousReleaseFence(prevReleaseFence) {} : surfaceControl(sc), acquireTime(time), previousReleaseFence(prevReleaseFence), transformHint(hint) {} sp<SurfaceControl> surfaceControl; sp<SurfaceControl> surfaceControl; nsecs_t acquireTime = -1; nsecs_t acquireTime = -1; sp<Fence> previousReleaseFence; sp<Fence> previousReleaseFence; uint32_t transformHint = 0; }; }; using TransactionCompletedCallbackTakesContext = using TransactionCompletedCallbackTakesContext = Loading
services/surfaceflinger/BufferStateLayer.cpp +6 −3 Original line number Original line Diff line number Diff line Loading @@ -103,12 +103,15 @@ void BufferStateLayer::onLayerDisplayed(const sp<Fence>& releaseFence) { } } } } void BufferStateLayer::setTransformHint(uint32_t /*orientation*/) const { void BufferStateLayer::setTransformHint(uint32_t orientation) const { // TODO(marissaw): send the transform hint to buffer owner mTransformHint = orientation; return; } } void BufferStateLayer::releasePendingBuffer(nsecs_t /*dequeueReadyTime*/) { void BufferStateLayer::releasePendingBuffer(nsecs_t /*dequeueReadyTime*/) { for (const auto& handle : mDrawingState.callbackHandles) { handle->transformHint = mTransformHint; } mFlinger->getTransactionCompletedThread().finalizePendingCallbackHandles( mFlinger->getTransactionCompletedThread().finalizePendingCallbackHandles( mDrawingState.callbackHandles); mDrawingState.callbackHandles); Loading