Loading libs/gui/BLASTBufferQueue.cpp +21 −0 Original line number Diff line number Diff line Loading @@ -317,6 +317,11 @@ void BLASTBufferQueue::releaseBufferCallback(uint64_t graphicBufferId, std::unique_lock _lock{mMutex}; BQA_LOGV("releaseBufferCallback graphicBufferId=%" PRIu64, graphicBufferId); if (mSurfaceControl != nullptr) { mTransformHint = mSurfaceControl->getTransformHint(); mBufferItemConsumer->setTransformHint(mTransformHint); } auto it = mSubmitted.find(graphicBufferId); if (it == mSubmitted.end()) { BQA_LOGE("ERROR: releaseBufferCallback without corresponding submitted buffer %" PRIu64, Loading Loading @@ -596,6 +601,14 @@ public: status_t setFrameTimelineInfo(const FrameTimelineInfo& frameTimelineInfo) override { return mBbq->setFrameTimelineInfo(frameTimelineInfo); } protected: uint32_t getTransformHint() const override { if (mStickyTransform == 0 && !transformToDisplayInverse()) { return mBbq->getLastTransformHint(); } else { return 0; } } }; // TODO: Can we coalesce this with frame updates? Need to confirm Loading Loading @@ -765,4 +778,12 @@ PixelFormat BLASTBufferQueue::convertBufferFormat(PixelFormat& format) { return convertedFormat; } uint32_t BLASTBufferQueue::getLastTransformHint() const { if (mSurfaceControl != nullptr) { return mSurfaceControl->getTransformHint(); } else { return 0; } } } // namespace android libs/gui/Surface.cpp +2 −2 Original line number Diff line number Diff line Loading @@ -1288,7 +1288,7 @@ int Surface::query(int what, int* value) const { mUserHeight ? mUserHeight : mDefaultHeight); return NO_ERROR; case NATIVE_WINDOW_TRANSFORM_HINT: *value = static_cast<int>(mTransformHint); *value = static_cast<int>(getTransformHint()); return NO_ERROR; case NATIVE_WINDOW_CONSUMER_RUNNING_BEHIND: { status_t err = NO_ERROR; Loading Loading @@ -1822,7 +1822,7 @@ int Surface::dispatchGetExtraBufferCount(va_list args) { return getExtraBufferCount(extraBuffers); } bool Surface::transformToDisplayInverse() { bool Surface::transformToDisplayInverse() const { return (mTransform & NATIVE_WINDOW_TRANSFORM_INVERSE_DISPLAY) == NATIVE_WINDOW_TRANSFORM_INVERSE_DISPLAY; } Loading libs/gui/include/gui/BLASTBufferQueue.h +2 −0 Original line number Diff line number Diff line Loading @@ -103,6 +103,8 @@ public: void setSidebandStream(const sp<NativeHandle>& stream); uint32_t getLastTransformHint() const; virtual ~BLASTBufferQueue(); private: Loading libs/gui/include/gui/Surface.h +2 −1 Original line number Diff line number Diff line Loading @@ -278,7 +278,6 @@ private: int dispatchGetLastQueuedBuffer(va_list args); int dispatchSetFrameTimelineInfo(va_list args); int dispatchGetExtraBufferCount(va_list args); bool transformToDisplayInverse(); protected: virtual int dequeueBuffer(ANativeWindowBuffer** buffer, int* fenceFd); Loading Loading @@ -490,6 +489,8 @@ protected: // mTransformHint is the transform probably applied to buffers of this // window. this is only a hint, actual transform may differ. uint32_t mTransformHint; virtual uint32_t getTransformHint() const { return mTransformHint; } bool transformToDisplayInverse() const; // mProducerControlledByApp whether this buffer producer is controlled // by the application Loading Loading
libs/gui/BLASTBufferQueue.cpp +21 −0 Original line number Diff line number Diff line Loading @@ -317,6 +317,11 @@ void BLASTBufferQueue::releaseBufferCallback(uint64_t graphicBufferId, std::unique_lock _lock{mMutex}; BQA_LOGV("releaseBufferCallback graphicBufferId=%" PRIu64, graphicBufferId); if (mSurfaceControl != nullptr) { mTransformHint = mSurfaceControl->getTransformHint(); mBufferItemConsumer->setTransformHint(mTransformHint); } auto it = mSubmitted.find(graphicBufferId); if (it == mSubmitted.end()) { BQA_LOGE("ERROR: releaseBufferCallback without corresponding submitted buffer %" PRIu64, Loading Loading @@ -596,6 +601,14 @@ public: status_t setFrameTimelineInfo(const FrameTimelineInfo& frameTimelineInfo) override { return mBbq->setFrameTimelineInfo(frameTimelineInfo); } protected: uint32_t getTransformHint() const override { if (mStickyTransform == 0 && !transformToDisplayInverse()) { return mBbq->getLastTransformHint(); } else { return 0; } } }; // TODO: Can we coalesce this with frame updates? Need to confirm Loading Loading @@ -765,4 +778,12 @@ PixelFormat BLASTBufferQueue::convertBufferFormat(PixelFormat& format) { return convertedFormat; } uint32_t BLASTBufferQueue::getLastTransformHint() const { if (mSurfaceControl != nullptr) { return mSurfaceControl->getTransformHint(); } else { return 0; } } } // namespace android
libs/gui/Surface.cpp +2 −2 Original line number Diff line number Diff line Loading @@ -1288,7 +1288,7 @@ int Surface::query(int what, int* value) const { mUserHeight ? mUserHeight : mDefaultHeight); return NO_ERROR; case NATIVE_WINDOW_TRANSFORM_HINT: *value = static_cast<int>(mTransformHint); *value = static_cast<int>(getTransformHint()); return NO_ERROR; case NATIVE_WINDOW_CONSUMER_RUNNING_BEHIND: { status_t err = NO_ERROR; Loading Loading @@ -1822,7 +1822,7 @@ int Surface::dispatchGetExtraBufferCount(va_list args) { return getExtraBufferCount(extraBuffers); } bool Surface::transformToDisplayInverse() { bool Surface::transformToDisplayInverse() const { return (mTransform & NATIVE_WINDOW_TRANSFORM_INVERSE_DISPLAY) == NATIVE_WINDOW_TRANSFORM_INVERSE_DISPLAY; } Loading
libs/gui/include/gui/BLASTBufferQueue.h +2 −0 Original line number Diff line number Diff line Loading @@ -103,6 +103,8 @@ public: void setSidebandStream(const sp<NativeHandle>& stream); uint32_t getLastTransformHint() const; virtual ~BLASTBufferQueue(); private: Loading
libs/gui/include/gui/Surface.h +2 −1 Original line number Diff line number Diff line Loading @@ -278,7 +278,6 @@ private: int dispatchGetLastQueuedBuffer(va_list args); int dispatchSetFrameTimelineInfo(va_list args); int dispatchGetExtraBufferCount(va_list args); bool transformToDisplayInverse(); protected: virtual int dequeueBuffer(ANativeWindowBuffer** buffer, int* fenceFd); Loading Loading @@ -490,6 +489,8 @@ protected: // mTransformHint is the transform probably applied to buffers of this // window. this is only a hint, actual transform may differ. uint32_t mTransformHint; virtual uint32_t getTransformHint() const { return mTransformHint; } bool transformToDisplayInverse() const; // mProducerControlledByApp whether this buffer producer is controlled // by the application Loading