diff options
Diffstat (limited to 'README.md')
| -rw-r--r-- | README.md | 19 |
1 files changed, 18 insertions, 1 deletions
@@ -1,6 +1,23 @@ [](https://travis-ci.org/andlabs/ui) # Native UI library for Go -### CRITICAL UPDATE 17 March 2014: Due to deadlocks between resizing and setting label text once a second, Labels and Areas do not lock their internal mutex locks after their Window has been created. This seems to not have issues, and the Go race detector isn't saying anything, so IDK... Please help with this if you can. I will have to remove the mutexes from the other classes (later) to make this work properly. +### CRITICAL UPDATE 17 March 2014: Due to deadlocks between resizing and setting label text once a second (see below), all Controls no longer lock their internal mutex locks after their Window has been created. This seems to not have issues, and the Go race detector isn't saying anything, so IDK... Please help spot issues or suggest actual solutions if you can. +The issue: +- the time.Ticker ticks, which causes label.SetText() or whatever to be called; it locks its mutex +- at the same time, a resize event comes in; the resize event runs before the SetText action ever does +- the resize eventually comes to the label, whose resizing functions also try to lock the already-locked mutex +- because the drawing function is now stuck waiting for the mutex to be unlocked, the label.SetText() system-dependent operation never runs, so the mutex is never unlocked +- this fools Go's deadlock detector; it never reports anything +- changing from standard mutexes to R/W mutexes does not work +- making resizes concurrent causes resizes to become too slow to be acceptable (they trail behind the actual user resizing by a significant amount) +If you know a better way I can do things, **please** help... I'm at my wits end here + + + + + + + + ### THIS PACKAGE IS UNDER ACTIVE DEVELOPMENT. It can be used; the API is stable enough at this point, but keep in mind there may still be crashes and API changes, as suggestions are always open. If you can help, please do! Run `./test` to build a test binary `test/test` which runs a (mostly) feature-complete UI test. Run `./d32 ./test` to build a 32-bit version (you will need a cgo-enabled 32-bit go environment, and I have only tested this on Mac OS X). |
