--- sourceforge.net/branches/seamlessrdp-branch/rdesktop/xwin.c 2006/03/22 16:19:41 1192 +++ sourceforge.net/branches/seamlessrdp-branch/rdesktop/xwin.c 2006/03/22 16:20:55 1193 @@ -82,6 +82,7 @@ static unsigned long g_seamless_focused = 0; static BOOL g_seamless_started = False; /* Server end is up and running */ static BOOL g_seamless_active = False; /* We are currently in seamless mode */ +static BOOL g_seamless_hidden = False; /* Desktop is hidden on server */ extern BOOL g_seamless_rdp; extern uint32 g_embed_wnd; @@ -3244,7 +3245,7 @@ void -ui_seamless_begin() +ui_seamless_begin(BOOL hidden) { if (!g_seamless_rdp) return; @@ -3253,6 +3254,40 @@ return; g_seamless_started = True; + g_seamless_hidden = hidden; + + if (!hidden) + ui_seamless_toggle(); +} + + +void +ui_seamless_hide_desktop() +{ + if (!g_seamless_rdp) + return; + + if (!g_seamless_started) + return; + + if (g_seamless_active) + ui_seamless_toggle(); + + g_seamless_hidden = True; +} + + +void +ui_seamless_unhide_desktop() +{ + if (!g_seamless_rdp) + return; + + if (!g_seamless_started) + return; + + g_seamless_hidden = False; + ui_seamless_toggle(); } @@ -3266,6 +3301,9 @@ if (!g_seamless_started) return; + if (g_seamless_hidden) + return; + if (g_seamless_active) { /* Deactivate */