diff options
| author | Pietro Gagliardi <[email protected]> | 2014-02-11 19:43:07 -0500 |
|---|---|---|
| committer | Pietro Gagliardi <[email protected]> | 2014-02-11 19:43:07 -0500 |
| commit | 9bfe67c49d6580bf977403fecf4d345db7524747 (patch) | |
| tree | d480691c15083ced8d27cf79edd49f96a9f76f48 | |
| parent | bc531d60d703e0113973a965450383049b930b73 (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.go | 5 | ||||
| -rw-r--r-- | sysdatacache_windows.go | 6 |
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 } |
