diff --git a/engine/src/flutter/shell/platform/android/android_external_texture_gl.cc b/engine/src/flutter/shell/platform/android/android_external_texture_gl.cc index 305ee4fd01d..41a89ccb951 100644 --- a/engine/src/flutter/shell/platform/android/android_external_texture_gl.cc +++ b/engine/src/flutter/shell/platform/android/android_external_texture_gl.cc @@ -4,6 +4,7 @@ #include "flutter/shell/platform/android/android_external_texture_gl.h" +// #include #include #include "flutter/common/threads.h" #include "flutter/shell/platform/android/platform_view_android_jni.h" @@ -14,7 +15,7 @@ namespace shell { AndroidExternalTextureGL::AndroidExternalTextureGL( int64_t id, const fml::jni::JavaObjectWeakGlobalRef& surfaceTexture) - : Texture(id), surface_texture_(surfaceTexture), transform(SkMatrix::I()) {} + : Texture(id), surface_texture_(surfaceTexture) {} AndroidExternalTextureGL::~AndroidExternalTextureGL() = default; @@ -43,42 +44,16 @@ void AndroidExternalTextureGL::Paint(SkCanvas& canvas, const SkRect& bounds) { new_frame_ready_ = false; } GrGLTextureInfo textureInfo = {GL_TEXTURE_EXTERNAL_OES, texture_name_}; - GrBackendTexture backendTexture(1, 1, kRGBA_8888_GrPixelConfig, textureInfo); + GrBackendTexture backendTexture(bounds.width(), bounds.height(), + kRGBA_8888_GrPixelConfig, textureInfo); sk_sp image = SkImage::MakeFromTexture( canvas.getGrContext(), backendTexture, kTopLeft_GrSurfaceOrigin, SkAlphaType::kPremul_SkAlphaType, nullptr); if (image) { - SkAutoCanvasRestore autoRestore(&canvas, true); - canvas.translate(bounds.x(), bounds.y()); - canvas.scale(bounds.width(), bounds.height()); - if (!transform.isIdentity()) { - SkMatrix transformAroundCenter(transform); - - transformAroundCenter.preTranslate(-0.5, -0.5); - transformAroundCenter.postScale(1, -1); - transformAroundCenter.postTranslate(0.5, 0.5); - canvas.concat(transformAroundCenter); - } - canvas.drawImage(image, 0, 0); + canvas.drawImage(image, bounds.x(), bounds.y()); } } -void AndroidExternalTextureGL::UpdateTransform() { - JNIEnv* env = fml::jni::AttachCurrentThread(); - fml::jni::ScopedJavaLocalRef surfaceTexture = - surface_texture_.get(env); - jfloatArray transformMatrix = env->NewFloatArray(16); - SurfaceTextureGetTransformMatrix(env, surfaceTexture.obj(), transformMatrix); - float* m = env->GetFloatArrayElements(transformMatrix, nullptr); - SkScalar matrix3[] = { - m[0], m[1], m[2], // - m[4], m[5], m[6], // - m[8], m[9], m[10], // - }; - env->ReleaseFloatArrayElements(transformMatrix, m, JNI_ABORT); - transform.set9(matrix3); -} - void AndroidExternalTextureGL::OnGrContextDestroyed() { ASSERT_IS_GPU_THREAD; if (state_ == AttachmentState::attached) { @@ -102,7 +77,6 @@ void AndroidExternalTextureGL::Update() { surface_texture_.get(env); if (!surfaceTexture.is_null()) { SurfaceTextureUpdateTexImage(env, surfaceTexture.obj()); - UpdateTransform(); } } diff --git a/engine/src/flutter/shell/platform/android/android_external_texture_gl.h b/engine/src/flutter/shell/platform/android/android_external_texture_gl.h index df890b91c82..73b1de203b5 100644 --- a/engine/src/flutter/shell/platform/android/android_external_texture_gl.h +++ b/engine/src/flutter/shell/platform/android/android_external_texture_gl.h @@ -35,8 +35,6 @@ class AndroidExternalTextureGL : public flow::Texture { void Detach(); - void UpdateTransform(); - enum class AttachmentState { uninitialized, attached, detached }; fml::jni::JavaObjectWeakGlobalRef surface_texture_; @@ -47,8 +45,6 @@ class AndroidExternalTextureGL : public flow::Texture { GLuint texture_name_ = 0; - SkMatrix transform; - FXL_DISALLOW_COPY_AND_ASSIGN(AndroidExternalTextureGL); }; diff --git a/engine/src/flutter/shell/platform/android/platform_view_android_jni.cc b/engine/src/flutter/shell/platform/android/platform_view_android_jni.cc index be70ff4c8bb..448e809f6c1 100644 --- a/engine/src/flutter/shell/platform/android/platform_view_android_jni.cc +++ b/engine/src/flutter/shell/platform/android/platform_view_android_jni.cc @@ -90,15 +90,6 @@ void SurfaceTextureUpdateTexImage(JNIEnv* env, jobject obj) { FXL_CHECK(CheckException(env)); } -static jmethodID g_get_transform_matrix_method = nullptr; -void SurfaceTextureGetTransformMatrix(JNIEnv* env, - jobject obj, - jfloatArray result) { - ASSERT_IS_GPU_THREAD; - env->CallVoidMethod(obj, g_get_transform_matrix_method, result); - FXL_CHECK(CheckException(env)); -} - static jmethodID g_detach_from_gl_context_method = nullptr; void SurfaceTextureDetachFromGLContext(JNIEnv* env, jobject obj) { ASSERT_IS_GPU_THREAD; @@ -511,13 +502,6 @@ bool PlatformViewAndroid::Register(JNIEnv* env) { return false; } - g_get_transform_matrix_method = env->GetMethodID( - g_surface_texture_class->obj(), "getTransformMatrix", "([F)V"); - - if (g_get_transform_matrix_method == nullptr) { - return false; - } - g_detach_from_gl_context_method = env->GetMethodID( g_surface_texture_class->obj(), "detachFromGLContext", "()V"); diff --git a/engine/src/flutter/shell/platform/android/platform_view_android_jni.h b/engine/src/flutter/shell/platform/android/platform_view_android_jni.h index 65dff978d1a..76915734f3d 100644 --- a/engine/src/flutter/shell/platform/android/platform_view_android_jni.h +++ b/engine/src/flutter/shell/platform/android/platform_view_android_jni.h @@ -33,10 +33,6 @@ void SurfaceTextureAttachToGLContext(JNIEnv* env, jobject obj, jint textureId); void SurfaceTextureUpdateTexImage(JNIEnv* env, jobject obj); -void SurfaceTextureGetTransformMatrix(JNIEnv* env, - jobject obj, - jfloatArray result); - void SurfaceTextureDetachFromGLContext(JNIEnv* env, jobject obj); } // namespace shell