From aef419a83edf8d897fa48d87399df3753fc44504 Mon Sep 17 00:00:00 2001 From: Pietro Gagliardi Date: Sat, 12 Apr 2014 14:07:31 -0400 Subject: [PATCH] Documented the thread safety of AreaHandler and Area.SetSize(). --- area.go | 3 ++- todo.md | 3 --- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/area.go b/area.go index c9734d5..d320410 100644 --- a/area.go +++ b/area.go @@ -37,7 +37,7 @@ type Area struct { } // AreaHandler represents the events that an Area should respond to. -// You are responsible for the thread safety of any members of the actual type that implements ths interface. +// These methods are all executed on the main goroutine, not necessarily the same one that you created the AreaHandler in; you are responsible for the thread safety of any members of the actual type that implements ths interface. // (Having to use this interface does not strike me as being particularly Go-like, but the nature of Paint makes channel-based event handling a non-option; in practice, deadlocks occur.) type AreaHandler interface { // Paint is called when the Area needs to be redrawn. @@ -287,6 +287,7 @@ func NewArea(width int, height int, handler AreaHandler) *Area { // SetSize sets the Area's internal drawing size. // It has no effect on the actual control size. +// SetSize is safe for concurrent use; if the Area is being repainted or is handling an event, SetSize will wait for that to complete before changing the Area's size. // It panics if width or height is zero or negative. func (a *Area) SetSize(width int, height int) { a.lock.Lock() diff --git a/todo.md b/todo.md index d4c740a..07bd7d1 100644 --- a/todo.md +++ b/todo.md @@ -1,6 +1,3 @@ -so I don't forget: -- describe thread-safety of Area.SetSize() - important things: - I think Cocoa listbox item text is too low? - NSPopUpButton does allow no initial selection ([b setSelectedIndex:-1]); use it