Skip to content

Commit 5fc42f3

Browse files
Fix ART surface sleep issue
Summary: Fixes #17565. Reviewed By: achen1 Differential Revision: D8194925 fbshipit-source-id: 5448d49d959078eaded697f791e1b382471fabdb
1 parent 5863b56 commit 5fc42f3

File tree

5 files changed

+21
-25
lines changed

5 files changed

+21
-25
lines changed

ReactAndroid/src/main/java/com/facebook/react/flat/FlatARTSurfaceViewManager.java

+3-1
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,15 @@
77

88
package com.facebook.react.flat;
99

10+
import android.view.SurfaceHolder;
1011
import com.facebook.react.uimanager.BaseViewManager;
1112
import com.facebook.react.uimanager.ThemedReactContext;
1213
import com.facebook.react.views.art.ARTSurfaceView;
1314
import com.facebook.yoga.YogaMeasureFunction;
1415
import com.facebook.yoga.YogaMeasureMode;
1516
import com.facebook.yoga.YogaNode;
1617

18+
1719
public class FlatARTSurfaceViewManager extends
1820
BaseViewManager<ARTSurfaceView, FlatARTSurfaceViewShadowNode> {
1921

@@ -55,6 +57,6 @@ protected ARTSurfaceView createViewInstance(ThemedReactContext reactContext) {
5557

5658
@Override
5759
public void updateExtraData(ARTSurfaceView root, Object extraData) {
58-
root.setSurfaceTextureListener((FlatARTSurfaceViewShadowNode) extraData);
60+
root.getHolder().addCallback((FlatARTSurfaceViewShadowNode) extraData);
5961
}
6062
}

ReactAndroid/src/main/java/com/facebook/react/flat/FlatARTSurfaceViewShadowNode.java

+7-11
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
import android.graphics.SurfaceTexture;
1717
import android.util.Log;
1818
import android.view.Surface;
19-
import android.view.TextureView;
19+
import android.view.SurfaceHolder;
2020

2121
import com.facebook.react.common.ReactConstants;
2222
import com.facebook.react.uimanager.ReactShadowNode;
@@ -25,8 +25,9 @@
2525
import com.facebook.yoga.YogaValue;
2626
import com.facebook.yoga.YogaUnit;
2727

28+
2829
/* package */ class FlatARTSurfaceViewShadowNode extends FlatShadowNode
29-
implements AndroidView, TextureView.SurfaceTextureListener {
30+
implements AndroidView, SurfaceHolder.Callback {
3031
private boolean mPaddingChanged = false;
3132
private @Nullable Surface mSurface;
3233

@@ -123,21 +124,16 @@ public void setPaddingPercent(int spacingType, float percent) {
123124
}
124125

125126
@Override
126-
public void onSurfaceTextureAvailable(SurfaceTexture surface, int width, int height) {
127-
mSurface = new Surface(surface);
127+
public void surfaceCreated(SurfaceHolder holder) {
128+
mSurface = holder.getSurface();
128129
drawOutput();
129130
}
130131

131132
@Override
132-
public boolean onSurfaceTextureDestroyed(SurfaceTexture surface) {
133-
surface.release();
133+
public void surfaceDestroyed(SurfaceHolder holder) {
134134
mSurface = null;
135-
return true;
136135
}
137136

138137
@Override
139-
public void onSurfaceTextureSizeChanged(SurfaceTexture surface, int width, int height) {}
140-
141-
@Override
142-
public void onSurfaceTextureUpdated(SurfaceTexture surface) {}
138+
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {}
143139
}

ReactAndroid/src/main/java/com/facebook/react/views/art/ARTSurfaceView.java

+2-3
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,13 @@
88
package com.facebook.react.views.art;
99

1010
import android.content.Context;
11-
import android.view.TextureView;
11+
import android.view.SurfaceView;
1212

1313
/**
1414
* Custom {@link View} implementation that draws an ARTSurface React view and its children.
1515
*/
16-
public class ARTSurfaceView extends TextureView {
16+
public class ARTSurfaceView extends SurfaceView {
1717
public ARTSurfaceView(Context context) {
1818
super(context);
19-
setOpaque(false);
2019
}
2120
}

ReactAndroid/src/main/java/com/facebook/react/views/art/ARTSurfaceViewManager.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
package com.facebook.react.views.art;
99

10+
import android.view.SurfaceHolder;
1011
import com.facebook.yoga.YogaMeasureMode;
1112
import com.facebook.yoga.YogaMeasureFunction;
1213
import com.facebook.yoga.YogaNode;
@@ -60,7 +61,7 @@ protected ARTSurfaceView createViewInstance(ThemedReactContext reactContext) {
6061

6162
@Override
6263
public void updateExtraData(ARTSurfaceView root, Object extraData) {
63-
root.setSurfaceTextureListener((ARTSurfaceViewShadowNode) extraData);
64+
root.getHolder().addCallback((ARTSurfaceViewShadowNode) extraData);
6465
}
6566

6667
@Override

ReactAndroid/src/main/java/com/facebook/react/views/art/ARTSurfaceViewShadowNode.java

+7-9
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,10 @@
1515
import android.view.Surface;
1616
import android.graphics.PorterDuff;
1717
import android.graphics.SurfaceTexture;
18+
import android.view.SurfaceHolder;
1819
import android.view.TextureView;
1920

21+
2022
import com.facebook.common.logging.FLog;
2123
import com.facebook.react.common.ReactConstants;
2224
import com.facebook.react.uimanager.LayoutShadowNode;
@@ -29,7 +31,7 @@
2931
* Shadow node for ART virtual tree root - ARTSurfaceView
3032
*/
3133
public class ARTSurfaceViewShadowNode extends LayoutShadowNode
32-
implements TextureView.SurfaceTextureListener {
34+
implements SurfaceHolder.Callback {
3335

3436
private @Nullable Surface mSurface;
3537

@@ -97,21 +99,17 @@ private void markChildrenUpdatesSeen(ReactShadowNode shadowNode) {
9799
}
98100

99101
@Override
100-
public void onSurfaceTextureAvailable(SurfaceTexture surface, int width, int height) {
101-
mSurface = new Surface(surface);
102+
public void surfaceCreated(SurfaceHolder holder) {
103+
mSurface = holder.getSurface();
102104
drawOutput();
103105
}
104106

105107
@Override
106-
public boolean onSurfaceTextureDestroyed(SurfaceTexture surface) {
107-
surface.release();
108+
public void surfaceDestroyed(SurfaceHolder holder) {
108109
mSurface = null;
109-
return true;
110110
}
111111

112112
@Override
113-
public void onSurfaceTextureSizeChanged(SurfaceTexture surface, int width, int height) {}
113+
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {}
114114

115-
@Override
116-
public void onSurfaceTextureUpdated(SurfaceTexture surface) {}
117115
}

0 commit comments

Comments
 (0)