mirror of
https://git.sr.ht/~eliasnaur/gio
synced 2026-07-01 07:35:40 +00:00
4f5baa9a516372bcccf2cc6b358b508f162e9891
Before this change, Window driver callbacks would all go through channels to be processed by Window.run. However, Window.run may call into the driver, which again may invoke a Window callback. These re-entrant calls have been a source of deadlocks and subtle errors, resulting in increasingly complex channel logic. This change eliminates the goroutine split between Window and the driver, allowing callbacks between Window and the driver without restrictions. The goroutine split between Window and the driver is historical and was meant to tame the complicated callback logic of drivers into a nice for-select loop. However, the complexity isn't worth the gain, and there is no concurrency concerns because there is always a 1:1 correspondance between a driver goroutine and its Window object. Fixes: https://todo.sr.ht/~eliasnaur/gio/329 Signed-off-by: Elias Naur <mail@eliasnaur.com>
Gio - https://gioui.org
Immediate mode GUI programs in Go for Android, iOS, macOS, Linux, FreeBSD, OpenBSD, Windows, and WebAssembly (experimental).
Installation, examples, documentation
Go to gioui.org.
Issues
File bugs and TODOs through the issue tracker or send an email to ~eliasnaur/gio@todo.sr.ht. For general discussion, use the mailing list: ~eliasnaur/gio@lists.sr.ht.
Contributing
Post discussion to the mailing list and patches to gio-patches. No Sourcehut account is required and you can post without being subscribed.
See the contribution guide for more details.
An official GitHub mirror is available.
Description
Languages
Go
89.6%
C
7%
Java
1.7%
Objective-C
1.6%