diff options
| -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 } |
