Loading libs/hwui/renderthread/CanvasContext.cpp +10 −0 Original line number Original line Diff line number Diff line Loading @@ -490,6 +490,16 @@ void CanvasContext::runWithGlContext(RenderTask* task) { task->run(); task->run(); } } Layer* CanvasContext::createRenderLayer(int width, int height) { requireGlContext(); return LayerRenderer::createRenderLayer(width, height); } Layer* CanvasContext::createTextureLayer() { requireGlContext(); return LayerRenderer::createTextureLayer(); } void CanvasContext::requireGlContext() { void CanvasContext::requireGlContext() { if (mEglSurface != EGL_NO_SURFACE) { if (mEglSurface != EGL_NO_SURFACE) { mGlobalContext->makeCurrent(mEglSurface); mGlobalContext->makeCurrent(mEglSurface); Loading libs/hwui/renderthread/CanvasContext.h +4 −0 Original line number Original line Diff line number Diff line Loading @@ -35,6 +35,7 @@ class RenderNode; class DisplayListData; class DisplayListData; class OpenGLRenderer; class OpenGLRenderer; class Rect; class Rect; class Layer; namespace renderthread { namespace renderthread { Loading Loading @@ -76,6 +77,9 @@ public: void runWithGlContext(RenderTask* task); void runWithGlContext(RenderTask* task); Layer* createRenderLayer(int width, int height); Layer* createTextureLayer(); private: private: void setSurface(EGLNativeWindowType window); void setSurface(EGLNativeWindowType window); void swapBuffers(); void swapBuffers(); Loading libs/hwui/renderthread/RenderProxy.cpp +6 −5 Original line number Original line Diff line number Diff line Loading @@ -202,10 +202,9 @@ void RenderProxy::runWithGlContext(RenderTask* gltask) { postAndWait(task); postAndWait(task); } } CREATE_BRIDGE2(createDisplayListLayer, int width, int height) { CREATE_BRIDGE3(createDisplayListLayer, CanvasContext* context, int width, int height) { Layer* layer = LayerRenderer::createRenderLayer(args->width, args->height); Layer* layer = args->context->createRenderLayer(args->width, args->height); if (!layer) return 0; if (!layer) return 0; return new DeferredLayerUpdater(layer); return new DeferredLayerUpdater(layer); } } Loading @@ -213,20 +212,22 @@ DeferredLayerUpdater* RenderProxy::createDisplayListLayer(int width, int height) SETUP_TASK(createDisplayListLayer); SETUP_TASK(createDisplayListLayer); args->width = width; args->width = width; args->height = height; args->height = height; args->context = mContext; void* retval = postAndWait(task); void* retval = postAndWait(task); DeferredLayerUpdater* layer = reinterpret_cast<DeferredLayerUpdater*>(retval); DeferredLayerUpdater* layer = reinterpret_cast<DeferredLayerUpdater*>(retval); mDrawFrameTask.addLayer(layer); mDrawFrameTask.addLayer(layer); return layer; return layer; } } CREATE_BRIDGE0(createTextureLayer) { CREATE_BRIDGE1(createTextureLayer, CanvasContext* context) { Layer* layer = LayerRenderer::createTextureLayer(); Layer* layer = args->context->createTextureLayer(); if (!layer) return 0; if (!layer) return 0; return new DeferredLayerUpdater(layer); return new DeferredLayerUpdater(layer); } } DeferredLayerUpdater* RenderProxy::createTextureLayer() { DeferredLayerUpdater* RenderProxy::createTextureLayer() { SETUP_TASK(createTextureLayer); SETUP_TASK(createTextureLayer); args->context = mContext; void* retval = postAndWait(task); void* retval = postAndWait(task); DeferredLayerUpdater* layer = reinterpret_cast<DeferredLayerUpdater*>(retval); DeferredLayerUpdater* layer = reinterpret_cast<DeferredLayerUpdater*>(retval); mDrawFrameTask.addLayer(layer); mDrawFrameTask.addLayer(layer); Loading Loading
libs/hwui/renderthread/CanvasContext.cpp +10 −0 Original line number Original line Diff line number Diff line Loading @@ -490,6 +490,16 @@ void CanvasContext::runWithGlContext(RenderTask* task) { task->run(); task->run(); } } Layer* CanvasContext::createRenderLayer(int width, int height) { requireGlContext(); return LayerRenderer::createRenderLayer(width, height); } Layer* CanvasContext::createTextureLayer() { requireGlContext(); return LayerRenderer::createTextureLayer(); } void CanvasContext::requireGlContext() { void CanvasContext::requireGlContext() { if (mEglSurface != EGL_NO_SURFACE) { if (mEglSurface != EGL_NO_SURFACE) { mGlobalContext->makeCurrent(mEglSurface); mGlobalContext->makeCurrent(mEglSurface); Loading
libs/hwui/renderthread/CanvasContext.h +4 −0 Original line number Original line Diff line number Diff line Loading @@ -35,6 +35,7 @@ class RenderNode; class DisplayListData; class DisplayListData; class OpenGLRenderer; class OpenGLRenderer; class Rect; class Rect; class Layer; namespace renderthread { namespace renderthread { Loading Loading @@ -76,6 +77,9 @@ public: void runWithGlContext(RenderTask* task); void runWithGlContext(RenderTask* task); Layer* createRenderLayer(int width, int height); Layer* createTextureLayer(); private: private: void setSurface(EGLNativeWindowType window); void setSurface(EGLNativeWindowType window); void swapBuffers(); void swapBuffers(); Loading
libs/hwui/renderthread/RenderProxy.cpp +6 −5 Original line number Original line Diff line number Diff line Loading @@ -202,10 +202,9 @@ void RenderProxy::runWithGlContext(RenderTask* gltask) { postAndWait(task); postAndWait(task); } } CREATE_BRIDGE2(createDisplayListLayer, int width, int height) { CREATE_BRIDGE3(createDisplayListLayer, CanvasContext* context, int width, int height) { Layer* layer = LayerRenderer::createRenderLayer(args->width, args->height); Layer* layer = args->context->createRenderLayer(args->width, args->height); if (!layer) return 0; if (!layer) return 0; return new DeferredLayerUpdater(layer); return new DeferredLayerUpdater(layer); } } Loading @@ -213,20 +212,22 @@ DeferredLayerUpdater* RenderProxy::createDisplayListLayer(int width, int height) SETUP_TASK(createDisplayListLayer); SETUP_TASK(createDisplayListLayer); args->width = width; args->width = width; args->height = height; args->height = height; args->context = mContext; void* retval = postAndWait(task); void* retval = postAndWait(task); DeferredLayerUpdater* layer = reinterpret_cast<DeferredLayerUpdater*>(retval); DeferredLayerUpdater* layer = reinterpret_cast<DeferredLayerUpdater*>(retval); mDrawFrameTask.addLayer(layer); mDrawFrameTask.addLayer(layer); return layer; return layer; } } CREATE_BRIDGE0(createTextureLayer) { CREATE_BRIDGE1(createTextureLayer, CanvasContext* context) { Layer* layer = LayerRenderer::createTextureLayer(); Layer* layer = args->context->createTextureLayer(); if (!layer) return 0; if (!layer) return 0; return new DeferredLayerUpdater(layer); return new DeferredLayerUpdater(layer); } } DeferredLayerUpdater* RenderProxy::createTextureLayer() { DeferredLayerUpdater* RenderProxy::createTextureLayer() { SETUP_TASK(createTextureLayer); SETUP_TASK(createTextureLayer); args->context = mContext; void* retval = postAndWait(task); void* retval = postAndWait(task); DeferredLayerUpdater* layer = reinterpret_cast<DeferredLayerUpdater*>(retval); DeferredLayerUpdater* layer = reinterpret_cast<DeferredLayerUpdater*>(retval); mDrawFrameTask.addLayer(layer); mDrawFrameTask.addLayer(layer); Loading