[2/3] wineboot: Unlink the desktop after ending a session.

Vincent Povirk madewokherd at gmail.com
Fri Jan 24 15:12:39 CST 2014


-------------- next part --------------
From 4313345847fad4cd0ff1a9dec4efcf766d50510c Mon Sep 17 00:00:00 2001
From: Vincent Povirk <vincent at codeweavers.com>
Date: Fri, 24 Jan 2014 13:58:58 -0600
Subject: [PATCH 2/4] wineboot: Unlink the desktop after ending a session.

---
 programs/wineboot/wineboot.c | 22 +++++++++++++++++++++-
 1 file changed, 21 insertions(+), 1 deletion(-)

diff --git a/programs/wineboot/wineboot.c b/programs/wineboot/wineboot.c
index a20b4e1..bff0431 100644
--- a/programs/wineboot/wineboot.c
+++ b/programs/wineboot/wineboot.c
@@ -1116,6 +1116,20 @@ done:
     return ret;
 }
 
+static BOOL wine_unlink_desktop(HDESK desktop)
+{
+    BOOL (*CDECL __wine_unlink_desktop)(HDESK desktop) = NULL;
+
+    __wine_unlink_desktop = (void*)GetProcAddress(
+        GetModuleHandleA("user32"),
+        "__wine_unlink_desktop");
+
+    if (__wine_unlink_desktop != NULL)
+        return __wine_unlink_desktop(desktop);
+
+    return FALSE;
+}
+
 static void usage(void)
 {
     WINE_MESSAGE( "Usage: wineboot [options]\n" );
@@ -1212,7 +1226,13 @@ int main( int argc, char *argv[] )
         {
             if (!shutdown_all_desktops( force )) return 1;
         }
-        else if (!shutdown_close_windows( force )) return 1;
+        else
+        {
+            if (!shutdown_close_windows( force )) return 1;
+
+            if (shutdown && !wine_unlink_desktop( GetThreadDesktop( GetCurrentThreadId() ) ))
+                return 1;
+        }
     }
 
     if (kill) kill_processes( shutdown );
-- 
1.8.1.2



More information about the wine-patches mailing list