Skip to content

Commit f18490e

Browse files
committed
fix: handle resize of fbos when switching from fbo override to automatic size
1 parent aceb238 commit f18490e

File tree

1 file changed

+11
-1
lines changed

1 file changed

+11
-1
lines changed

src/main/java/dev/silenium/compose/gl/surface/GLSurface.kt

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -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

193202
class 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

Comments
 (0)