Index: VBoxSeamless.cpp
===================================================================
--- VBoxSeamless.cpp	(revision 31442)
+++ VBoxSeamless.cpp	(working copy)
@@ -225,6 +225,8 @@
 
 void VBoxSeamlessCheckWindows()
 {
+	// true if last region is not null
+	static bool lastRegionNotNull = false;
     VBOX_ENUM_PARAM param;
 
     param.hdc       = GetDC(HWND_DESKTOP);
@@ -236,6 +238,20 @@
 #endif
     EnumWindows(VBoxEnumFunc, (LPARAM)&param);
 
+	/* transition from some visible regions to none, we need to update the dislay too
+	   create a dummy region to cause host to refresh display
+	   testcase: after closing the only visible window 
+	*/
+	if (lastRegionNotNull && !param.hrgn)
+	{
+		lastRegionNotNull = false;		
+		param.hrgn = CreateRectRgn(0, 0, 1, 1);
+	}
+	else
+	{
+		lastRegionNotNull = !!param.hrgn; 
+	}
+
     if (param.hrgn)
     {
         DWORD cbSize;
