queue_pure_canvasobject.go 842 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. // Code generated by go run gen.go; DO NOT EDIT.
  2. //go:build js
  3. // +build js
  4. package async
  5. import (
  6. "fyne.io/fyne/v2"
  7. )
  8. // CanvasObjectQueue implements lock-free FIFO freelist based queue.
  9. //
  10. // Reference: https://dl.acm.org/citation.cfm?doid=248052.248106
  11. type CanvasObjectQueue struct {
  12. head *itemCanvasObject
  13. tail *itemCanvasObject
  14. len uint64
  15. }
  16. // NewCanvasObjectQueue returns a queue for caching values.
  17. func NewCanvasObjectQueue() *CanvasObjectQueue {
  18. head := &itemCanvasObject{next: nil, v: nil}
  19. return &CanvasObjectQueue{
  20. tail: head,
  21. head: head,
  22. }
  23. }
  24. type itemCanvasObject struct {
  25. next *itemCanvasObject
  26. v fyne.CanvasObject
  27. }
  28. func loadCanvasObjectItem(p **itemCanvasObject) *itemCanvasObject {
  29. return *p
  30. }
  31. func casCanvasObjectItem(p **itemCanvasObject, _, new *itemCanvasObject) bool {
  32. *p = new
  33. return true
  34. }