diff options
| author | Pietro Gagliardi <[email protected]> | 2014-02-11 22:41:55 -0500 |
|---|---|---|
| committer | Pietro Gagliardi <[email protected]> | 2014-02-11 22:41:55 -0500 |
| commit | 0f373195de316b1b20a05ebff1463fb8a56b1f1b (patch) | |
| tree | dc7d5159640fadfbffa9f9ae3bb84e9a4cc5f2b3 /sysdatacache_windows.go | |
| parent | 6da43e8bb7bcd13de0a2a39ea8b0593ba9f279ef (diff) | |
Changed the sysData cache so that if we didn't fill it in yet, getSysData() returns nil instead of panicking, and the standard window procedure jumps directly to the default handler. Not what I originally wanted to do, but whatever, it finally works!
Diffstat (limited to 'sysdatacache_windows.go')
| -rw-r--r-- | sysdatacache_windows.go | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/sysdatacache_windows.go b/sysdatacache_windows.go index 1bdb128..620d6ac 100644 --- a/sysdatacache_windows.go +++ b/sysdatacache_windows.go @@ -18,16 +18,18 @@ 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 } @@ -40,7 +42,7 @@ func getSysData(hwnd _HWND) *sysData { if ss, ok := sysDatas[hwnd]; ok { return ss.s } - panic(fmt.Sprintf("getting nonexistent HWND %d\n", hwnd)) + return nil } func getIDSysData(hwnd _HWND, id _HMENU) *sysData { |
