loop_desktop.go 711 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. //go:build !js && !wasm && !test_web_driver
  2. // +build !js,!wasm,!test_web_driver
  3. package glfw
  4. import (
  5. "fmt"
  6. "fyne.io/fyne/v2"
  7. "github.com/go-gl/glfw/v3.3/glfw"
  8. )
  9. func (d *gLDriver) initGLFW() {
  10. initOnce.Do(func() {
  11. err := glfw.Init()
  12. if err != nil {
  13. fyne.LogError("failed to initialise GLFW", err)
  14. return
  15. }
  16. initCursors()
  17. d.startDrawThread()
  18. })
  19. }
  20. func (d *gLDriver) tryPollEvents() {
  21. defer func() {
  22. if r := recover(); r != nil {
  23. fyne.LogError(fmt.Sprint("GLFW poll event error: ", r), nil)
  24. }
  25. }()
  26. glfw.PollEvents() // This call blocks while window is being resized, which prevents freeDirtyTextures from being called
  27. }
  28. func (d *gLDriver) Terminate() {
  29. glfw.Terminate()
  30. }