| 12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- // Code generated by go run gen.go; DO NOT EDIT.
- //go:build !js
- // +build !js
- package async
- import (
- "sync/atomic"
- "unsafe"
- "fyne.io/fyne/v2"
- )
- // CanvasObjectQueue implements lock-free FIFO freelist based queue.
- //
- // Reference: https://dl.acm.org/citation.cfm?doid=248052.248106
- type CanvasObjectQueue struct {
- head unsafe.Pointer
- tail unsafe.Pointer
- len uint64
- }
- // NewCanvasObjectQueue returns a queue for caching values.
- func NewCanvasObjectQueue() *CanvasObjectQueue {
- head := &itemCanvasObject{next: nil, v: nil}
- return &CanvasObjectQueue{
- tail: unsafe.Pointer(head),
- head: unsafe.Pointer(head),
- }
- }
- type itemCanvasObject struct {
- next unsafe.Pointer
- v fyne.CanvasObject
- }
- func loadCanvasObjectItem(p *unsafe.Pointer) *itemCanvasObject {
- return (*itemCanvasObject)(atomic.LoadPointer(p))
- }
- func casCanvasObjectItem(p *unsafe.Pointer, old, new *itemCanvasObject) bool {
- return atomic.CompareAndSwapPointer(p, unsafe.Pointer(old), unsafe.Pointer(new))
- }
|