diff options
Diffstat (limited to 'sysdatacache_windows.go')
| -rw-r--r-- | sysdatacache_windows.go | 40 |
1 files changed, 14 insertions, 26 deletions
diff --git a/sysdatacache_windows.go b/sysdatacache_windows.go index 620d6ac..16848e2 100644 --- a/sysdatacache_windows.go +++ b/sysdatacache_windows.go @@ -8,51 +8,39 @@ import ( // I need a way to get a sysData for a given HWND or a given HWND/control ID. So, this. -type sdcEntry struct { - s *sysData - members map[_HMENU]*sysData -} - var ( sysDatas = map[_HWND]*sdcEntry{} sysDatasLock sync.Mutex + sysDataIDs = map[_HMENU]*sdcEntry{} + sysDataIDsLock sync.Mutex ) func addSysData(hwnd _HWND, s *sysData) { sysDatasLock.Lock() defer sysDatasLock.Unlock() - sysDatas[hwnd] = &sdcEntry{ - s: s, - members: map[_HMENU]*sysData{}, - } + sysDatas[hwnd] = s } -func addIDSysData(hwnd _HWND, id _HMENU, s *sysData) { - sysDatasLock.Lock() - defer sysDatasLock.Unlock() - if ss, ok := sysDatas[hwnd]; ok { - ss.members[id] = s - } - panic(fmt.Sprintf("adding ID %d to nonexistent HWND %d\n", id, hwnd)) +func addIDSysData(id _HMENU, s *sysData) { + sysDataIDsLock.Lock() + defer sysDataIDsLock.Unlock() + sysDataIDs[id] = s } func getSysData(hwnd _HWND) *sysData { sysDatasLock.Lock() defer sysDatasLock.Unlock() if ss, ok := sysDatas[hwnd]; ok { - return ss.s + return ss } return nil } -func getIDSysData(hwnd _HWND, id _HMENU) *sysData { - sysDatasLock.Lock() - defer sysDatasLock.Unlock() - if ss, ok := sysDatas[hwnd]; ok { - if xx, ok := ss.members[id]; ok { - return xx - } - panic(fmt.Sprintf("getting nonexistent ID %d for HWND %d\n", id, hwnd)) +func getIDSysData(id _HMENU) *sysData { + sysDataIDsLock.Lock() + defer sysDataIDsLock.Unlock() + if ss, ok := sysDataIDs[id]; ok { + return ss } - panic(fmt.Sprintf("getting nonexistent HWND %d\n", hwnd)) + panic(fmt.Sprintf("getting nonexistent ID %d for HWND %d\n", id, hwnd)) } |
