summaryrefslogtreecommitdiff
path: root/sysdatacache_windows.go
diff options
context:
space:
mode:
authorPietro Gagliardi <[email protected]>2014-02-12 10:35:15 -0500
committerPietro Gagliardi <[email protected]>2014-02-12 10:35:15 -0500
commitf93bebfeec42aeee07f43fcf6466b93f073b6111 (patch)
tree7b0028592c684f246e489c0852994cb124ab3914 /sysdatacache_windows.go
parente9e2c0f269aac1157a3ea6a6021a86869fdd6888 (diff)
Added control ID generation.
Diffstat (limited to 'sysdatacache_windows.go')
-rw-r--r--sysdatacache_windows.go40
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))
}