@@ -122,7 +122,6 @@ fun rememberGLSurface(
122122 }
123123 LaunchedEffect (fboSizeOverride) {
124124 surfaceView.fboSizeOverride = fboSizeOverride
125- fboSizeOverride?.size?.let (surfaceView::resize)
126125 }
127126
128127 return surfaceView
@@ -142,6 +141,7 @@ fun GLSurfaceView(
142141) {
143142 val window = LocalWindow .current
144143 var directContext by remember { mutableStateOf<DirectContext ?>(null ) }
144+ var componentSize by remember { mutableStateOf(IntSize .Zero ) }
145145 LaunchedEffect (window) {
146146 withContext(Dispatchers .IO ) {
147147 while (isActive) {
@@ -156,6 +156,7 @@ fun GLSurfaceView(
156156 Canvas (
157157 modifier = Modifier
158158 .onSizeChanged {
159+ componentSize = it
159160 if (surface.fboSizeOverride == null ) {
160161 surface.resize(it)
161162 }
@@ -188,6 +189,14 @@ fun GLSurfaceView(
188189 }
189190 }
190191 }
192+ LaunchedEffect (surface.fboSizeOverride) {
193+ val fboSizeOverride = surface.fboSizeOverride
194+ if (fboSizeOverride != null ) {
195+ surface.resize(fboSizeOverride.size)
196+ } else {
197+ surface.resize(componentSize)
198+ }
199+ }
191200}
192201
193202class GLSurface internal constructor(
@@ -213,6 +222,7 @@ class GLSurface internal constructor(
213222 */
214223 FIFO (::FBOFifoSwapChain ),
215224 }
225+
216226 private var directContext: DirectContext ? = null
217227 private var renderContext: GLContext <* >? = null
218228 private var size: IntSize = IntSize .Zero
0 commit comments