Loading include/ui/Surface.h +1 −2 Original line number Original line Diff line number Diff line Loading @@ -212,7 +212,7 @@ private: void setUsage(uint32_t reqUsage); void setUsage(uint32_t reqUsage); bool getUsage(uint32_t* usage); uint32_t getUsage() const; // constants // constants sp<SurfaceComposerClient> mClient; sp<SurfaceComposerClient> mClient; Loading @@ -227,7 +227,6 @@ private: // protected by mSurfaceLock // protected by mSurfaceLock Rect mSwapRectangle; Rect mSwapRectangle; uint32_t mUsage; uint32_t mUsage; int32_t mUsageChanged; // protected by mSurfaceLock. These are also used from lock/unlock // protected by mSurfaceLock. These are also used from lock/unlock // but in that case, they must be called form the same thread. // but in that case, they must be called form the same thread. Loading libs/ui/Surface.cpp +8 −18 Original line number Original line Diff line number Diff line Loading @@ -361,7 +361,6 @@ void Surface::init() const_cast<uint32_t&>(android_native_window_t::flags) = 0; const_cast<uint32_t&>(android_native_window_t::flags) = 0; // be default we request a hardware surface // be default we request a hardware surface mUsage = GRALLOC_USAGE_HW_RENDER; mUsage = GRALLOC_USAGE_HW_RENDER; mUsageChanged = true; mNeedFullUpdate = false; mNeedFullUpdate = false; } } Loading Loading @@ -499,13 +498,12 @@ int Surface::dequeueBuffer(android_native_buffer_t** buffer) return bufIdx; return bufIdx; } } // FIXME: in case of failure below, we need to undo the dequeue const uint32_t usage(getUsage()); uint32_t usage; const bool usageChanged = getUsage(&usage); const sp<SurfaceBuffer>& backBuffer(mBuffers[bufIdx]); const sp<SurfaceBuffer>& backBuffer(mBuffers[bufIdx]); if ((backBuffer == 0) || usageChanged || if (backBuffer == 0 || mSharedBufferClient->needNewBuffer(bufIdx)) { uint32_t(backBuffer->usage) != usage || mSharedBufferClient->needNewBuffer(bufIdx)) { err = getBufferLocked(bufIdx, usage); err = getBufferLocked(bufIdx, usage); LOGE_IF(err, "getBufferLocked(%ld, %08x) failed (%s)", LOGE_IF(err, "getBufferLocked(%ld, %08x) failed (%s)", bufIdx, usage, strerror(-err)); bufIdx, usage, strerror(-err)); Loading Loading @@ -600,21 +598,13 @@ int Surface::perform(int operation, va_list args) void Surface::setUsage(uint32_t reqUsage) void Surface::setUsage(uint32_t reqUsage) { { Mutex::Autolock _l(mSurfaceLock); Mutex::Autolock _l(mSurfaceLock); if (mUsage != reqUsage) { mUsageChanged = true; mUsage = reqUsage; mUsage = reqUsage; } } } bool Surface::getUsage(uint32_t* usage) uint32_t Surface::getUsage() const { { Mutex::Autolock _l(mSurfaceLock); Mutex::Autolock _l(mSurfaceLock); *usage = mUsage; return mUsage; if (mUsageChanged) { mUsageChanged = false; return true; } return false; } } // ---------------------------------------------------------------------------- // ---------------------------------------------------------------------------- Loading Loading
include/ui/Surface.h +1 −2 Original line number Original line Diff line number Diff line Loading @@ -212,7 +212,7 @@ private: void setUsage(uint32_t reqUsage); void setUsage(uint32_t reqUsage); bool getUsage(uint32_t* usage); uint32_t getUsage() const; // constants // constants sp<SurfaceComposerClient> mClient; sp<SurfaceComposerClient> mClient; Loading @@ -227,7 +227,6 @@ private: // protected by mSurfaceLock // protected by mSurfaceLock Rect mSwapRectangle; Rect mSwapRectangle; uint32_t mUsage; uint32_t mUsage; int32_t mUsageChanged; // protected by mSurfaceLock. These are also used from lock/unlock // protected by mSurfaceLock. These are also used from lock/unlock // but in that case, they must be called form the same thread. // but in that case, they must be called form the same thread. Loading
libs/ui/Surface.cpp +8 −18 Original line number Original line Diff line number Diff line Loading @@ -361,7 +361,6 @@ void Surface::init() const_cast<uint32_t&>(android_native_window_t::flags) = 0; const_cast<uint32_t&>(android_native_window_t::flags) = 0; // be default we request a hardware surface // be default we request a hardware surface mUsage = GRALLOC_USAGE_HW_RENDER; mUsage = GRALLOC_USAGE_HW_RENDER; mUsageChanged = true; mNeedFullUpdate = false; mNeedFullUpdate = false; } } Loading Loading @@ -499,13 +498,12 @@ int Surface::dequeueBuffer(android_native_buffer_t** buffer) return bufIdx; return bufIdx; } } // FIXME: in case of failure below, we need to undo the dequeue const uint32_t usage(getUsage()); uint32_t usage; const bool usageChanged = getUsage(&usage); const sp<SurfaceBuffer>& backBuffer(mBuffers[bufIdx]); const sp<SurfaceBuffer>& backBuffer(mBuffers[bufIdx]); if ((backBuffer == 0) || usageChanged || if (backBuffer == 0 || mSharedBufferClient->needNewBuffer(bufIdx)) { uint32_t(backBuffer->usage) != usage || mSharedBufferClient->needNewBuffer(bufIdx)) { err = getBufferLocked(bufIdx, usage); err = getBufferLocked(bufIdx, usage); LOGE_IF(err, "getBufferLocked(%ld, %08x) failed (%s)", LOGE_IF(err, "getBufferLocked(%ld, %08x) failed (%s)", bufIdx, usage, strerror(-err)); bufIdx, usage, strerror(-err)); Loading Loading @@ -600,21 +598,13 @@ int Surface::perform(int operation, va_list args) void Surface::setUsage(uint32_t reqUsage) void Surface::setUsage(uint32_t reqUsage) { { Mutex::Autolock _l(mSurfaceLock); Mutex::Autolock _l(mSurfaceLock); if (mUsage != reqUsage) { mUsageChanged = true; mUsage = reqUsage; mUsage = reqUsage; } } } bool Surface::getUsage(uint32_t* usage) uint32_t Surface::getUsage() const { { Mutex::Autolock _l(mSurfaceLock); Mutex::Autolock _l(mSurfaceLock); *usage = mUsage; return mUsage; if (mUsageChanged) { mUsageChanged = false; return true; } return false; } } // ---------------------------------------------------------------------------- // ---------------------------------------------------------------------------- Loading