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:
parent
1ce07cd67c
commit
eff456aa1a
@ -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)
|
||||
|
Loading…
Reference in New Issue
Block a user