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:
parent
bc531d60d7
commit
9bfe67c49d
|
@ -38,6 +38,9 @@ var classTypes = [nctypes]*classData{
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *sysData) make() (err error) {
|
func (s *sysData) make() (err error) {
|
||||||
|
sysDatasLock.Lock()
|
||||||
|
defer sysDatasLock.Unlock()
|
||||||
|
|
||||||
ret := make(chan uiret)
|
ret := make(chan uiret)
|
||||||
defer close(ret)
|
defer close(ret)
|
||||||
ct := classTypes[s.ctype]
|
ct := classTypes[s.ctype]
|
||||||
|
@ -64,6 +67,8 @@ func (s *sysData) make() (err error) {
|
||||||
return r.err
|
return r.err
|
||||||
}
|
}
|
||||||
s.hwnd = _HWND(r.ret)
|
s.hwnd = _HWND(r.ret)
|
||||||
|
addSysData(s.hwnd, s)
|
||||||
|
// TODO parent
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -18,18 +18,16 @@ var (
|
||||||
sysDatasLock sync.Mutex
|
sysDatasLock sync.Mutex
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// MUST HAVE LOCKED BEFORE CALLING
|
||||||
func addSysData(hwnd _HWND, s *sysData) {
|
func addSysData(hwnd _HWND, s *sysData) {
|
||||||
sysDatasLock.Lock()
|
|
||||||
defer sysDatasLock.Unlock()
|
|
||||||
sysDatas[hwnd] = &sdcEntry{
|
sysDatas[hwnd] = &sdcEntry{
|
||||||
s: s,
|
s: s,
|
||||||
members: map[_HMENU]*sysData{},
|
members: map[_HMENU]*sysData{},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// MUST HAVE LOCKED BEFORE CALLING
|
||||||
func addIDSysData(hwnd _HWND, id _HMENU, s *sysData) {
|
func addIDSysData(hwnd _HWND, id _HMENU, s *sysData) {
|
||||||
sysDatasLock.Lock()
|
|
||||||
defer sysDatasLock.Unlock()
|
|
||||||
if ss, ok := sysDatas[hwnd]; ok {
|
if ss, ok := sysDatas[hwnd]; ok {
|
||||||
ss.members[id] = s
|
ss.members[id] = s
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue