File tree Expand file tree Collapse file tree 3 files changed +14
-5
lines changed
src/main/java/dev/silenium/compose/gl Expand file tree Collapse file tree 3 files changed +14
-5
lines changed Original file line number Diff line number Diff line change @@ -5,6 +5,8 @@ import dev.silenium.compose.gl.objects.Renderbuffer
55import dev.silenium.compose.gl.objects.Texture
66import dev.silenium.compose.gl.util.checkGLError
77import org.lwjgl.opengl.GL30.*
8+ import org.slf4j.LoggerFactory
9+ import java.util.concurrent.atomic.AtomicBoolean
810
911data class FBO (
1012 val id : Int ,
@@ -23,13 +25,20 @@ data class FBO(
2325 checkGLError(" glBindFramebuffer" )
2426 }
2527
28+ private val destroyed = AtomicBoolean (false )
2629 fun destroy () {
27- colorAttachment.destroy()
28- depthStencilAttachment.destroy()
29- glDeleteFramebuffers(id)
30+ if (destroyed.compareAndExchange(false , true )) {
31+ glDeleteFramebuffers(id)
32+ colorAttachment.destroy()
33+ depthStencilAttachment.destroy()
34+ } else {
35+ logger.trace(" FBO $id is already destroyed" , Exception ())
36+ }
3037 }
3138
3239 companion object {
40+ private val logger = LoggerFactory .getLogger(FBO ::class .java)
41+
3342 fun create (
3443 colorAttachment : Texture ,
3544 depthStencilAttachment : Renderbuffer ,
Original file line number Diff line number Diff line change @@ -29,7 +29,7 @@ data class Renderbuffer(
2929 if (destroyed.compareAndExchange(false , true )) {
3030 glDeleteRenderbuffers(id)
3131 } else {
32- logger.warn (" Texture $id is already destroyed" )
32+ logger.trace (" Texture $id is already destroyed" )
3333 }
3434 }
3535
Original file line number Diff line number Diff line change @@ -34,7 +34,7 @@ data class Texture(
3434 if (destroyed.compareAndExchange(false , true )) {
3535 glDeleteTextures(id)
3636 } else {
37- logger.warn (" Texture $id is already destroyed" )
37+ logger.trace (" Texture $id is already destroyed" )
3838 }
3939 }
4040
You can’t perform that action at this time.
0 commit comments