summaryrefslogtreecommitdiff
path: root/libs/hwui/renderstate/RenderState.cpp
diff options
context:
space:
mode:
authorJohn Reck <jreck@google.com>2016-01-14 15:09:10 -0800
committerJohn Reck <jreck@google.com>2016-01-14 15:09:10 -0800
commita55b5d6c65cde2b7cc28bb3ea160bfaaef7a446a (patch)
tree980a64da866ac9617e2bfb2e3f4b38703997fea5 /libs/hwui/renderstate/RenderState.cpp
parent00159554e0f96a6d3a742f21bca6f48281e2fc04 (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.cpp17
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));
+ }
}
///////////////////////////////////////////////////////////////////////////////