diff options
| author | John Reck <jreck@google.com> | 2014-10-31 23:25:44 +0000 |
|---|---|---|
| committer | android-build-merger <android-build-merger@google.com> | 2014-10-31 23:25:44 +0000 |
| commit | e05575e9c36850d8cfe49396ac9a1372511b12bf (patch) | |
| tree | cd106a73af96598499f82ac5dc5fc40dabb3df4a /libs/hwui/renderthread/RenderProxy.cpp | |
| parent | 58f2a1e8a47de6c3ce4f588b07fc052f4687492d (diff) | |
| parent | a51fba0bf037844bcb911e69e8af733e6d2cccf6 (diff) | |
| download | frameworks_base-e05575e9c36850d8cfe49396ac9a1372511b12bf.zip frameworks_base-e05575e9c36850d8cfe49396ac9a1372511b12bf.tar.gz frameworks_base-e05575e9c36850d8cfe49396ac9a1372511b12bf.tar.bz2 | |
am a8d83d63: Merge "Layer changes" into lmp-mr1-dev
automerge: a51fba0
* commit 'a51fba0bf037844bcb911e69e8af733e6d2cccf6':
Layer changes
Diffstat (limited to 'libs/hwui/renderthread/RenderProxy.cpp')
| -rw-r--r-- | libs/hwui/renderthread/RenderProxy.cpp | 42 |
1 files changed, 25 insertions, 17 deletions
diff --git a/libs/hwui/renderthread/RenderProxy.cpp b/libs/hwui/renderthread/RenderProxy.cpp index 8f99b4e..5d55ea6 100644 --- a/libs/hwui/renderthread/RenderProxy.cpp +++ b/libs/hwui/renderthread/RenderProxy.cpp @@ -235,12 +235,7 @@ void RenderProxy::invokeFunctor(Functor* functor, bool waitForCompletion) { // waitForCompletion = true is expected to be fairly rare and only // happen in destruction. Thus it should be fine to temporarily // create a Mutex - Mutex mutex; - Condition condition; - SignalingRenderTask syncTask(task, &mutex, &condition); - AutoMutex _lock(mutex); - thread.queue(&syncTask); - condition.wait(mutex); + staticPostAndWait(task); } else { thread.queue(task); } @@ -258,17 +253,6 @@ void RenderProxy::runWithGlContext(RenderTask* gltask) { postAndWait(task); } -CREATE_BRIDGE1(destroyLayer, Layer* layer) { - LayerRenderer::destroyLayer(args->layer); - return NULL; -} - -void RenderProxy::enqueueDestroyLayer(Layer* layer) { - SETUP_TASK(destroyLayer); - args->layer = layer; - RenderThread::getInstance().queue(task); -} - CREATE_BRIDGE2(createTextureLayer, RenderThread* thread, CanvasContext* context) { Layer* layer = args->context->createTextureLayer(); if (!layer) return 0; @@ -400,6 +384,17 @@ void RenderProxy::dumpProfileInfo(int fd) { postAndWait(task); } +CREATE_BRIDGE1(outputLogBuffer, int fd) { + RenderNode::outputLogBuffer(args->fd); + return NULL; +} + +void RenderProxy::outputLogBuffer(int fd) { + SETUP_TASK(outputLogBuffer); + args->fd = fd; + staticPostAndWait(task); +} + CREATE_BRIDGE4(setTextureAtlas, RenderThread* thread, GraphicBuffer* buffer, int64_t* map, size_t size) { CanvasContext::setTextureAtlas(*args->thread, args->buffer, args->map, args->size); args->buffer->decStrong(0); @@ -430,6 +425,19 @@ void* RenderProxy::postAndWait(MethodInvokeRenderTask* task) { return retval; } +void* RenderProxy::staticPostAndWait(MethodInvokeRenderTask* task) { + RenderThread& thread = RenderThread::getInstance(); + void* retval; + task->setReturnPtr(&retval); + Mutex mutex; + Condition condition; + SignalingRenderTask syncTask(task, &mutex, &condition); + AutoMutex _lock(mutex); + thread.queue(&syncTask); + condition.wait(mutex); + return retval; +} + } /* namespace renderthread */ } /* namespace uirenderer */ } /* namespace android */ |
