From c339d7214c2a86592c01a3b4932d498acb237417 Mon Sep 17 00:00:00 2001 From: Alexandre Julliard Date: Thu, 8 Jun 2017 10:08:15 +0200 Subject: [PATCH] wineandroid: Properly clean up windows that aren't destroyed explicitly. Signed-off-by: Alexandre Julliard --- dlls/wineandroid.drv/WineActivity.java | 2 ++ dlls/wineandroid.drv/window.c | 5 +++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/dlls/wineandroid.drv/WineActivity.java b/dlls/wineandroid.drv/WineActivity.java index f12de983d39..428e79c7b45 100644 --- a/dlls/wineandroid.drv/WineActivity.java +++ b/dlls/wineandroid.drv/WineActivity.java @@ -314,7 +314,9 @@ public WineWindow( int w, WineWindow parent ) public void destroy() { Log.i( LOGTAG, String.format( "destroy hwnd %08x", hwnd )); + if (visible && window_view != null) top_view.removeView( window_view ); visible = false; + window_view = null; win_map.remove( this ); } diff --git a/dlls/wineandroid.drv/window.c b/dlls/wineandroid.drv/window.c index e3fd865daaa..a663505ddcc 100644 --- a/dlls/wineandroid.drv/window.c +++ b/dlls/wineandroid.drv/window.c @@ -828,8 +828,6 @@ BOOL CDECL ANDROID_CreateWindow( HWND hwnd ) init_event_queue(); start_android_device(); - desktop_orig_wndproc = (WNDPROC)SetWindowLongPtrW( hwnd, GWLP_WNDPROC, - (LONG_PTR)desktop_wndproc_wrapper ); if (!(data = alloc_win_data( hwnd ))) return FALSE; release_win_data( data ); } @@ -1214,6 +1212,9 @@ LRESULT CDECL ANDROID_WindowMessage( HWND hwnd, UINT msg, WPARAM wp, LPARAM lp ) */ BOOL CDECL ANDROID_create_desktop( UINT width, UINT height ) { + desktop_orig_wndproc = (WNDPROC)SetWindowLongPtrW( GetDesktopWindow(), GWLP_WNDPROC, + (LONG_PTR)desktop_wndproc_wrapper ); + /* wait until we receive the surface changed event */ while (!screen_width) {