• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

fyne-io / fyne / 37183064110
62%

Build:
DEFAULT BRANCH: develop
Ran 04 Oct 2026 06:36AM UTC
Jobs 1
Files 408
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

04 Oct 2026 06:31AM UTC coverage: 61.033% (+0.02%) from 61.015%
37183064110

push

github

web-flow
gl/mobile: coalesce worker wakeups to one per batch (#6563)

Every GL call pushed a token into an async.UnboundedStructChan, so
signalling cost two scheduler wakeups per call: the token went through a
dedicated relay goroutine (in -> processing -> out) before the GL thread
saw it. A single rectangle costs 13-20 calls, so a frame paid hundreds of
wakeups to move one burst of work.

Signalling is now level-triggered. The worker publishes consumerIdle
before inspecting the queue, producers signal only on the idle to awake
transition, and the wakeup channel holds a single pending token. N calls
enqueued while the worker is parked cost one wakeup rather than N, and the
relay goroutine is gone.

Publishing the idle state before reading the queue is what keeps this
safe: a call arriving while the worker is still awake is not signalled by
its producer, since it saw the worker as busy, so drained() re-checks and
the worker keeps going instead of parking.

The work queue grows from 12 to 256 because the worker now drains in
bursts rather than after every call, so a frame's worth of calls has to
fit before enqueue has to wait.

retvalue is unchanged, as are Worker, WorkAvailable and HasWork: the
android, ios (x2), x11 and darwin_desktop loops keep working, and the iOS
drain loop still terminates because DoWork empties the queue. The
windows path already coalesced this way and needs no change.

Tests build the context directly, so the signalling contract is covered
without an OpenGL context. They fail if the idle gate or the re-check is
removed.

10 of 18 new or added lines in 1 file covered. (55.56%)

25074 of 41083 relevant lines covered (61.03%)

2489.87 hits per line

Uncovered Changes

Lines Coverage ∆ File
8
23.44
23.44% internal/driver/mobile/gl/work.go
Jobs
ID Job ID Ran Files Coverage
1 37183064110.1 04 Oct 2026 06:36AM UTC 408
61.03
GitHub Action Run
Source Files on build 37183064110
  • Tree
  • List 408
  • Changed 1
  • Source Changed 0
  • Coverage Changed 1
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • 065947de on github
  • Prev Build on develop (#36821853145)
  • Next Build on develop (#37206262926)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc