diff options
| -rw-r--r-- | core/java/android/view/GLES20Canvas.java | 21 | ||||
| -rw-r--r-- | core/java/android/view/GLRenderer.java | 34 | ||||
| -rw-r--r-- | core/java/android/view/HardwareCanvas.java | 39 | ||||
| -rw-r--r-- | core/java/android/view/HardwareRenderer.java | 22 | ||||
| -rw-r--r-- | core/java/android/view/ThreadedRenderer.java | 10 | ||||
| -rw-r--r-- | core/java/android/view/ViewRootImpl.java | 11 | ||||
| -rw-r--r-- | core/jni/android_view_GLES20Canvas.cpp | 30 | ||||
| -rw-r--r-- | libs/hwui/OpenGLRenderer.cpp | 40 | ||||
| -rw-r--r-- | libs/hwui/OpenGLRenderer.h | 5 | ||||
| -rw-r--r-- | libs/hwui/renderthread/CanvasContext.cpp | 5 |
10 files changed, 2 insertions, 215 deletions
diff --git a/core/java/android/view/GLES20Canvas.java b/core/java/android/view/GLES20Canvas.java index 11948b228573..f234baa01e4a 100644 --- a/core/java/android/view/GLES20Canvas.java +++ b/core/java/android/view/GLES20Canvas.java @@ -264,27 +264,6 @@ class GLES20Canvas extends HardwareCanvas { private static native int nCallDrawGLFunction(long renderer, long drawGLFunction); - @Override - public int invokeFunctors(Rect dirty) { - return nInvokeFunctors(mRenderer, dirty); - } - - private static native int nInvokeFunctors(long renderer, Rect dirty); - - @Override - public void detachFunctor(long functor) { - nDetachFunctor(mRenderer, functor); - } - - private static native void nDetachFunctor(long renderer, long functor); - - @Override - public void attachFunctor(long functor) { - nAttachFunctor(mRenderer, functor); - } - - private static native void nAttachFunctor(long renderer, long functor); - /////////////////////////////////////////////////////////////////////////// // Memory /////////////////////////////////////////////////////////////////////////// diff --git a/core/java/android/view/GLRenderer.java b/core/java/android/view/GLRenderer.java index 97339cc25477..c962b6694a8f 100644 --- a/core/java/android/view/GLRenderer.java +++ b/core/java/android/view/GLRenderer.java @@ -168,7 +168,6 @@ public class GLRenderer extends HardwareRenderer { private final Rect mRedrawClip = new Rect(); private final int[] mSurfaceSize = new int[2]; - private final FunctorsRunnable mFunctorsRunnable = new FunctorsRunnable(); private long mDrawDelta = Long.MAX_VALUE; @@ -1116,22 +1115,6 @@ public class GLRenderer extends HardwareRenderer { mName = name; } - class FunctorsRunnable implements Runnable { - View.AttachInfo attachInfo; - - @Override - public void run() { - final HardwareRenderer renderer = attachInfo.mHardwareRenderer; - if (renderer == null || !renderer.isEnabled() || renderer != GLRenderer.this) { - return; - } - - if (checkRenderContext() != SURFACE_STATE_ERROR) { - mCanvas.invokeFunctors(mRedrawClip); - } - } - } - @Override void draw(View view, View.AttachInfo attachInfo, HardwareDrawCallbacks callbacks, Rect dirty) { @@ -1366,23 +1349,6 @@ public class GLRenderer extends HardwareRenderer { } } - @Override - void detachFunctor(long functor) { - if (mCanvas != null) { - mCanvas.detachFunctor(functor); - } - } - - @Override - void attachFunctor(View.AttachInfo attachInfo, long functor) { - if (mCanvas != null) { - mCanvas.attachFunctor(functor); - mFunctorsRunnable.attachInfo = attachInfo; - attachInfo.mHandler.removeCallbacks(mFunctorsRunnable); - attachInfo.mHandler.postDelayed(mFunctorsRunnable, 0); - } - } - /** * Ensures the current EGL context and surface are the ones we expect. * This method throws an IllegalStateException if invoked from a thread diff --git a/core/java/android/view/HardwareCanvas.java b/core/java/android/view/HardwareCanvas.java index 7ec2cc607238..9568760dbe13 100644 --- a/core/java/android/view/HardwareCanvas.java +++ b/core/java/android/view/HardwareCanvas.java @@ -111,45 +111,6 @@ public abstract class HardwareCanvas extends Canvas { } /** - * Invoke all the functors who requested to be invoked during the previous frame. - * - * @param dirty Ignored - * - * @return Ignored - * - * @hide - */ - public int invokeFunctors(Rect dirty) { - return RenderNode.STATUS_DONE; - } - - /** - * Detaches the specified functor from the current functor execution queue. - * - * @param functor The native functor to remove from the execution queue. - * - * @see #invokeFunctors(android.graphics.Rect) - * @see #callDrawGLFunction(long) - * @see #detachFunctor(long) - * - * @hide - */ - abstract void detachFunctor(long functor); - - /** - * Attaches the specified functor to the current functor execution queue. - * - * @param functor The native functor to add to the execution queue. - * - * @see #invokeFunctors(android.graphics.Rect) - * @see #callDrawGLFunction(long) - * @see #detachFunctor(long) - * - * @hide - */ - abstract void attachFunctor(long functor); - - /** * Indicates that the specified layer must be updated as soon as possible. * * @param layer The layer to update diff --git a/core/java/android/view/HardwareRenderer.java b/core/java/android/view/HardwareRenderer.java index d31c79de327a..a6efe48be86d 100644 --- a/core/java/android/view/HardwareRenderer.java +++ b/core/java/android/view/HardwareRenderer.java @@ -423,28 +423,6 @@ public abstract class HardwareRenderer { abstract boolean copyLayerInto(HardwareLayer layer, Bitmap bitmap); /** - * Detaches the specified functor from the current functor execution queue. - * - * @param functor The native functor to remove from the execution queue. - * - * @see HardwareCanvas#callDrawGLFunction(int) - * @see #attachFunctor(android.view.View.AttachInfo, long) - */ - abstract void detachFunctor(long functor); - - /** - * Schedules the specified functor in the functors execution queue. - * - * @param attachInfo AttachInfo tied to this renderer. - * @param functor The native functor to insert in the execution queue. - * - * @see HardwareCanvas#callDrawGLFunction(int) - * @see #detachFunctor(long) - * - */ - abstract void attachFunctor(View.AttachInfo attachInfo, long functor); - - /** * Schedules the functor for execution in either kModeProcess or * kModeProcessNoContext, depending on whether or not there is an EGLContext. * diff --git a/core/java/android/view/ThreadedRenderer.java b/core/java/android/view/ThreadedRenderer.java index 0bf99d3bb3e3..255348e9f515 100644 --- a/core/java/android/view/ThreadedRenderer.java +++ b/core/java/android/view/ThreadedRenderer.java @@ -215,16 +215,6 @@ public class ThreadedRenderer extends HardwareRenderer { } @Override - void detachFunctor(long functor) { - // no-op, we never attach functors to need to detach them - } - - @Override - void attachFunctor(AttachInfo attachInfo, long functor) { - invokeFunctor(functor, true); - } - - @Override void invokeFunctor(long functor, boolean waitForCompletion) { nInvokeFunctor(mNativeProxy, functor, waitForCompletion); } diff --git a/core/java/android/view/ViewRootImpl.java b/core/java/android/view/ViewRootImpl.java index db87394a8aaa..aae033f218dd 100644 --- a/core/java/android/view/ViewRootImpl.java +++ b/core/java/android/view/ViewRootImpl.java @@ -665,18 +665,9 @@ public final class ViewRootImpl implements ViewParent, mHandler.sendMessageAtFrontOfQueue(mHandler.obtainMessage(MSG_FLUSH_LAYER_UPDATES)); } - public void attachFunctor(long functor) { - //noinspection SimplifiableIfStatement - if (mAttachInfo.mHardwareRenderer != null && mAttachInfo.mHardwareRenderer.isEnabled()) { - mAttachInfo.mHardwareRenderer.attachFunctor(mAttachInfo, functor); - } - } - public void detachFunctor(long functor) { + // TODO: Make the resize buffer some other way to not need this block mBlockResizeBuffer = true; - if (mAttachInfo.mHardwareRenderer != null) { - mAttachInfo.mHardwareRenderer.detachFunctor(functor); - } } public boolean invokeFunctor(long functor, boolean waitForCompletion) { diff --git a/core/jni/android_view_GLES20Canvas.cpp b/core/jni/android_view_GLES20Canvas.cpp index 3aa179d642e3..7b2f8296c354 100644 --- a/core/jni/android_view_GLES20Canvas.cpp +++ b/core/jni/android_view_GLES20Canvas.cpp @@ -206,32 +206,6 @@ static jint android_view_GLES20Canvas_callDrawGLFunction(JNIEnv* env, jobject cl return renderer->callDrawGLFunction(functor, dirty); } -static void android_view_GLES20Canvas_detachFunctor(JNIEnv* env, - jobject clazz, jlong rendererPtr, jlong functorPtr) { - OpenGLRenderer* renderer = reinterpret_cast<OpenGLRenderer*>(rendererPtr); - Functor* functor = reinterpret_cast<Functor*>(functorPtr); - renderer->detachFunctor(functor); -} - -static void android_view_GLES20Canvas_attachFunctor(JNIEnv* env, - jobject clazz, jlong rendererPtr, jlong functorPtr) { - OpenGLRenderer* renderer = reinterpret_cast<OpenGLRenderer*>(rendererPtr); - Functor* functor = reinterpret_cast<Functor*>(functorPtr); - renderer->attachFunctor(functor); -} - -static jint android_view_GLES20Canvas_invokeFunctors(JNIEnv* env, - jobject clazz, jlong rendererPtr, jobject dirty) { - OpenGLRenderer* renderer = reinterpret_cast<OpenGLRenderer*>(rendererPtr); - android::uirenderer::Rect bounds; - status_t status = renderer->invokeFunctors(bounds); - if (status != DrawGlInfo::kStatusDone && dirty != NULL) { - env->CallVoidMethod(dirty, gRectClassInfo.set, - int(bounds.left), int(bounds.top), int(bounds.right), int(bounds.bottom)); - } - return status; -} - // ---------------------------------------------------------------------------- // Misc // ---------------------------------------------------------------------------- @@ -1007,10 +981,6 @@ static JNINativeMethod gMethods[] = { { "nGetStencilSize", "()I", (void*) android_view_GLES20Canvas_getStencilSize }, { "nCallDrawGLFunction", "(JJ)I", (void*) android_view_GLES20Canvas_callDrawGLFunction }, - { "nDetachFunctor", "(JJ)V", (void*) android_view_GLES20Canvas_detachFunctor }, - { "nAttachFunctor", "(JJ)V", (void*) android_view_GLES20Canvas_attachFunctor }, - { "nInvokeFunctors", "(JLandroid/graphics/Rect;)I", - (void*) android_view_GLES20Canvas_invokeFunctors }, { "nSave", "(JI)I", (void*) android_view_GLES20Canvas_save }, { "nRestore", "(J)V", (void*) android_view_GLES20Canvas_restore }, diff --git a/libs/hwui/OpenGLRenderer.cpp b/libs/hwui/OpenGLRenderer.cpp index 95fdb0482441..6de369c6007c 100644 --- a/libs/hwui/OpenGLRenderer.cpp +++ b/libs/hwui/OpenGLRenderer.cpp @@ -379,49 +379,9 @@ void OpenGLRenderer::resumeAfterLayer() { dirtyClip(); } -void OpenGLRenderer::detachFunctor(Functor* functor) { - mFunctors.remove(functor); -} - -void OpenGLRenderer::attachFunctor(Functor* functor) { - mFunctors.add(functor); -} - -status_t OpenGLRenderer::invokeFunctors(Rect& dirty) { - status_t result = DrawGlInfo::kStatusDone; - size_t count = mFunctors.size(); - - if (count > 0) { - interrupt(); - SortedVector<Functor*> functors(mFunctors); - mFunctors.clear(); - - DrawGlInfo info; - info.clipLeft = 0; - info.clipTop = 0; - info.clipRight = 0; - info.clipBottom = 0; - info.isLayer = false; - info.width = 0; - info.height = 0; - memset(info.transform, 0, sizeof(float) * 16); - - for (size_t i = 0; i < count; i++) { - Functor* f = functors.itemAt(i); - result |= (*f)(DrawGlInfo::kModeProcess, &info); - } - resume(); - } - - return result; -} - status_t OpenGLRenderer::callDrawGLFunction(Functor* functor, Rect& dirty) { if (currentSnapshot()->isIgnored()) return DrawGlInfo::kStatusDone; - detachFunctor(functor); - - Rect clip(*currentClipRect()); clip.snapToPixelBoundaries(); diff --git a/libs/hwui/OpenGLRenderer.h b/libs/hwui/OpenGLRenderer.h index 7794abc5186f..4de52ac1e39b 100644 --- a/libs/hwui/OpenGLRenderer.h +++ b/libs/hwui/OpenGLRenderer.h @@ -151,9 +151,6 @@ public: return mCountOverdraw ? mOverdraw : 0.0f; } - ANDROID_API status_t invokeFunctors(Rect& dirty); - ANDROID_API void detachFunctor(Functor* functor); - ANDROID_API void attachFunctor(Functor* functor); virtual status_t callDrawGLFunction(Functor* functor, Rect& dirty); ANDROID_API void pushLayerUpdate(Layer* layer); @@ -959,8 +956,6 @@ private: // List of rectangles to clear after saveLayer() is invoked Vector<Rect*> mLayers; - // List of functors to invoke after a frame is drawn - SortedVector<Functor*> mFunctors; // List of layers to update at the beginning of a frame Vector<Layer*> mLayerUpdates; diff --git a/libs/hwui/renderthread/CanvasContext.cpp b/libs/hwui/renderthread/CanvasContext.cpp index fc3548ca5899..ca12736bca06 100644 --- a/libs/hwui/renderthread/CanvasContext.cpp +++ b/libs/hwui/renderthread/CanvasContext.cpp @@ -486,10 +486,7 @@ void CanvasContext::invokeFunctor(Functor* functor) { requireGlContext(); mode = DrawGlInfo::kModeProcess; } - // TODO: Remove the dummy info in the future - DrawGlInfo dummyInfo; - memset(&dummyInfo, 0, sizeof(DrawGlInfo)); - (*functor)(mode, &dummyInfo); + (*functor)(mode, NULL); if (mCanvas) { mCanvas->resume(); |