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...

This commit is contained in:
Pietro Gagliardi 2014-02-11 19:43:07 -05:00
parent bc531d60d7
commit 9bfe67c49d
2 changed files with 7 additions and 4 deletions

View File

@ -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
}

View File

@ -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
}