5
0
mirror of https://github.com/wailsapp/wails.git synced 2025-05-17 01:19:29 +08:00

[v3 windows] Improve systray locking

This commit is contained in:
Lea Anthony 2023-06-06 20:38:01 +10:00
parent 1ce07cd67c
commit eff456aa1a
No known key found for this signature in database
GPG Key ID: 33DAF7BB90A58405

View File

@ -26,7 +26,9 @@ type windowsApp struct {
windowMap map[w32.HWND]*windowsWebviewWindow
windowMapLock sync.RWMutex
systrayMap map[w32.HMENU]*windowsSystemTray
systrayMap map[w32.HMENU]*windowsSystemTray
systrayMapLock sync.RWMutex
mainThreadID w32.HANDLE
mainThreadWindowHWND w32.HWND
@ -246,7 +248,10 @@ func (m *windowsApp) wndProc(hwnd w32.HWND, msg uint32, wParam, lParam uintptr)
return window.WndProc(msg, wParam, lParam)
}
if systray, ok := m.systrayMap[hwnd]; ok {
m.systrayMapLock.Lock()
systray, ok := m.systrayMap[hwnd]
m.systrayMapLock.Unlock()
if ok {
return systray.wndProc(msg, wParam, lParam)
}
@ -262,9 +267,17 @@ func (m *windowsApp) registerWindow(result *windowsWebviewWindow) {
}
func (m *windowsApp) registerSystemTray(result *windowsSystemTray) {
m.systrayMapLock.Lock()
defer m.systrayMapLock.Unlock()
m.systrayMap[result.hwnd] = result
}
func (m *windowsApp) unregisterSystemTray(result *windowsSystemTray) {
m.systrayMapLock.Lock()
defer m.systrayMapLock.Unlock()
delete(m.systrayMap, result.hwnd)
}
func (m *windowsApp) unregisterWindow(w *windowsWebviewWindow) {
m.windowMapLock.Lock()
delete(m.windowMap, w.hwnd)