diff --git a/shell/platform/android/io/flutter/plugin/platform/PlatformViewsController.java b/shell/platform/android/io/flutter/plugin/platform/PlatformViewsController.java index 8e3afa6ca93..e7297567e19 100644 --- a/shell/platform/android/io/flutter/plugin/platform/PlatformViewsController.java +++ b/shell/platform/android/io/flutter/plugin/platform/PlatformViewsController.java @@ -179,7 +179,7 @@ public class PlatformViewsController implements MethodChannel.MethodCallHandler VirtualDisplayController vdController = VirtualDisplayController.create( mContext, viewFactory, - textureEntry.surfaceTexture(), + textureEntry, toPhysicalPixels(logicalWidth), toPhysicalPixels(logicalHeight), id, diff --git a/shell/platform/android/io/flutter/plugin/platform/VirtualDisplayController.java b/shell/platform/android/io/flutter/plugin/platform/VirtualDisplayController.java index 77cf6a9dd06..59f49d3b961 100644 --- a/shell/platform/android/io/flutter/plugin/platform/VirtualDisplayController.java +++ b/shell/platform/android/io/flutter/plugin/platform/VirtualDisplayController.java @@ -13,6 +13,7 @@ import android.os.Build; import android.view.Surface; import android.view.View; import android.view.ViewTreeObserver; +import io.flutter.view.TextureRegistry; @TargetApi(Build.VERSION_CODES.KITKAT_WATCH) class VirtualDisplayController { @@ -20,14 +21,14 @@ class VirtualDisplayController { public static VirtualDisplayController create( Context context, PlatformViewFactory viewFactory, - SurfaceTexture surfaceTexture, + TextureRegistry.SurfaceTextureEntry textureEntry, int width, int height, int viewId, Object createParams ) { - surfaceTexture.setDefaultBufferSize(width, height); - Surface surface = new Surface(surfaceTexture); + textureEntry.surfaceTexture().setDefaultBufferSize(width, height); + Surface surface = new Surface(textureEntry.surfaceTexture()); DisplayManager displayManager = (DisplayManager) context.getSystemService(Context.DISPLAY_SERVICE); int densityDpi = context.getResources().getDisplayMetrics().densityDpi; @@ -45,12 +46,12 @@ class VirtualDisplayController { } return new VirtualDisplayController( - context, virtualDisplay, viewFactory, surface, surfaceTexture, viewId, createParams); + context, virtualDisplay, viewFactory, surface, textureEntry, viewId, createParams); } private final Context mContext; private final int mDensityDpi; - private final SurfaceTexture mSurfaceTexture; + private final TextureRegistry.SurfaceTextureEntry mTextureEntry; private VirtualDisplay mVirtualDisplay; private SingleViewPresentation mPresentation; private Surface mSurface; @@ -61,11 +62,11 @@ class VirtualDisplayController { VirtualDisplay virtualDisplay, PlatformViewFactory viewFactory, Surface surface, - SurfaceTexture surfaceTexture, + TextureRegistry.SurfaceTextureEntry textureEntry, int viewId, Object createParams ) { - mSurfaceTexture = surfaceTexture; + mTextureEntry = textureEntry; mSurface = surface; mContext = context; mVirtualDisplay = virtualDisplay; @@ -85,7 +86,7 @@ class VirtualDisplayController { mVirtualDisplay.setSurface(null); mVirtualDisplay.release(); - mSurfaceTexture.setDefaultBufferSize(width, height); + mTextureEntry.surfaceTexture().setDefaultBufferSize(width, height); DisplayManager displayManager = (DisplayManager) mContext.getSystemService(Context.DISPLAY_SERVICE); mVirtualDisplay = displayManager.createVirtualDisplay( "flutter-vd", @@ -130,6 +131,7 @@ class VirtualDisplayController { mPresentation.detachState(); view.dispose(); mVirtualDisplay.release(); + mTextureEntry.release(); } public View getView() {