diff options
author | John Reck <jreck@google.com> | 2016-01-14 15:09:10 -0800 |
---|---|---|
committer | John Reck <jreck@google.com> | 2016-01-14 15:09:10 -0800 |
commit | a55b5d6c65cde2b7cc28bb3ea160bfaaef7a446a (patch) | |
tree | 980a64da866ac9617e2bfb2e3f4b38703997fea5 /libs/hwui/renderstate/RenderState.cpp | |
parent | 00159554e0f96a6d3a742f21bca6f48281e2fc04 (diff) |
Fix "leak" in FrameBuilder.textureLayer test
DeferredLayerUpdater always did a post to delete itself, which
would result in the test thinking it had leaked an object since
it wasn't deleted when it returned. Fix this by deleting immediately
if we're already on the right thread.
Remove RenderState's requireGlContext assert as it's now
covered by GpuMemoryTracker, which is also more test friendly.
RenderState's assert required an actual EGL context, which we
don't mock away in unit tests.
Change-Id: Ic23eb54e7151355f7acca483d7464350c9d6a87f
Diffstat (limited to 'libs/hwui/renderstate/RenderState.cpp')
-rw-r--r-- | libs/hwui/renderstate/RenderState.cpp | 17 |
1 files changed, 5 insertions, 12 deletions
diff --git a/libs/hwui/renderstate/RenderState.cpp b/libs/hwui/renderstate/RenderState.cpp index 4a1e8fcfedf2..b6dba02cb01d 100644 --- a/libs/hwui/renderstate/RenderState.cpp +++ b/libs/hwui/renderstate/RenderState.cpp @@ -209,17 +209,6 @@ void RenderState::debugOverdraw(bool enable, bool clear) { } } -void RenderState::requireGLContext() { - assertOnGLThread(); - LOG_ALWAYS_FATAL_IF(!mRenderThread.eglManager().hasEglContext(), - "No GL context!"); -} - -void RenderState::assertOnGLThread() { - pthread_t curr = pthread_self(); - LOG_ALWAYS_FATAL_IF(!pthread_equal(mThreadId, curr), "Wrong thread!"); -} - class DecStrongTask : public renderthread::RenderTask { public: DecStrongTask(VirtualLightRefBase* object) : mObject(object) {} @@ -235,7 +224,11 @@ private: }; void RenderState::postDecStrong(VirtualLightRefBase* object) { - mRenderThread.queue(new DecStrongTask(object)); + if (pthread_equal(mThreadId, pthread_self())) { + object->decStrong(nullptr); + } else { + mRenderThread.queue(new DecStrongTask(object)); + } } /////////////////////////////////////////////////////////////////////////////// |