diff --git a/ReactAndroid/src/main/java/com/facebook/react/flat/FlatARTSurfaceViewManager.java b/ReactAndroid/src/main/java/com/facebook/react/flat/FlatARTSurfaceViewManager.java index f6382b80b..d1172d82a 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/flat/FlatARTSurfaceViewManager.java +++ b/ReactAndroid/src/main/java/com/facebook/react/flat/FlatARTSurfaceViewManager.java @@ -7,6 +7,7 @@ package com.facebook.react.flat; +import android.view.SurfaceHolder; import com.facebook.react.uimanager.BaseViewManager; import com.facebook.react.uimanager.ThemedReactContext; import com.facebook.react.views.art.ARTSurfaceView; @@ -14,6 +15,7 @@ import com.facebook.yoga.YogaMeasureFunction; import com.facebook.yoga.YogaMeasureMode; import com.facebook.yoga.YogaNode; + public class FlatARTSurfaceViewManager extends BaseViewManager { @@ -55,6 +57,6 @@ public class FlatARTSurfaceViewManager extends @Override public void updateExtraData(ARTSurfaceView root, Object extraData) { - root.setSurfaceTextureListener((FlatARTSurfaceViewShadowNode) extraData); + root.getHolder().addCallback((FlatARTSurfaceViewShadowNode) extraData); } } diff --git a/ReactAndroid/src/main/java/com/facebook/react/flat/FlatARTSurfaceViewShadowNode.java b/ReactAndroid/src/main/java/com/facebook/react/flat/FlatARTSurfaceViewShadowNode.java index 09fa6a42a..aefe34104 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/flat/FlatARTSurfaceViewShadowNode.java +++ b/ReactAndroid/src/main/java/com/facebook/react/flat/FlatARTSurfaceViewShadowNode.java @@ -16,7 +16,7 @@ import android.graphics.PorterDuff; import android.graphics.SurfaceTexture; import android.util.Log; import android.view.Surface; -import android.view.TextureView; +import android.view.SurfaceHolder; import com.facebook.react.common.ReactConstants; import com.facebook.react.uimanager.ReactShadowNode; @@ -25,8 +25,9 @@ import com.facebook.react.views.art.ARTVirtualNode; import com.facebook.yoga.YogaValue; import com.facebook.yoga.YogaUnit; + /* package */ class FlatARTSurfaceViewShadowNode extends FlatShadowNode - implements AndroidView, TextureView.SurfaceTextureListener { + implements AndroidView, SurfaceHolder.Callback { private boolean mPaddingChanged = false; private @Nullable Surface mSurface; @@ -123,21 +124,16 @@ import com.facebook.yoga.YogaUnit; } @Override - public void onSurfaceTextureAvailable(SurfaceTexture surface, int width, int height) { - mSurface = new Surface(surface); + public void surfaceCreated(SurfaceHolder holder) { + mSurface = holder.getSurface(); drawOutput(); } @Override - public boolean onSurfaceTextureDestroyed(SurfaceTexture surface) { - surface.release(); + public void surfaceDestroyed(SurfaceHolder holder) { mSurface = null; - return true; } @Override - public void onSurfaceTextureSizeChanged(SurfaceTexture surface, int width, int height) {} - - @Override - public void onSurfaceTextureUpdated(SurfaceTexture surface) {} + public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {} } diff --git a/ReactAndroid/src/main/java/com/facebook/react/views/art/ARTSurfaceView.java b/ReactAndroid/src/main/java/com/facebook/react/views/art/ARTSurfaceView.java index 93f2c21eb..ac68a9b2e 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/views/art/ARTSurfaceView.java +++ b/ReactAndroid/src/main/java/com/facebook/react/views/art/ARTSurfaceView.java @@ -8,14 +8,13 @@ package com.facebook.react.views.art; import android.content.Context; -import android.view.TextureView; +import android.view.SurfaceView; /** * Custom {@link View} implementation that draws an ARTSurface React view and its children. */ -public class ARTSurfaceView extends TextureView { +public class ARTSurfaceView extends SurfaceView { public ARTSurfaceView(Context context) { super(context); - setOpaque(false); } } diff --git a/ReactAndroid/src/main/java/com/facebook/react/views/art/ARTSurfaceViewManager.java b/ReactAndroid/src/main/java/com/facebook/react/views/art/ARTSurfaceViewManager.java index 24787ef84..d1ee910d0 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/views/art/ARTSurfaceViewManager.java +++ b/ReactAndroid/src/main/java/com/facebook/react/views/art/ARTSurfaceViewManager.java @@ -7,6 +7,7 @@ package com.facebook.react.views.art; +import android.view.SurfaceHolder; import com.facebook.yoga.YogaMeasureMode; import com.facebook.yoga.YogaMeasureFunction; import com.facebook.yoga.YogaNode; @@ -60,7 +61,7 @@ public class ARTSurfaceViewManager extends @Override public void updateExtraData(ARTSurfaceView root, Object extraData) { - root.setSurfaceTextureListener((ARTSurfaceViewShadowNode) extraData); + root.getHolder().addCallback((ARTSurfaceViewShadowNode) extraData); } @Override diff --git a/ReactAndroid/src/main/java/com/facebook/react/views/art/ARTSurfaceViewShadowNode.java b/ReactAndroid/src/main/java/com/facebook/react/views/art/ARTSurfaceViewShadowNode.java index 429812e19..c0a893481 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/views/art/ARTSurfaceViewShadowNode.java +++ b/ReactAndroid/src/main/java/com/facebook/react/views/art/ARTSurfaceViewShadowNode.java @@ -15,8 +15,10 @@ import android.graphics.Color; import android.view.Surface; import android.graphics.PorterDuff; import android.graphics.SurfaceTexture; +import android.view.SurfaceHolder; import android.view.TextureView; + import com.facebook.common.logging.FLog; import com.facebook.react.common.ReactConstants; import com.facebook.react.uimanager.LayoutShadowNode; @@ -29,7 +31,7 @@ import com.facebook.react.uimanager.annotations.ReactProp; * Shadow node for ART virtual tree root - ARTSurfaceView */ public class ARTSurfaceViewShadowNode extends LayoutShadowNode - implements TextureView.SurfaceTextureListener { + implements SurfaceHolder.Callback { private @Nullable Surface mSurface; @@ -97,21 +99,17 @@ public class ARTSurfaceViewShadowNode extends LayoutShadowNode } @Override - public void onSurfaceTextureAvailable(SurfaceTexture surface, int width, int height) { - mSurface = new Surface(surface); + public void surfaceCreated(SurfaceHolder holder) { + mSurface = holder.getSurface(); drawOutput(); } @Override - public boolean onSurfaceTextureDestroyed(SurfaceTexture surface) { - surface.release(); + public void surfaceDestroyed(SurfaceHolder holder) { mSurface = null; - return true; } @Override - public void onSurfaceTextureSizeChanged(SurfaceTexture surface, int width, int height) {} + public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {} - @Override - public void onSurfaceTextureUpdated(SurfaceTexture surface) {} }