Loading libs/gui/BufferItemConsumer.cpp +4 −0 Original line number Original line Diff line number Diff line Loading @@ -49,6 +49,10 @@ BufferItemConsumer::~BufferItemConsumer() {} void BufferItemConsumer::setName(const String8& name) { void BufferItemConsumer::setName(const String8& name) { Mutex::Autolock _l(mMutex); Mutex::Autolock _l(mMutex); if (mAbandoned) { BI_LOGE("setName: BufferItemConsumer is abandoned!"); return; } mName = name; mName = name; mConsumer->setConsumerName(name); mConsumer->setConsumerName(name); } } Loading libs/gui/ConsumerBase.cpp +30 −0 Original line number Original line Diff line number Diff line Loading @@ -163,6 +163,10 @@ void ConsumerBase::abandon() { void ConsumerBase::abandonLocked() { void ConsumerBase::abandonLocked() { CB_LOGV("abandonLocked"); CB_LOGV("abandonLocked"); if (mAbandoned) { CB_LOGE("abandonLocked: ConsumerBase is abandoned!"); return; } for (int i =0; i < BufferQueue::NUM_BUFFER_SLOTS; i++) { for (int i =0; i < BufferQueue::NUM_BUFFER_SLOTS; i++) { freeBufferLocked(i); freeBufferLocked(i); } } Loading @@ -187,6 +191,11 @@ status_t ConsumerBase::detachBuffer(int slot) { CB_LOGV("detachBuffer"); CB_LOGV("detachBuffer"); Mutex::Autolock lock(mMutex); Mutex::Autolock lock(mMutex); if (mAbandoned) { CB_LOGE("detachBuffer: ConsumerBase is abandoned!"); return NO_INIT; } status_t result = mConsumer->detachBuffer(slot); status_t result = mConsumer->detachBuffer(slot); if (result != NO_ERROR) { if (result != NO_ERROR) { CB_LOGE("Failed to detach buffer: %d", result); CB_LOGE("Failed to detach buffer: %d", result); Loading @@ -200,17 +209,29 @@ status_t ConsumerBase::detachBuffer(int slot) { status_t ConsumerBase::setDefaultBufferSize(uint32_t width, uint32_t height) { status_t ConsumerBase::setDefaultBufferSize(uint32_t width, uint32_t height) { Mutex::Autolock _l(mMutex); Mutex::Autolock _l(mMutex); if (mAbandoned) { CB_LOGE("setDefaultBufferSize: ConsumerBase is abandoned!"); return NO_INIT; } return mConsumer->setDefaultBufferSize(width, height); return mConsumer->setDefaultBufferSize(width, height); } } status_t ConsumerBase::setDefaultBufferFormat(PixelFormat defaultFormat) { status_t ConsumerBase::setDefaultBufferFormat(PixelFormat defaultFormat) { Mutex::Autolock _l(mMutex); Mutex::Autolock _l(mMutex); if (mAbandoned) { CB_LOGE("setDefaultBufferFormat: ConsumerBase is abandoned!"); return NO_INIT; } return mConsumer->setDefaultBufferFormat(defaultFormat); return mConsumer->setDefaultBufferFormat(defaultFormat); } } status_t ConsumerBase::setDefaultBufferDataSpace( status_t ConsumerBase::setDefaultBufferDataSpace( android_dataspace defaultDataSpace) { android_dataspace defaultDataSpace) { Mutex::Autolock _l(mMutex); Mutex::Autolock _l(mMutex); if (mAbandoned) { CB_LOGE("setDefaultBufferDataSpace: ConsumerBase is abandoned!"); return NO_INIT; } return mConsumer->setDefaultBufferDataSpace(defaultDataSpace); return mConsumer->setDefaultBufferDataSpace(defaultDataSpace); } } Loading @@ -233,6 +254,11 @@ void ConsumerBase::dumpLocked(String8& result, const char* prefix) const { status_t ConsumerBase::acquireBufferLocked(BufferItem *item, status_t ConsumerBase::acquireBufferLocked(BufferItem *item, nsecs_t presentWhen, uint64_t maxFrameNumber) { nsecs_t presentWhen, uint64_t maxFrameNumber) { if (mAbandoned) { CB_LOGE("acquireBufferLocked: ConsumerBase is abandoned!"); return NO_INIT; } status_t err = mConsumer->acquireBuffer(item, presentWhen, maxFrameNumber); status_t err = mConsumer->acquireBuffer(item, presentWhen, maxFrameNumber); if (err != NO_ERROR) { if (err != NO_ERROR) { return err; return err; Loading Loading @@ -289,6 +315,10 @@ status_t ConsumerBase::addReleaseFenceLocked(int slot, status_t ConsumerBase::releaseBufferLocked( status_t ConsumerBase::releaseBufferLocked( int slot, const sp<GraphicBuffer> graphicBuffer, int slot, const sp<GraphicBuffer> graphicBuffer, EGLDisplay display, EGLSyncKHR eglFence) { EGLDisplay display, EGLSyncKHR eglFence) { if (mAbandoned) { CB_LOGE("releaseBufferLocked: ConsumerBase is abandoned!"); return NO_INIT; } // If consumer no longer tracks this graphicBuffer (we received a new // If consumer no longer tracks this graphicBuffer (we received a new // buffer on the same slot), the buffer producer is definitely no longer // buffer on the same slot), the buffer producer is definitely no longer // tracking it. // tracking it. Loading libs/gui/CpuConsumer.cpp +4 −0 Original line number Original line Diff line number Diff line Loading @@ -52,6 +52,10 @@ CpuConsumer::~CpuConsumer() { void CpuConsumer::setName(const String8& name) { void CpuConsumer::setName(const String8& name) { Mutex::Autolock _l(mMutex); Mutex::Autolock _l(mMutex); if (mAbandoned) { CC_LOGE("setName: CpuConsumer is abandoned!"); return; } mName = name; mName = name; mConsumer->setConsumerName(name); mConsumer->setConsumerName(name); } } Loading libs/gui/GLConsumer.cpp +28 −0 Original line number Original line Diff line number Diff line Loading @@ -209,6 +209,10 @@ GLConsumer::GLConsumer(const sp<IGraphicBufferConsumer>& bq, uint32_t texTarget, status_t GLConsumer::setDefaultBufferSize(uint32_t w, uint32_t h) status_t GLConsumer::setDefaultBufferSize(uint32_t w, uint32_t h) { { Mutex::Autolock lock(mMutex); Mutex::Autolock lock(mMutex); if (mAbandoned) { GLC_LOGE("setDefaultBufferSize: GLConsumer is abandoned!"); return NO_INIT; } mDefaultWidth = w; mDefaultWidth = w; mDefaultHeight = h; mDefaultHeight = h; return mConsumer->setDefaultBufferSize(w, h); return mConsumer->setDefaultBufferSize(w, h); Loading Loading @@ -1059,34 +1063,58 @@ void GLConsumer::abandonLocked() { void GLConsumer::setName(const String8& name) { void GLConsumer::setName(const String8& name) { Mutex::Autolock _l(mMutex); Mutex::Autolock _l(mMutex); if (mAbandoned) { GLC_LOGE("setName: GLConsumer is abandoned!"); return; } mName = name; mName = name; mConsumer->setConsumerName(name); mConsumer->setConsumerName(name); } } status_t GLConsumer::setDefaultBufferFormat(PixelFormat defaultFormat) { status_t GLConsumer::setDefaultBufferFormat(PixelFormat defaultFormat) { Mutex::Autolock lock(mMutex); Mutex::Autolock lock(mMutex); if (mAbandoned) { GLC_LOGE("setDefaultBufferFormat: GLConsumer is abandoned!"); return NO_INIT; } return mConsumer->setDefaultBufferFormat(defaultFormat); return mConsumer->setDefaultBufferFormat(defaultFormat); } } status_t GLConsumer::setDefaultBufferDataSpace( status_t GLConsumer::setDefaultBufferDataSpace( android_dataspace defaultDataSpace) { android_dataspace defaultDataSpace) { Mutex::Autolock lock(mMutex); Mutex::Autolock lock(mMutex); if (mAbandoned) { GLC_LOGE("setDefaultBufferDataSpace: GLConsumer is abandoned!"); return NO_INIT; } return mConsumer->setDefaultBufferDataSpace(defaultDataSpace); return mConsumer->setDefaultBufferDataSpace(defaultDataSpace); } } status_t GLConsumer::setConsumerUsageBits(uint32_t usage) { status_t GLConsumer::setConsumerUsageBits(uint32_t usage) { Mutex::Autolock lock(mMutex); Mutex::Autolock lock(mMutex); if (mAbandoned) { GLC_LOGE("setConsumerUsageBits: GLConsumer is abandoned!"); return NO_INIT; } usage |= DEFAULT_USAGE_FLAGS; usage |= DEFAULT_USAGE_FLAGS; return mConsumer->setConsumerUsageBits(usage); return mConsumer->setConsumerUsageBits(usage); } } status_t GLConsumer::setTransformHint(uint32_t hint) { status_t GLConsumer::setTransformHint(uint32_t hint) { Mutex::Autolock lock(mMutex); Mutex::Autolock lock(mMutex); if (mAbandoned) { GLC_LOGE("setTransformHint: GLConsumer is abandoned!"); return NO_INIT; } return mConsumer->setTransformHint(hint); return mConsumer->setTransformHint(hint); } } status_t GLConsumer::setMaxAcquiredBufferCount(int maxAcquiredBuffers) { status_t GLConsumer::setMaxAcquiredBufferCount(int maxAcquiredBuffers) { Mutex::Autolock lock(mMutex); Mutex::Autolock lock(mMutex); if (mAbandoned) { GLC_LOGE("setMaxAcquiredBufferCount: GLConsumer is abandoned!"); return NO_INIT; } return mConsumer->setMaxAcquiredBufferCount(maxAcquiredBuffers); return mConsumer->setMaxAcquiredBufferCount(maxAcquiredBuffers); } } Loading Loading
libs/gui/BufferItemConsumer.cpp +4 −0 Original line number Original line Diff line number Diff line Loading @@ -49,6 +49,10 @@ BufferItemConsumer::~BufferItemConsumer() {} void BufferItemConsumer::setName(const String8& name) { void BufferItemConsumer::setName(const String8& name) { Mutex::Autolock _l(mMutex); Mutex::Autolock _l(mMutex); if (mAbandoned) { BI_LOGE("setName: BufferItemConsumer is abandoned!"); return; } mName = name; mName = name; mConsumer->setConsumerName(name); mConsumer->setConsumerName(name); } } Loading
libs/gui/ConsumerBase.cpp +30 −0 Original line number Original line Diff line number Diff line Loading @@ -163,6 +163,10 @@ void ConsumerBase::abandon() { void ConsumerBase::abandonLocked() { void ConsumerBase::abandonLocked() { CB_LOGV("abandonLocked"); CB_LOGV("abandonLocked"); if (mAbandoned) { CB_LOGE("abandonLocked: ConsumerBase is abandoned!"); return; } for (int i =0; i < BufferQueue::NUM_BUFFER_SLOTS; i++) { for (int i =0; i < BufferQueue::NUM_BUFFER_SLOTS; i++) { freeBufferLocked(i); freeBufferLocked(i); } } Loading @@ -187,6 +191,11 @@ status_t ConsumerBase::detachBuffer(int slot) { CB_LOGV("detachBuffer"); CB_LOGV("detachBuffer"); Mutex::Autolock lock(mMutex); Mutex::Autolock lock(mMutex); if (mAbandoned) { CB_LOGE("detachBuffer: ConsumerBase is abandoned!"); return NO_INIT; } status_t result = mConsumer->detachBuffer(slot); status_t result = mConsumer->detachBuffer(slot); if (result != NO_ERROR) { if (result != NO_ERROR) { CB_LOGE("Failed to detach buffer: %d", result); CB_LOGE("Failed to detach buffer: %d", result); Loading @@ -200,17 +209,29 @@ status_t ConsumerBase::detachBuffer(int slot) { status_t ConsumerBase::setDefaultBufferSize(uint32_t width, uint32_t height) { status_t ConsumerBase::setDefaultBufferSize(uint32_t width, uint32_t height) { Mutex::Autolock _l(mMutex); Mutex::Autolock _l(mMutex); if (mAbandoned) { CB_LOGE("setDefaultBufferSize: ConsumerBase is abandoned!"); return NO_INIT; } return mConsumer->setDefaultBufferSize(width, height); return mConsumer->setDefaultBufferSize(width, height); } } status_t ConsumerBase::setDefaultBufferFormat(PixelFormat defaultFormat) { status_t ConsumerBase::setDefaultBufferFormat(PixelFormat defaultFormat) { Mutex::Autolock _l(mMutex); Mutex::Autolock _l(mMutex); if (mAbandoned) { CB_LOGE("setDefaultBufferFormat: ConsumerBase is abandoned!"); return NO_INIT; } return mConsumer->setDefaultBufferFormat(defaultFormat); return mConsumer->setDefaultBufferFormat(defaultFormat); } } status_t ConsumerBase::setDefaultBufferDataSpace( status_t ConsumerBase::setDefaultBufferDataSpace( android_dataspace defaultDataSpace) { android_dataspace defaultDataSpace) { Mutex::Autolock _l(mMutex); Mutex::Autolock _l(mMutex); if (mAbandoned) { CB_LOGE("setDefaultBufferDataSpace: ConsumerBase is abandoned!"); return NO_INIT; } return mConsumer->setDefaultBufferDataSpace(defaultDataSpace); return mConsumer->setDefaultBufferDataSpace(defaultDataSpace); } } Loading @@ -233,6 +254,11 @@ void ConsumerBase::dumpLocked(String8& result, const char* prefix) const { status_t ConsumerBase::acquireBufferLocked(BufferItem *item, status_t ConsumerBase::acquireBufferLocked(BufferItem *item, nsecs_t presentWhen, uint64_t maxFrameNumber) { nsecs_t presentWhen, uint64_t maxFrameNumber) { if (mAbandoned) { CB_LOGE("acquireBufferLocked: ConsumerBase is abandoned!"); return NO_INIT; } status_t err = mConsumer->acquireBuffer(item, presentWhen, maxFrameNumber); status_t err = mConsumer->acquireBuffer(item, presentWhen, maxFrameNumber); if (err != NO_ERROR) { if (err != NO_ERROR) { return err; return err; Loading Loading @@ -289,6 +315,10 @@ status_t ConsumerBase::addReleaseFenceLocked(int slot, status_t ConsumerBase::releaseBufferLocked( status_t ConsumerBase::releaseBufferLocked( int slot, const sp<GraphicBuffer> graphicBuffer, int slot, const sp<GraphicBuffer> graphicBuffer, EGLDisplay display, EGLSyncKHR eglFence) { EGLDisplay display, EGLSyncKHR eglFence) { if (mAbandoned) { CB_LOGE("releaseBufferLocked: ConsumerBase is abandoned!"); return NO_INIT; } // If consumer no longer tracks this graphicBuffer (we received a new // If consumer no longer tracks this graphicBuffer (we received a new // buffer on the same slot), the buffer producer is definitely no longer // buffer on the same slot), the buffer producer is definitely no longer // tracking it. // tracking it. Loading
libs/gui/CpuConsumer.cpp +4 −0 Original line number Original line Diff line number Diff line Loading @@ -52,6 +52,10 @@ CpuConsumer::~CpuConsumer() { void CpuConsumer::setName(const String8& name) { void CpuConsumer::setName(const String8& name) { Mutex::Autolock _l(mMutex); Mutex::Autolock _l(mMutex); if (mAbandoned) { CC_LOGE("setName: CpuConsumer is abandoned!"); return; } mName = name; mName = name; mConsumer->setConsumerName(name); mConsumer->setConsumerName(name); } } Loading
libs/gui/GLConsumer.cpp +28 −0 Original line number Original line Diff line number Diff line Loading @@ -209,6 +209,10 @@ GLConsumer::GLConsumer(const sp<IGraphicBufferConsumer>& bq, uint32_t texTarget, status_t GLConsumer::setDefaultBufferSize(uint32_t w, uint32_t h) status_t GLConsumer::setDefaultBufferSize(uint32_t w, uint32_t h) { { Mutex::Autolock lock(mMutex); Mutex::Autolock lock(mMutex); if (mAbandoned) { GLC_LOGE("setDefaultBufferSize: GLConsumer is abandoned!"); return NO_INIT; } mDefaultWidth = w; mDefaultWidth = w; mDefaultHeight = h; mDefaultHeight = h; return mConsumer->setDefaultBufferSize(w, h); return mConsumer->setDefaultBufferSize(w, h); Loading Loading @@ -1059,34 +1063,58 @@ void GLConsumer::abandonLocked() { void GLConsumer::setName(const String8& name) { void GLConsumer::setName(const String8& name) { Mutex::Autolock _l(mMutex); Mutex::Autolock _l(mMutex); if (mAbandoned) { GLC_LOGE("setName: GLConsumer is abandoned!"); return; } mName = name; mName = name; mConsumer->setConsumerName(name); mConsumer->setConsumerName(name); } } status_t GLConsumer::setDefaultBufferFormat(PixelFormat defaultFormat) { status_t GLConsumer::setDefaultBufferFormat(PixelFormat defaultFormat) { Mutex::Autolock lock(mMutex); Mutex::Autolock lock(mMutex); if (mAbandoned) { GLC_LOGE("setDefaultBufferFormat: GLConsumer is abandoned!"); return NO_INIT; } return mConsumer->setDefaultBufferFormat(defaultFormat); return mConsumer->setDefaultBufferFormat(defaultFormat); } } status_t GLConsumer::setDefaultBufferDataSpace( status_t GLConsumer::setDefaultBufferDataSpace( android_dataspace defaultDataSpace) { android_dataspace defaultDataSpace) { Mutex::Autolock lock(mMutex); Mutex::Autolock lock(mMutex); if (mAbandoned) { GLC_LOGE("setDefaultBufferDataSpace: GLConsumer is abandoned!"); return NO_INIT; } return mConsumer->setDefaultBufferDataSpace(defaultDataSpace); return mConsumer->setDefaultBufferDataSpace(defaultDataSpace); } } status_t GLConsumer::setConsumerUsageBits(uint32_t usage) { status_t GLConsumer::setConsumerUsageBits(uint32_t usage) { Mutex::Autolock lock(mMutex); Mutex::Autolock lock(mMutex); if (mAbandoned) { GLC_LOGE("setConsumerUsageBits: GLConsumer is abandoned!"); return NO_INIT; } usage |= DEFAULT_USAGE_FLAGS; usage |= DEFAULT_USAGE_FLAGS; return mConsumer->setConsumerUsageBits(usage); return mConsumer->setConsumerUsageBits(usage); } } status_t GLConsumer::setTransformHint(uint32_t hint) { status_t GLConsumer::setTransformHint(uint32_t hint) { Mutex::Autolock lock(mMutex); Mutex::Autolock lock(mMutex); if (mAbandoned) { GLC_LOGE("setTransformHint: GLConsumer is abandoned!"); return NO_INIT; } return mConsumer->setTransformHint(hint); return mConsumer->setTransformHint(hint); } } status_t GLConsumer::setMaxAcquiredBufferCount(int maxAcquiredBuffers) { status_t GLConsumer::setMaxAcquiredBufferCount(int maxAcquiredBuffers) { Mutex::Autolock lock(mMutex); Mutex::Autolock lock(mMutex); if (mAbandoned) { GLC_LOGE("setMaxAcquiredBufferCount: GLConsumer is abandoned!"); return NO_INIT; } return mConsumer->setMaxAcquiredBufferCount(maxAcquiredBuffers); return mConsumer->setMaxAcquiredBufferCount(maxAcquiredBuffers); } } Loading