Loading libs/gui/Android.bp +4 −0 Original line number Diff line number Diff line Loading @@ -402,17 +402,21 @@ filegroup { srcs: [ "BatchBufferOps.cpp", "BufferItem.cpp", "BufferItemConsumer.cpp", "BufferQueue.cpp", "BufferQueueConsumer.cpp", "BufferQueueCore.cpp", "BufferQueueProducer.cpp", "BufferQueueThreadState.cpp", "BufferSlot.cpp", "ConsumerBase.cpp", "FenceMonitor.cpp", "FrameRateUtils.cpp", "FrameTimestamps.cpp", "GLConsumerUtils.cpp", "HdrMetadata.cpp", "IGraphicBufferProducerFlattenables.cpp", "Surface.cpp", "bufferqueue/1.0/Conversion.cpp", "bufferqueue/1.0/H2BProducerListener.cpp", "bufferqueue/1.0/WProducerListener.cpp", Loading libs/gui/ConsumerBase.cpp +4 −1 Original line number Diff line number Diff line Loading @@ -31,9 +31,12 @@ #include <gui/BufferItem.h> #include <gui/BufferQueue.h> #include <gui/ConsumerBase.h> #ifndef NO_BINDER #include <gui/IConsumerListener.h> #include <gui/ISurfaceComposer.h> #include <gui/Surface.h> #include <gui/SurfaceComposerClient.h> #endif #include <gui/Surface.h> #include <private/gui/ComposerService.h> Loading libs/gui/Surface.cpp +33 −10 Original line number Diff line number Diff line Loading @@ -29,7 +29,15 @@ #include <inttypes.h> #ifndef NO_BINDER #include <android/gui/DisplayStatInfo.h> #include <gui/AidlUtil.h> #include <gui/ISurfaceComposer.h> #include <gui/LayerState.h> #include <private/gui/ComposerService.h> #include <private/gui/ComposerServiceAIDL.h> #endif #include <android/native_window.h> #include <gui/FenceMonitor.h> Loading @@ -44,20 +52,13 @@ #include <ui/GraphicBuffer.h> #include <ui/Region.h> #include <gui/AidlUtil.h> #include <gui/BufferItem.h> #include <gui/ISurfaceComposer.h> #include <gui/LayerState.h> #include <private/gui/ComposerService.h> #include <private/gui/ComposerServiceAIDL.h> #include <com_android_graphics_libgui_flags.h> namespace android { using namespace com::android::graphics::libgui; using gui::aidl_utils::statusTFromBinderStatus; using ui::Dataspace; namespace { Loading Loading @@ -157,7 +158,7 @@ Surface::~Surface() { if (mConnectedToCpu) { Surface::disconnect(NATIVE_WINDOW_API_CPU); } #if COM_ANDROID_GRAPHICS_LIBGUI_FLAGS(WB_PLATFORM_API_IMPROVEMENTS) #if COM_ANDROID_GRAPHICS_LIBGUI_FLAGS(WB_PLATFORM_API_IMPROVEMENTS) && !defined(NO_BINDER) if (mSurfaceDeathListener != nullptr) { IInterface::asBinder(mGraphicBufferProducer)->unlinkToDeath(mSurfaceDeathListener); mSurfaceDeathListener = nullptr; Loading @@ -165,6 +166,7 @@ Surface::~Surface() { #endif // COM_ANDROID_GRAPHICS_LIBGUI_FLAGS(WB_PLATFORM_API_IMPROVEMENTS) } #ifndef NO_BINDER sp<ISurfaceComposer> Surface::composerService() const { return ComposerService::getComposerService(); } Loading @@ -172,6 +174,7 @@ sp<ISurfaceComposer> Surface::composerService() const { sp<gui::ISurfaceComposer> Surface::composerServiceAIDL() const { return ComposerServiceAIDL::getComposerService(); } #endif nsecs_t Surface::now() const { return systemTime(); Loading Loading @@ -228,6 +231,12 @@ status_t Surface::getLastQueuedBuffer(sp<GraphicBuffer>* outBuffer, status_t Surface::getDisplayRefreshCycleDuration(nsecs_t* outRefreshDuration) { ATRACE_CALL(); #ifdef NO_BINDER (void)outRefreshDuration; return INVALID_OPERATION; #else using gui::aidl_utils::statusTFromBinderStatus; gui::DisplayStatInfo stats; binder::Status status = composerServiceAIDL()->getDisplayStats(nullptr, &stats); if (!status.isOk()) { Loading @@ -237,6 +246,7 @@ status_t Surface::getDisplayRefreshCycleDuration(nsecs_t* outRefreshDuration) { *outRefreshDuration = stats.vsyncPeriod; return NO_ERROR; #endif } void Surface::enableFrameTimestamps(bool enable) { Loading Loading @@ -1438,6 +1448,9 @@ int Surface::queueBuffers(const std::vector<BatchQueuedBuffer>& buffers) { #endif // COM_ANDROID_GRAPHICS_LIBGUI_FLAGS(WB_PLATFORM_API_IMPROVEMENTS) void Surface::querySupportedTimestampsLocked() const { #ifdef NO_BINDER LOG_ALWAYS_FATAL("Surface::querySupportedTimestampsLocked not supported in NO_BINDER mode"); #else // mMutex must be locked when calling this method. if (mQueriedSupportedTimestamps) { Loading @@ -1458,6 +1471,7 @@ void Surface::querySupportedTimestampsLocked() const { mFrameTimestampsSupportsPresent = true; } } #endif } int Surface::query(int what, int* value) const { Loading @@ -1477,6 +1491,9 @@ int Surface::query(int what, int* value) const { if (err == NO_ERROR) { return NO_ERROR; } #ifdef NO_BINDER return -EPERM; #else sp<gui::ISurfaceComposer> surfaceComposer = composerServiceAIDL(); if (surfaceComposer == nullptr) { return -EPERM; // likely permissions error Loading @@ -1484,6 +1501,7 @@ int Surface::query(int what, int* value) const { // ISurfaceComposer no longer supports authenticateSurfaceTexture *value = 0; return NO_ERROR; #endif } case NATIVE_WINDOW_CONCRETE_TYPE: *value = NATIVE_WINDOW_SURFACE; Loading Loading @@ -2051,6 +2069,10 @@ int Surface::dispatchGetLastQueuedBuffer2(va_list args) { } int Surface::dispatchSetFrameTimelineInfo(va_list args) { #ifdef NO_BINDER (void)args; LOG_ALWAYS_FATAL("Surface::dispatchSetFrameTimelineInfo not supported in NO_BINDER mode"); #else ATRACE_CALL(); ALOGV("Surface::%s", __func__); Loading @@ -2066,6 +2088,7 @@ int Surface::dispatchSetFrameTimelineInfo(va_list args) { ftlInfo.skippedFrameStartTimeNanos = nativeWindowFtlInfo.skippedFrameStartTimeNanos; return setFrameTimelineInfo(nativeWindowFtlInfo.frameNumber, ftlInfo); #endif } int Surface::dispatchSetAdditionalOptions(va_list args) { Loading Loading @@ -2127,7 +2150,7 @@ int Surface::connect(int api, const sp<SurfaceListener>& listener, bool reportBu mConsumerRunningBehind = (output.numPendingBuffers >= 2); #if COM_ANDROID_GRAPHICS_LIBGUI_FLAGS(WB_PLATFORM_API_IMPROVEMENTS) #if COM_ANDROID_GRAPHICS_LIBGUI_FLAGS(WB_PLATFORM_API_IMPROVEMENTS) && !defined(NO_BINDER) if (listener && listener->needsDeathNotify()) { mSurfaceDeathListener = sp<ProducerDeathListenerProxy>::make(listener); IInterface::asBinder(mGraphicBufferProducer)->linkToDeath(mSurfaceDeathListener); Loading Loading @@ -2174,7 +2197,7 @@ int Surface::disconnect(int api, IGraphicBufferProducer::DisconnectMode mode) { } } #if COM_ANDROID_GRAPHICS_LIBGUI_FLAGS(WB_PLATFORM_API_IMPROVEMENTS) #if COM_ANDROID_GRAPHICS_LIBGUI_FLAGS(WB_PLATFORM_API_IMPROVEMENTS) && !defined(NO_BINDER) if (mSurfaceDeathListener != nullptr) { IInterface::asBinder(mGraphicBufferProducer)->unlinkToDeath(mSurfaceDeathListener); mSurfaceDeathListener = nullptr; Loading libs/gui/include/gui/Surface.h +3 −1 Original line number Diff line number Diff line Loading @@ -17,7 +17,6 @@ #ifndef ANDROID_GUI_SURFACE_H #define ANDROID_GUI_SURFACE_H #include <android/gui/FrameTimelineInfo.h> #include <com_android_graphics_libgui_flags.h> #include <gui/BufferQueueDefs.h> #include <gui/HdrMetadata.h> Loading @@ -39,6 +38,7 @@ namespace android { class GraphicBuffer; namespace gui { class FrameTimelineInfo; class ISurfaceComposer; } // namespace gui Loading Loading @@ -283,9 +283,11 @@ public: protected: virtual ~Surface(); #ifndef NO_BINDER // Virtual for testing. virtual sp<ISurfaceComposer> composerService() const; virtual sp<gui::ISurfaceComposer> composerServiceAIDL() const; #endif virtual nsecs_t now() const; private: Loading Loading
libs/gui/Android.bp +4 −0 Original line number Diff line number Diff line Loading @@ -402,17 +402,21 @@ filegroup { srcs: [ "BatchBufferOps.cpp", "BufferItem.cpp", "BufferItemConsumer.cpp", "BufferQueue.cpp", "BufferQueueConsumer.cpp", "BufferQueueCore.cpp", "BufferQueueProducer.cpp", "BufferQueueThreadState.cpp", "BufferSlot.cpp", "ConsumerBase.cpp", "FenceMonitor.cpp", "FrameRateUtils.cpp", "FrameTimestamps.cpp", "GLConsumerUtils.cpp", "HdrMetadata.cpp", "IGraphicBufferProducerFlattenables.cpp", "Surface.cpp", "bufferqueue/1.0/Conversion.cpp", "bufferqueue/1.0/H2BProducerListener.cpp", "bufferqueue/1.0/WProducerListener.cpp", Loading
libs/gui/ConsumerBase.cpp +4 −1 Original line number Diff line number Diff line Loading @@ -31,9 +31,12 @@ #include <gui/BufferItem.h> #include <gui/BufferQueue.h> #include <gui/ConsumerBase.h> #ifndef NO_BINDER #include <gui/IConsumerListener.h> #include <gui/ISurfaceComposer.h> #include <gui/Surface.h> #include <gui/SurfaceComposerClient.h> #endif #include <gui/Surface.h> #include <private/gui/ComposerService.h> Loading
libs/gui/Surface.cpp +33 −10 Original line number Diff line number Diff line Loading @@ -29,7 +29,15 @@ #include <inttypes.h> #ifndef NO_BINDER #include <android/gui/DisplayStatInfo.h> #include <gui/AidlUtil.h> #include <gui/ISurfaceComposer.h> #include <gui/LayerState.h> #include <private/gui/ComposerService.h> #include <private/gui/ComposerServiceAIDL.h> #endif #include <android/native_window.h> #include <gui/FenceMonitor.h> Loading @@ -44,20 +52,13 @@ #include <ui/GraphicBuffer.h> #include <ui/Region.h> #include <gui/AidlUtil.h> #include <gui/BufferItem.h> #include <gui/ISurfaceComposer.h> #include <gui/LayerState.h> #include <private/gui/ComposerService.h> #include <private/gui/ComposerServiceAIDL.h> #include <com_android_graphics_libgui_flags.h> namespace android { using namespace com::android::graphics::libgui; using gui::aidl_utils::statusTFromBinderStatus; using ui::Dataspace; namespace { Loading Loading @@ -157,7 +158,7 @@ Surface::~Surface() { if (mConnectedToCpu) { Surface::disconnect(NATIVE_WINDOW_API_CPU); } #if COM_ANDROID_GRAPHICS_LIBGUI_FLAGS(WB_PLATFORM_API_IMPROVEMENTS) #if COM_ANDROID_GRAPHICS_LIBGUI_FLAGS(WB_PLATFORM_API_IMPROVEMENTS) && !defined(NO_BINDER) if (mSurfaceDeathListener != nullptr) { IInterface::asBinder(mGraphicBufferProducer)->unlinkToDeath(mSurfaceDeathListener); mSurfaceDeathListener = nullptr; Loading @@ -165,6 +166,7 @@ Surface::~Surface() { #endif // COM_ANDROID_GRAPHICS_LIBGUI_FLAGS(WB_PLATFORM_API_IMPROVEMENTS) } #ifndef NO_BINDER sp<ISurfaceComposer> Surface::composerService() const { return ComposerService::getComposerService(); } Loading @@ -172,6 +174,7 @@ sp<ISurfaceComposer> Surface::composerService() const { sp<gui::ISurfaceComposer> Surface::composerServiceAIDL() const { return ComposerServiceAIDL::getComposerService(); } #endif nsecs_t Surface::now() const { return systemTime(); Loading Loading @@ -228,6 +231,12 @@ status_t Surface::getLastQueuedBuffer(sp<GraphicBuffer>* outBuffer, status_t Surface::getDisplayRefreshCycleDuration(nsecs_t* outRefreshDuration) { ATRACE_CALL(); #ifdef NO_BINDER (void)outRefreshDuration; return INVALID_OPERATION; #else using gui::aidl_utils::statusTFromBinderStatus; gui::DisplayStatInfo stats; binder::Status status = composerServiceAIDL()->getDisplayStats(nullptr, &stats); if (!status.isOk()) { Loading @@ -237,6 +246,7 @@ status_t Surface::getDisplayRefreshCycleDuration(nsecs_t* outRefreshDuration) { *outRefreshDuration = stats.vsyncPeriod; return NO_ERROR; #endif } void Surface::enableFrameTimestamps(bool enable) { Loading Loading @@ -1438,6 +1448,9 @@ int Surface::queueBuffers(const std::vector<BatchQueuedBuffer>& buffers) { #endif // COM_ANDROID_GRAPHICS_LIBGUI_FLAGS(WB_PLATFORM_API_IMPROVEMENTS) void Surface::querySupportedTimestampsLocked() const { #ifdef NO_BINDER LOG_ALWAYS_FATAL("Surface::querySupportedTimestampsLocked not supported in NO_BINDER mode"); #else // mMutex must be locked when calling this method. if (mQueriedSupportedTimestamps) { Loading @@ -1458,6 +1471,7 @@ void Surface::querySupportedTimestampsLocked() const { mFrameTimestampsSupportsPresent = true; } } #endif } int Surface::query(int what, int* value) const { Loading @@ -1477,6 +1491,9 @@ int Surface::query(int what, int* value) const { if (err == NO_ERROR) { return NO_ERROR; } #ifdef NO_BINDER return -EPERM; #else sp<gui::ISurfaceComposer> surfaceComposer = composerServiceAIDL(); if (surfaceComposer == nullptr) { return -EPERM; // likely permissions error Loading @@ -1484,6 +1501,7 @@ int Surface::query(int what, int* value) const { // ISurfaceComposer no longer supports authenticateSurfaceTexture *value = 0; return NO_ERROR; #endif } case NATIVE_WINDOW_CONCRETE_TYPE: *value = NATIVE_WINDOW_SURFACE; Loading Loading @@ -2051,6 +2069,10 @@ int Surface::dispatchGetLastQueuedBuffer2(va_list args) { } int Surface::dispatchSetFrameTimelineInfo(va_list args) { #ifdef NO_BINDER (void)args; LOG_ALWAYS_FATAL("Surface::dispatchSetFrameTimelineInfo not supported in NO_BINDER mode"); #else ATRACE_CALL(); ALOGV("Surface::%s", __func__); Loading @@ -2066,6 +2088,7 @@ int Surface::dispatchSetFrameTimelineInfo(va_list args) { ftlInfo.skippedFrameStartTimeNanos = nativeWindowFtlInfo.skippedFrameStartTimeNanos; return setFrameTimelineInfo(nativeWindowFtlInfo.frameNumber, ftlInfo); #endif } int Surface::dispatchSetAdditionalOptions(va_list args) { Loading Loading @@ -2127,7 +2150,7 @@ int Surface::connect(int api, const sp<SurfaceListener>& listener, bool reportBu mConsumerRunningBehind = (output.numPendingBuffers >= 2); #if COM_ANDROID_GRAPHICS_LIBGUI_FLAGS(WB_PLATFORM_API_IMPROVEMENTS) #if COM_ANDROID_GRAPHICS_LIBGUI_FLAGS(WB_PLATFORM_API_IMPROVEMENTS) && !defined(NO_BINDER) if (listener && listener->needsDeathNotify()) { mSurfaceDeathListener = sp<ProducerDeathListenerProxy>::make(listener); IInterface::asBinder(mGraphicBufferProducer)->linkToDeath(mSurfaceDeathListener); Loading Loading @@ -2174,7 +2197,7 @@ int Surface::disconnect(int api, IGraphicBufferProducer::DisconnectMode mode) { } } #if COM_ANDROID_GRAPHICS_LIBGUI_FLAGS(WB_PLATFORM_API_IMPROVEMENTS) #if COM_ANDROID_GRAPHICS_LIBGUI_FLAGS(WB_PLATFORM_API_IMPROVEMENTS) && !defined(NO_BINDER) if (mSurfaceDeathListener != nullptr) { IInterface::asBinder(mGraphicBufferProducer)->unlinkToDeath(mSurfaceDeathListener); mSurfaceDeathListener = nullptr; Loading
libs/gui/include/gui/Surface.h +3 −1 Original line number Diff line number Diff line Loading @@ -17,7 +17,6 @@ #ifndef ANDROID_GUI_SURFACE_H #define ANDROID_GUI_SURFACE_H #include <android/gui/FrameTimelineInfo.h> #include <com_android_graphics_libgui_flags.h> #include <gui/BufferQueueDefs.h> #include <gui/HdrMetadata.h> Loading @@ -39,6 +38,7 @@ namespace android { class GraphicBuffer; namespace gui { class FrameTimelineInfo; class ISurfaceComposer; } // namespace gui Loading Loading @@ -283,9 +283,11 @@ public: protected: virtual ~Surface(); #ifndef NO_BINDER // Virtual for testing. virtual sp<ISurfaceComposer> composerService() const; virtual sp<gui::ISurfaceComposer> composerServiceAIDL() const; #endif virtual nsecs_t now() const; private: Loading