From 0f373195de316b1b20a05ebff1463fb8a56b1f1b Mon Sep 17 00:00:00 2001 From: Pietro Gagliardi Date: Tue, 11 Feb 2014 22:41:55 -0500 Subject: 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! --- sysdatacache_windows.go | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'sysdatacache_windows.go') 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 { -- cgit v1.2.3