[1/5] winex11: Added missing release_win_data() to create_foreign_window() (try 3)

Sebastian Lackner sebastian at fds-team.de
Tue Sep 24 17:59:42 CDT 2013


Ha! Finally figured out why Xembed didn't work the "systray" way - main
reason was a deadlock due to a missing release_win_data(), which should
be fixed by this patch. I've updated/extended the other XEmbed patches
and also stumpled upon an additional bug (patch 5) related to OpenGL and
embedding.

Changelog (try 3):
* Xembed works now exactly the same way as systray icons and all parent
windows are generated as foreign_windows.

(For more details on Xembed see the previous attempts.)

---
 dlls/winex11.drv/window.c |    5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)


-------------- next part --------------
From bbe3cc7c597b73940007442fac56d3ae9dd7f34b Mon Sep 17 00:00:00 2001
From: Sebastian Lackner <sebastian at fds-team.de>
Date: Tue, 24 Sep 2013 05:50:33 +0200
Subject: winex11: Added missing release_win_data() to create_foreign_window()

---
 dlls/winex11.drv/window.c |    5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/dlls/winex11.drv/window.c b/dlls/winex11.drv/window.c
index 429602b..1ff36eb 100644
--- a/dlls/winex11.drv/window.c
+++ b/dlls/winex11.drv/window.c
@@ -1897,11 +1897,12 @@ HWND create_foreign_window( Display *display, Window xwin )
     SetPropA( hwnd, foreign_window_prop, (HANDLE)xwin );
     XSaveContext( display, xwin, winContext, (char *)data->hwnd );
 
-    ShowWindow( hwnd, SW_SHOW );
-
     TRACE( "win %lx parent %p style %08x %s -> hwnd %p\n",
            xwin, parent, style, wine_dbgstr_rect(&data->window_rect), hwnd );
 
+    release_win_data( data );
+
+    ShowWindow( hwnd, SW_SHOW );
     return hwnd;
 }
 
-- 
1.7.9.5


More information about the wine-patches mailing list