Seems like that also works. ``` diff --git a/dlls/wineandroid.drv/device.c b/dlls/wineandroid.drv/device.c index 34424009afd..ad04392a5d3 100644 --- a/dlls/wineandroid.drv/device.c +++ b/dlls/wineandroid.drv/device.c @@ -77,7 +77,7 @@ WINE_DEFAULT_DEBUG_CHANNEL(android); #endif static HWND capture_window; -static HWND desktop_window; +HWND desktop_window; static pthread_mutex_t dispatch_ioctl_lock = PTHREAD_MUTEX_INITIALIZER; diff --git a/dlls/wineandroid.drv/window.c b/dlls/wineandroid.drv/window.c index b3f3aeea955..eb005140193 100644 --- a/dlls/wineandroid.drv/window.c +++ b/dlls/wineandroid.drv/window.c @@ -61,6 +61,7 @@ struct android_win_data #define SWP_AGG_NOPOSCHANGE (SWP_NOSIZE | SWP_NOMOVE | SWP_NOCLIENTSIZE | SWP_NOCLIENTMOVE | SWP_NOZORDER) pthread_mutex_t win_data_mutex; +extern HWND desktop_window; static struct android_win_data *win_data_context[32768]; @@ -457,7 +458,10 @@ static int process_events( DWORD mask ) event->data.surface.client ? "client" : "whole", event->data.surface.width, event->data.surface.height ); - NtUserPostMessage( event->data.surface.hwnd, WM_ANDROID_REFRESH, event->data.surface.client, 0 ); + if ( event->data.surface.hwnd == desktop_window ) + NtUserPostMessage( event->data.surface.hwnd, WM_PAINT, 0, 0 ); + else + NtUserPostMessage( event->data.surface.hwnd, WM_ANDROID_REFRESH, event->data.surface.client, 0 ); break; case MOTION_EVENT: ``` But it is kinda weird. In the case if I send WM_ANDROID_REFRESH or WM_ANDROID_REFRESH+WM_PAINT the desktop window is still white/stale, but in the case if I send only WM_PAINT everything seems to be fine. -- https://gitlab.winehq.org/wine/wine/-/merge_requests/10712#note_138765