internal/glfwwin: bug fix: update _glfw.windows

This commit is contained in:
Hajime Hoshi 2022-06-01 00:01:07 +09:00
parent c99b948df3
commit aa4a2b64e0
2 changed files with 12 additions and 1 deletions

View File

@ -93,6 +93,7 @@ func inputMonitor(monitor *Monitor, action PeripheralEvent, placement int) error
for i, m := range _glfw.monitors { for i, m := range _glfw.monitors {
if m == monitor { if m == monitor {
copy(_glfw.monitors[i:], _glfw.monitors[i+1:]) copy(_glfw.monitors[i:], _glfw.monitors[i+1:])
_glfw.monitors[len(_glfw.monitors)-1] = nil
_glfw.monitors = _glfw.monitors[:len(_glfw.monitors)-1] _glfw.monitors = _glfw.monitors[:len(_glfw.monitors)-1]
break break
} }

View File

@ -139,6 +139,7 @@ func CreateWindow(width, height int, title string, monitor *Monitor, share *Wind
window.Destroy() window.Destroy()
} }
}() }()
_glfw.windows = append(_glfw.windows, window)
// Open the actual window and create its context // Open the actual window and create its context
if err := window.platformCreateWindow(&wndconfig, &ctxconfig, &fbconfig); err != nil { if err := window.platformCreateWindow(&wndconfig, &ctxconfig, &fbconfig); err != nil {
@ -312,7 +313,7 @@ func (w *Window) Destroy() error {
} }
// Clear all callbacks to avoid exposing a half torn-down w object // Clear all callbacks to avoid exposing a half torn-down w object
//memset(&w.callbacks, 0, sizeof(w.callbacks)) // TODO: Clear w.callbacks
// The w's context must not be current on another thread when the // The w's context must not be current on another thread when the
// w is destroyed // w is destroyed
@ -326,6 +327,15 @@ func (w *Window) Destroy() error {
} }
} }
for i, window := range _glfw.windows {
if window == w {
copy(_glfw.windows[i:], _glfw.windows[i+1:])
_glfw.windows[len(_glfw.windows)-1] = nil
_glfw.windows = _glfw.windows[:len(_glfw.windows)-1]
break
}
}
w.platformDestroyWindow() w.platformDestroyWindow()
return nil return nil
} }