loop_goxjs.go 737 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. gl "github.com/fyne-io/gl-js"
  8. glfw "github.com/fyne-io/glfw-js"
  9. )
  10. func (d *gLDriver) initGLFW() {
  11. initOnce.Do(func() {
  12. err := glfw.Init(gl.ContextWatcher)
  13. if err != nil {
  14. fyne.LogError("failed to initialise GLFW", err)
  15. return
  16. }
  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. }