5
0
mirror of https://github.com/wailsapp/wails.git synced 2025-05-17 17:39: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 windowMap map[w32.HWND]*windowsWebviewWindow
windowMapLock sync.RWMutex windowMapLock sync.RWMutex
systrayMap map[w32.HMENU]*windowsSystemTray systrayMap map[w32.HMENU]*windowsSystemTray
systrayMapLock sync.RWMutex
mainThreadID w32.HANDLE mainThreadID w32.HANDLE
mainThreadWindowHWND w32.HWND 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) 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) return systray.wndProc(msg, wParam, lParam)
} }
@ -262,9 +267,17 @@ func (m *windowsApp) registerWindow(result *windowsWebviewWindow) {
} }
func (m *windowsApp) registerSystemTray(result *windowsSystemTray) { func (m *windowsApp) registerSystemTray(result *windowsSystemTray) {
m.systrayMapLock.Lock()
defer m.systrayMapLock.Unlock()
m.systrayMap[result.hwnd] = result 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) { func (m *windowsApp) unregisterWindow(w *windowsWebviewWindow) {
m.windowMapLock.Lock() m.windowMapLock.Lock()
delete(m.windowMap, w.hwnd) delete(m.windowMap, w.hwnd)