summaryrefslogtreecommitdiffstats
path: root/libs
diff options
context:
space:
mode:
authorJohn Reck <jreck@google.com>2014-11-07 18:48:43 +0000
committerAndroid Git Automerger <android-git-automerger@android.com>2014-11-07 18:48:43 +0000
commitcabf8a706474210f6afa13e7b288bb537351ad3d (patch)
tree5d192ac048b82b392033af29a9e7207b6b5a28f9 /libs
parentffa2b14d6f22d7ba2c6ca0ca392aa927009ac54b (diff)
parentf7d3ce6a3ca88b23a227e29a5fa3285e24f7b2b1 (diff)
downloadframeworks_base-cabf8a706474210f6afa13e7b288bb537351ad3d.zip
frameworks_base-cabf8a706474210f6afa13e7b288bb537351ad3d.tar.gz
frameworks_base-cabf8a706474210f6afa13e7b288bb537351ad3d.tar.bz2
am f7d3ce6a: am 4b19b7aa: Merge "Fix wrong-thread issue" into lmp-mr1-dev
* commit 'f7d3ce6a3ca88b23a227e29a5fa3285e24f7b2b1': Fix wrong-thread issue
Diffstat (limited to 'libs')
-rw-r--r--libs/hwui/DeferredLayerUpdater.h2
-rw-r--r--libs/hwui/DisplayListRenderer.cpp9
-rw-r--r--libs/hwui/DisplayListRenderer.h3
-rw-r--r--libs/hwui/Renderer.h1
4 files changed, 9 insertions, 6 deletions
diff --git a/libs/hwui/DeferredLayerUpdater.h b/libs/hwui/DeferredLayerUpdater.h
index dda3e89..84411ed 100644
--- a/libs/hwui/DeferredLayerUpdater.h
+++ b/libs/hwui/DeferredLayerUpdater.h
@@ -76,7 +76,7 @@ public:
ANDROID_API bool apply();
- ANDROID_API Layer* backingLayer() {
+ Layer* backingLayer() {
return mLayer;
}
diff --git a/libs/hwui/DisplayListRenderer.cpp b/libs/hwui/DisplayListRenderer.cpp
index 1b1f6cc..c2cb76e 100644
--- a/libs/hwui/DisplayListRenderer.cpp
+++ b/libs/hwui/DisplayListRenderer.cpp
@@ -23,6 +23,7 @@
#include "ResourceCache.h"
#include "DeferredDisplayList.h"
+#include "DeferredLayerUpdater.h"
#include "DisplayListLogBuffer.h"
#include "DisplayListOp.h"
#include "DisplayListRenderer.h"
@@ -188,9 +189,11 @@ status_t DisplayListRenderer::drawRenderNode(RenderNode* renderNode, Rect& dirty
return DrawGlInfo::kStatusDone;
}
-status_t DisplayListRenderer::drawLayer(Layer* layer, float x, float y) {
- mDisplayListData->ref(layer);
- addDrawOp(new (alloc()) DrawLayerOp(layer, x, y));
+status_t DisplayListRenderer::drawLayer(DeferredLayerUpdater* layerHandle, float x, float y) {
+ // We ref the DeferredLayerUpdater due to its thread-safe ref-counting
+ // semantics.
+ mDisplayListData->ref(layerHandle);
+ addDrawOp(new (alloc()) DrawLayerOp(layerHandle->backingLayer(), x, y));
return DrawGlInfo::kStatusDone;
}
diff --git a/libs/hwui/DisplayListRenderer.h b/libs/hwui/DisplayListRenderer.h
index 8068663..2cc2be3 100644
--- a/libs/hwui/DisplayListRenderer.h
+++ b/libs/hwui/DisplayListRenderer.h
@@ -45,6 +45,7 @@ namespace uirenderer {
///////////////////////////////////////////////////////////////////////////////
class DeferredDisplayList;
+class DeferredLayerUpdater;
class DisplayListRenderer;
class DisplayListOp;
class DrawOp;
@@ -151,7 +152,7 @@ public:
// ----------------------------------------------------------------------------
// Canvas draw operations - special
// ----------------------------------------------------------------------------
- virtual status_t drawLayer(Layer* layer, float x, float y);
+ virtual status_t drawLayer(DeferredLayerUpdater* layerHandle, float x, float y);
virtual status_t drawRenderNode(RenderNode* renderNode, Rect& dirty, int32_t replayFlags);
// TODO: rename for consistency
diff --git a/libs/hwui/Renderer.h b/libs/hwui/Renderer.h
index a2f8c05..3159d1e 100644
--- a/libs/hwui/Renderer.h
+++ b/libs/hwui/Renderer.h
@@ -220,7 +220,6 @@ public:
// ----------------------------------------------------------------------------
// Canvas draw operations - special
// ----------------------------------------------------------------------------
- virtual status_t drawLayer(Layer* layer, float x, float y) = 0;
virtual status_t drawRenderNode(RenderNode* renderNode, Rect& dirty,
int32_t replayFlags) = 0;