Loading core/java/android/view/GLES20Canvas.java +4 −3 Original line number Original line Diff line number Diff line Loading @@ -399,12 +399,13 @@ class GLES20Canvas extends HardwareCanvas { /////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////// void drawHardwareLayer(HardwareLayer layer, float x, float y, Paint paint) { void drawHardwareLayer(HardwareLayer layer, float x, float y, Paint paint) { layer.setLayerPaint(paint); final GLES20Layer glLayer = (GLES20Layer) layer; final GLES20Layer glLayer = (GLES20Layer) layer; final int nativePaint = paint == null ? 0 : paint.mNativePaint; nDrawLayer(mRenderer, glLayer.getLayer(), x, y); nDrawLayer(mRenderer, glLayer.getLayer(), x, y, nativePaint); } } private static native void nDrawLayer(int renderer, int layer, float x, float y, int paint); private static native void nDrawLayer(int renderer, int layer, float x, float y); void interrupt() { void interrupt() { nInterrupt(mRenderer); nInterrupt(mRenderer); Loading core/jni/android_view_GLES20Canvas.cpp +2 −3 Original line number Original line Diff line number Diff line Loading @@ -868,8 +868,7 @@ static void android_view_GLES20Canvas_destroyLayerDeferred(JNIEnv* env, } } static void android_view_GLES20Canvas_drawLayer(JNIEnv* env, jobject clazz, static void android_view_GLES20Canvas_drawLayer(JNIEnv* env, jobject clazz, OpenGLRenderer* renderer, Layer* layer, jfloat x, jfloat y, SkPaint* paint) { OpenGLRenderer* renderer, Layer* layer, jfloat x, jfloat y) { // TODO: don't pass the paint from java renderer->drawLayer(layer, x, y); renderer->drawLayer(layer, x, y); } } Loading Loading @@ -1051,7 +1050,7 @@ static JNINativeMethod gMethods[] = { { "nClearLayerTexture", "(I)V", (void*) android_view_GLES20Canvas_clearLayerTexture }, { "nClearLayerTexture", "(I)V", (void*) android_view_GLES20Canvas_clearLayerTexture }, { "nDestroyLayer", "(I)V", (void*) android_view_GLES20Canvas_destroyLayer }, { "nDestroyLayer", "(I)V", (void*) android_view_GLES20Canvas_destroyLayer }, { "nDestroyLayerDeferred", "(I)V", (void*) android_view_GLES20Canvas_destroyLayerDeferred }, { "nDestroyLayerDeferred", "(I)V", (void*) android_view_GLES20Canvas_destroyLayerDeferred }, { "nDrawLayer", "(IIFFI)V", (void*) android_view_GLES20Canvas_drawLayer }, { "nDrawLayer", "(IIFF)V", (void*) android_view_GLES20Canvas_drawLayer }, { "nCopyLayer", "(II)Z", (void*) android_view_GLES20Canvas_copyLayer }, { "nCopyLayer", "(II)Z", (void*) android_view_GLES20Canvas_copyLayer }, { "nClearLayerUpdates", "(I)V", (void*) android_view_GLES20Canvas_clearLayerUpdates }, { "nClearLayerUpdates", "(I)V", (void*) android_view_GLES20Canvas_clearLayerUpdates }, { "nPushLayerUpdate", "(II)V", (void*) android_view_GLES20Canvas_pushLayerUpdate }, { "nPushLayerUpdate", "(II)V", (void*) android_view_GLES20Canvas_pushLayerUpdate }, Loading libs/hwui/DeferredDisplayList.cpp +6 −1 Original line number Original line Diff line number Diff line Loading @@ -368,13 +368,18 @@ status_t DeferredDisplayList::flush(OpenGLRenderer& renderer, Rect& dirty) { status_t status = DrawGlInfo::kStatusDone; status_t status = DrawGlInfo::kStatusDone; if (isEmpty()) return status; // nothing to flush if (isEmpty()) return status; // nothing to flush renderer.restoreToCount(1); DEFER_LOGD("--flushing"); DEFER_LOGD("--flushing"); renderer.eventMark("Flush"); renderer.eventMark("Flush"); // save and restore (with draw modifiers) so that reordering doesn't affect final state DrawModifiers restoreDrawModifiers = renderer.getDrawModifiers(); DrawModifiers restoreDrawModifiers = renderer.getDrawModifiers(); renderer.restoreToCount(1); renderer.save(SkCanvas::kMatrix_SaveFlag | SkCanvas::kClip_SaveFlag); status |= replayBatchList(mBatches, renderer, dirty); status |= replayBatchList(mBatches, renderer, dirty); renderer.restoreToCount(1); renderer.setDrawModifiers(restoreDrawModifiers); renderer.setDrawModifiers(restoreDrawModifiers); DEFER_LOGD("--flush complete, returning %x", status); DEFER_LOGD("--flush complete, returning %x", status); Loading Loading
core/java/android/view/GLES20Canvas.java +4 −3 Original line number Original line Diff line number Diff line Loading @@ -399,12 +399,13 @@ class GLES20Canvas extends HardwareCanvas { /////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////// void drawHardwareLayer(HardwareLayer layer, float x, float y, Paint paint) { void drawHardwareLayer(HardwareLayer layer, float x, float y, Paint paint) { layer.setLayerPaint(paint); final GLES20Layer glLayer = (GLES20Layer) layer; final GLES20Layer glLayer = (GLES20Layer) layer; final int nativePaint = paint == null ? 0 : paint.mNativePaint; nDrawLayer(mRenderer, glLayer.getLayer(), x, y); nDrawLayer(mRenderer, glLayer.getLayer(), x, y, nativePaint); } } private static native void nDrawLayer(int renderer, int layer, float x, float y, int paint); private static native void nDrawLayer(int renderer, int layer, float x, float y); void interrupt() { void interrupt() { nInterrupt(mRenderer); nInterrupt(mRenderer); Loading
core/jni/android_view_GLES20Canvas.cpp +2 −3 Original line number Original line Diff line number Diff line Loading @@ -868,8 +868,7 @@ static void android_view_GLES20Canvas_destroyLayerDeferred(JNIEnv* env, } } static void android_view_GLES20Canvas_drawLayer(JNIEnv* env, jobject clazz, static void android_view_GLES20Canvas_drawLayer(JNIEnv* env, jobject clazz, OpenGLRenderer* renderer, Layer* layer, jfloat x, jfloat y, SkPaint* paint) { OpenGLRenderer* renderer, Layer* layer, jfloat x, jfloat y) { // TODO: don't pass the paint from java renderer->drawLayer(layer, x, y); renderer->drawLayer(layer, x, y); } } Loading Loading @@ -1051,7 +1050,7 @@ static JNINativeMethod gMethods[] = { { "nClearLayerTexture", "(I)V", (void*) android_view_GLES20Canvas_clearLayerTexture }, { "nClearLayerTexture", "(I)V", (void*) android_view_GLES20Canvas_clearLayerTexture }, { "nDestroyLayer", "(I)V", (void*) android_view_GLES20Canvas_destroyLayer }, { "nDestroyLayer", "(I)V", (void*) android_view_GLES20Canvas_destroyLayer }, { "nDestroyLayerDeferred", "(I)V", (void*) android_view_GLES20Canvas_destroyLayerDeferred }, { "nDestroyLayerDeferred", "(I)V", (void*) android_view_GLES20Canvas_destroyLayerDeferred }, { "nDrawLayer", "(IIFFI)V", (void*) android_view_GLES20Canvas_drawLayer }, { "nDrawLayer", "(IIFF)V", (void*) android_view_GLES20Canvas_drawLayer }, { "nCopyLayer", "(II)Z", (void*) android_view_GLES20Canvas_copyLayer }, { "nCopyLayer", "(II)Z", (void*) android_view_GLES20Canvas_copyLayer }, { "nClearLayerUpdates", "(I)V", (void*) android_view_GLES20Canvas_clearLayerUpdates }, { "nClearLayerUpdates", "(I)V", (void*) android_view_GLES20Canvas_clearLayerUpdates }, { "nPushLayerUpdate", "(II)V", (void*) android_view_GLES20Canvas_pushLayerUpdate }, { "nPushLayerUpdate", "(II)V", (void*) android_view_GLES20Canvas_pushLayerUpdate }, Loading
libs/hwui/DeferredDisplayList.cpp +6 −1 Original line number Original line Diff line number Diff line Loading @@ -368,13 +368,18 @@ status_t DeferredDisplayList::flush(OpenGLRenderer& renderer, Rect& dirty) { status_t status = DrawGlInfo::kStatusDone; status_t status = DrawGlInfo::kStatusDone; if (isEmpty()) return status; // nothing to flush if (isEmpty()) return status; // nothing to flush renderer.restoreToCount(1); DEFER_LOGD("--flushing"); DEFER_LOGD("--flushing"); renderer.eventMark("Flush"); renderer.eventMark("Flush"); // save and restore (with draw modifiers) so that reordering doesn't affect final state DrawModifiers restoreDrawModifiers = renderer.getDrawModifiers(); DrawModifiers restoreDrawModifiers = renderer.getDrawModifiers(); renderer.restoreToCount(1); renderer.save(SkCanvas::kMatrix_SaveFlag | SkCanvas::kClip_SaveFlag); status |= replayBatchList(mBatches, renderer, dirty); status |= replayBatchList(mBatches, renderer, dirty); renderer.restoreToCount(1); renderer.setDrawModifiers(restoreDrawModifiers); renderer.setDrawModifiers(restoreDrawModifiers); DEFER_LOGD("--flush complete, returning %x", status); DEFER_LOGD("--flush complete, returning %x", status); Loading