Loading core/java/android/view/ThreadedRenderer.java +0 −1 Original line number Diff line number Diff line Loading @@ -493,7 +493,6 @@ public class ThreadedRenderer extends HardwareRenderer { private static native void nInvokeFunctor(long functor, boolean waitForCompletion); private static native long nCreateDisplayListLayer(long nativeProxy, int width, int height); private static native long nCreateTextureLayer(long nativeProxy); private static native void nBuildLayer(long nativeProxy, long node); private static native boolean nCopyLayerInto(long nativeProxy, long layer, long bitmap); Loading core/jni/android_view_ThreadedRenderer.cpp +0 −8 Original line number Diff line number Diff line Loading @@ -320,13 +320,6 @@ static void android_view_ThreadedRenderer_invokeFunctor(JNIEnv* env, jobject cla RenderProxy::invokeFunctor(functor, waitForCompletion); } static jlong android_view_ThreadedRenderer_createDisplayListLayer(JNIEnv* env, jobject clazz, jlong proxyPtr, jint width, jint height) { RenderProxy* proxy = reinterpret_cast<RenderProxy*>(proxyPtr); DeferredLayerUpdater* layer = proxy->createDisplayListLayer(width, height); return reinterpret_cast<jlong>(layer); } static jlong android_view_ThreadedRenderer_createTextureLayer(JNIEnv* env, jobject clazz, jlong proxyPtr) { RenderProxy* proxy = reinterpret_cast<RenderProxy*>(proxyPtr); Loading Loading @@ -443,7 +436,6 @@ static JNINativeMethod gMethods[] = { { "nDestroy", "(J)V", (void*) android_view_ThreadedRenderer_destroy }, { "nRegisterAnimatingRenderNode", "(JJ)V", (void*) android_view_ThreadedRenderer_registerAnimatingRenderNode }, { "nInvokeFunctor", "(JZ)V", (void*) android_view_ThreadedRenderer_invokeFunctor }, { "nCreateDisplayListLayer", "(JII)J", (void*) android_view_ThreadedRenderer_createDisplayListLayer }, { "nCreateTextureLayer", "(J)J", (void*) android_view_ThreadedRenderer_createTextureLayer }, { "nBuildLayer", "(JJ)V", (void*) android_view_ThreadedRenderer_buildLayer }, { "nCopyLayerInto", "(JJJ)Z", (void*) android_view_ThreadedRenderer_copyLayerInto }, Loading libs/hwui/DeferredLayerUpdater.cpp +30 −11 Original line number Diff line number Diff line Loading @@ -18,38 +18,52 @@ #include "OpenGLRenderer.h" #include "LayerRenderer.h" #include "renderthread/EglManager.h" #include "renderthread/RenderTask.h" namespace android { namespace uirenderer { static void defaultLayerDestroyer(Layer* layer) { Caches::getInstance().resourceCache.decrementRefcount(layer); class DeleteLayerTask : public renderthread::RenderTask { public: DeleteLayerTask(renderthread::EglManager& eglManager, Layer* layer) : mEglManager(eglManager) , mLayer(layer) {} virtual void run() { mEglManager.requireGlContext(); LayerRenderer::destroyLayer(mLayer); mLayer = 0; delete this; } DeferredLayerUpdater::DeferredLayerUpdater(Layer* layer, LayerDestroyer destroyer) private: renderthread::EglManager& mEglManager; Layer* mLayer; }; DeferredLayerUpdater::DeferredLayerUpdater(renderthread::RenderThread& thread, Layer* layer) : mSurfaceTexture(0) , mTransform(0) , mNeedsGLContextAttach(false) , mUpdateTexImage(false) , mLayer(layer) , mCaches(Caches::getInstance()) , mDestroyer(destroyer) { , mRenderThread(thread) { mWidth = mLayer->layer.getWidth(); mHeight = mLayer->layer.getHeight(); mBlend = mLayer->isBlend(); mColorFilter = SkSafeRef(mLayer->getColorFilter()); mAlpha = mLayer->getAlpha(); mMode = mLayer->getMode(); if (!mDestroyer) { mDestroyer = defaultLayerDestroyer; } } DeferredLayerUpdater::~DeferredLayerUpdater() { SkSafeUnref(mColorFilter); setTransform(0); mDestroyer(mLayer); mRenderThread.queue(new DeleteLayerTask(mRenderThread.eglManager(), mLayer)); mLayer = 0; } void DeferredLayerUpdater::setPaint(const SkPaint* paint) { Loading Loading @@ -121,7 +135,12 @@ void DeferredLayerUpdater::doUpdateTexImage() { void DeferredLayerUpdater::detachSurfaceTexture() { if (mSurfaceTexture.get()) { mSurfaceTexture->detachFromContext(); mRenderThread.eglManager().requireGlContext(); status_t err = mSurfaceTexture->detachFromContext(); if (err != 0) { // TODO: Elevate to fatal exception ALOGE("Failed to detach SurfaceTexture from context %d", err); } mSurfaceTexture = 0; mLayer->clearTexture(); } Loading libs/hwui/DeferredLayerUpdater.h +3 −5 Original line number Diff line number Diff line Loading @@ -25,19 +25,18 @@ #include "Layer.h" #include "Rect.h" #include "RenderNode.h" #include "renderthread/RenderThread.h" namespace android { namespace uirenderer { typedef void (*LayerDestroyer)(Layer* layer); // Container to hold the properties a layer should be set to at the start // of a render pass class DeferredLayerUpdater : public VirtualLightRefBase { public: // Note that DeferredLayerUpdater assumes it is taking ownership of the layer // and will not call incrementRef on it as a result. ANDROID_API DeferredLayerUpdater(Layer* layer, LayerDestroyer = 0); ANDROID_API DeferredLayerUpdater(renderthread::RenderThread& thread, Layer* layer); ANDROID_API ~DeferredLayerUpdater(); ANDROID_API bool setSize(uint32_t width, uint32_t height) { Loading Loading @@ -99,8 +98,7 @@ private: Layer* mLayer; Caches& mCaches; LayerDestroyer mDestroyer; renderthread::RenderThread& mRenderThread; void doUpdateTexImage(); }; Loading libs/hwui/renderthread/CanvasContext.cpp +0 −5 Original line number Diff line number Diff line Loading @@ -344,11 +344,6 @@ void CanvasContext::runWithGlContext(RenderTask* task) { task->run(); } Layer* CanvasContext::createRenderLayer(int width, int height) { requireSurface(); return LayerRenderer::createRenderLayer(mRenderThread.renderState(), width, height); } Layer* CanvasContext::createTextureLayer() { requireSurface(); return LayerRenderer::createTextureLayer(mRenderThread.renderState()); Loading Loading
core/java/android/view/ThreadedRenderer.java +0 −1 Original line number Diff line number Diff line Loading @@ -493,7 +493,6 @@ public class ThreadedRenderer extends HardwareRenderer { private static native void nInvokeFunctor(long functor, boolean waitForCompletion); private static native long nCreateDisplayListLayer(long nativeProxy, int width, int height); private static native long nCreateTextureLayer(long nativeProxy); private static native void nBuildLayer(long nativeProxy, long node); private static native boolean nCopyLayerInto(long nativeProxy, long layer, long bitmap); Loading
core/jni/android_view_ThreadedRenderer.cpp +0 −8 Original line number Diff line number Diff line Loading @@ -320,13 +320,6 @@ static void android_view_ThreadedRenderer_invokeFunctor(JNIEnv* env, jobject cla RenderProxy::invokeFunctor(functor, waitForCompletion); } static jlong android_view_ThreadedRenderer_createDisplayListLayer(JNIEnv* env, jobject clazz, jlong proxyPtr, jint width, jint height) { RenderProxy* proxy = reinterpret_cast<RenderProxy*>(proxyPtr); DeferredLayerUpdater* layer = proxy->createDisplayListLayer(width, height); return reinterpret_cast<jlong>(layer); } static jlong android_view_ThreadedRenderer_createTextureLayer(JNIEnv* env, jobject clazz, jlong proxyPtr) { RenderProxy* proxy = reinterpret_cast<RenderProxy*>(proxyPtr); Loading Loading @@ -443,7 +436,6 @@ static JNINativeMethod gMethods[] = { { "nDestroy", "(J)V", (void*) android_view_ThreadedRenderer_destroy }, { "nRegisterAnimatingRenderNode", "(JJ)V", (void*) android_view_ThreadedRenderer_registerAnimatingRenderNode }, { "nInvokeFunctor", "(JZ)V", (void*) android_view_ThreadedRenderer_invokeFunctor }, { "nCreateDisplayListLayer", "(JII)J", (void*) android_view_ThreadedRenderer_createDisplayListLayer }, { "nCreateTextureLayer", "(J)J", (void*) android_view_ThreadedRenderer_createTextureLayer }, { "nBuildLayer", "(JJ)V", (void*) android_view_ThreadedRenderer_buildLayer }, { "nCopyLayerInto", "(JJJ)Z", (void*) android_view_ThreadedRenderer_copyLayerInto }, Loading
libs/hwui/DeferredLayerUpdater.cpp +30 −11 Original line number Diff line number Diff line Loading @@ -18,38 +18,52 @@ #include "OpenGLRenderer.h" #include "LayerRenderer.h" #include "renderthread/EglManager.h" #include "renderthread/RenderTask.h" namespace android { namespace uirenderer { static void defaultLayerDestroyer(Layer* layer) { Caches::getInstance().resourceCache.decrementRefcount(layer); class DeleteLayerTask : public renderthread::RenderTask { public: DeleteLayerTask(renderthread::EglManager& eglManager, Layer* layer) : mEglManager(eglManager) , mLayer(layer) {} virtual void run() { mEglManager.requireGlContext(); LayerRenderer::destroyLayer(mLayer); mLayer = 0; delete this; } DeferredLayerUpdater::DeferredLayerUpdater(Layer* layer, LayerDestroyer destroyer) private: renderthread::EglManager& mEglManager; Layer* mLayer; }; DeferredLayerUpdater::DeferredLayerUpdater(renderthread::RenderThread& thread, Layer* layer) : mSurfaceTexture(0) , mTransform(0) , mNeedsGLContextAttach(false) , mUpdateTexImage(false) , mLayer(layer) , mCaches(Caches::getInstance()) , mDestroyer(destroyer) { , mRenderThread(thread) { mWidth = mLayer->layer.getWidth(); mHeight = mLayer->layer.getHeight(); mBlend = mLayer->isBlend(); mColorFilter = SkSafeRef(mLayer->getColorFilter()); mAlpha = mLayer->getAlpha(); mMode = mLayer->getMode(); if (!mDestroyer) { mDestroyer = defaultLayerDestroyer; } } DeferredLayerUpdater::~DeferredLayerUpdater() { SkSafeUnref(mColorFilter); setTransform(0); mDestroyer(mLayer); mRenderThread.queue(new DeleteLayerTask(mRenderThread.eglManager(), mLayer)); mLayer = 0; } void DeferredLayerUpdater::setPaint(const SkPaint* paint) { Loading Loading @@ -121,7 +135,12 @@ void DeferredLayerUpdater::doUpdateTexImage() { void DeferredLayerUpdater::detachSurfaceTexture() { if (mSurfaceTexture.get()) { mSurfaceTexture->detachFromContext(); mRenderThread.eglManager().requireGlContext(); status_t err = mSurfaceTexture->detachFromContext(); if (err != 0) { // TODO: Elevate to fatal exception ALOGE("Failed to detach SurfaceTexture from context %d", err); } mSurfaceTexture = 0; mLayer->clearTexture(); } Loading
libs/hwui/DeferredLayerUpdater.h +3 −5 Original line number Diff line number Diff line Loading @@ -25,19 +25,18 @@ #include "Layer.h" #include "Rect.h" #include "RenderNode.h" #include "renderthread/RenderThread.h" namespace android { namespace uirenderer { typedef void (*LayerDestroyer)(Layer* layer); // Container to hold the properties a layer should be set to at the start // of a render pass class DeferredLayerUpdater : public VirtualLightRefBase { public: // Note that DeferredLayerUpdater assumes it is taking ownership of the layer // and will not call incrementRef on it as a result. ANDROID_API DeferredLayerUpdater(Layer* layer, LayerDestroyer = 0); ANDROID_API DeferredLayerUpdater(renderthread::RenderThread& thread, Layer* layer); ANDROID_API ~DeferredLayerUpdater(); ANDROID_API bool setSize(uint32_t width, uint32_t height) { Loading Loading @@ -99,8 +98,7 @@ private: Layer* mLayer; Caches& mCaches; LayerDestroyer mDestroyer; renderthread::RenderThread& mRenderThread; void doUpdateTexImage(); }; Loading
libs/hwui/renderthread/CanvasContext.cpp +0 −5 Original line number Diff line number Diff line Loading @@ -344,11 +344,6 @@ void CanvasContext::runWithGlContext(RenderTask* task) { task->run(); } Layer* CanvasContext::createRenderLayer(int width, int height) { requireSurface(); return LayerRenderer::createRenderLayer(mRenderThread.renderState(), width, height); } Layer* CanvasContext::createTextureLayer() { requireSurface(); return LayerRenderer::createTextureLayer(mRenderThread.renderState()); Loading