summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPietro Gagliardi <[email protected]>2014-02-11 19:43:07 -0500
committerPietro Gagliardi <[email protected]>2014-02-11 19:43:07 -0500
commit9bfe67c49d6580bf977403fecf4d345db7524747 (patch)
treed480691c15083ced8d27cf79edd49f96a9f76f48
parentbc531d60d703e0113973a965450383049b930b73 (diff)
Changed the caching such that the window procedure is held until we added the HWND to the cache. Now we have a mysterious class not regsitered issue...
-rw-r--r--sysdata_windows.go5
-rw-r--r--sysdatacache_windows.go6
2 files changed, 7 insertions, 4 deletions
diff --git a/sysdata_windows.go b/sysdata_windows.go
index 7dbaae6..f454e89 100644
--- a/sysdata_windows.go
+++ b/sysdata_windows.go
@@ -38,6 +38,9 @@ var classTypes = [nctypes]*classData{
}
func (s *sysData) make() (err error) {
+ sysDatasLock.Lock()
+ defer sysDatasLock.Unlock()
+
ret := make(chan uiret)
defer close(ret)
ct := classTypes[s.ctype]
@@ -64,6 +67,8 @@ func (s *sysData) make() (err error) {
return r.err
}
s.hwnd = _HWND(r.ret)
+ addSysData(s.hwnd, s)
+ // TODO parent
return nil
}
diff --git a/sysdatacache_windows.go b/sysdatacache_windows.go
index 46ce025..1bdb128 100644
--- a/sysdatacache_windows.go
+++ b/sysdatacache_windows.go
@@ -18,18 +18,16 @@ var (
sysDatasLock sync.Mutex
)
+// MUST HAVE LOCKED BEFORE CALLING
func addSysData(hwnd _HWND, s *sysData) {
- sysDatasLock.Lock()
- defer sysDatasLock.Unlock()
sysDatas[hwnd] = &sdcEntry{
s: s,
members: map[_HMENU]*sysData{},
}
}
+// MUST HAVE LOCKED BEFORE CALLING
func addIDSysData(hwnd _HWND, id _HMENU, s *sysData) {
- sysDatasLock.Lock()
- defer sysDatasLock.Unlock()
if ss, ok := sysDatas[hwnd]; ok {
ss.members[id] = s
}