From: Sergei Chernyadyev serg.cherniadjev@gmail.com
--- dlls/win32u/systray.c | 13 +++++++++++++ 1 file changed, 13 insertions(+)
diff --git a/dlls/win32u/systray.c b/dlls/win32u/systray.c index 805a13fcf13..f914cd241d3 100644 --- a/dlls/win32u/systray.c +++ b/dlls/win32u/systray.c @@ -35,6 +35,7 @@ WINE_DEFAULT_DEBUG_CHANNEL(systray);
#ifdef SONAME_LIBDBUS_1 static volatile LONG sni_initialized = (LONG)FALSE; +static volatile LONG dbus_notifications_initialized = (LONG)FALSE; #endif
LRESULT system_tray_call( HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam, void *data ) @@ -70,6 +71,18 @@ LRESULT system_tray_call( HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam, voi else if (msg == WINE_SYSTRAY_CLEANUP_ICONS) return snidrv_cleanup_notify_icons( hwnd ); } + + if (msg == WINE_SYSTRAY_SHOW_BALLOON) + { + LONG l_dbus_notifications_initialized = InterlockedCompareExchange(&dbus_notifications_initialized, (LONG)FALSE, (LONG)FALSE); + if (!l_dbus_notifications_initialized && snidrv_notification_init()) + { + InterlockedCompareExchange(&dbus_notifications_initialized, TRUE, FALSE); + l_dbus_notifications_initialized = TRUE; + } + if (l_dbus_notifications_initialized) + return snidrv_show_balloon(hwnd, wparam, lparam, data); + } #endif
switch (msg)