Index: /trunk/src/VBox/HostServices/SharedOpenGL/crserverlib/server_presenter.cpp
===================================================================
--- /trunk/src/VBox/HostServices/SharedOpenGL/crserverlib/server_presenter.cpp	(revision 51974)
+++ /trunk/src/VBox/HostServices/SharedOpenGL/crserverlib/server_presenter.cpp	(revision 51975)
@@ -2514,5 +2514,5 @@
                     /* this is a cleanup operation
                      * empty compositor is guarantid to be released on VBoxPresentComposition return */
-                    cr_server.head_spu->dispatch_table.VBoxPresentComposition(mSpuWindow, mpCompositor, NULL);
+                    cr_server.head_spu->dispatch_table.VBoxPresentComposition(mSpuWindow, &TmpCompositor, NULL);
                 }
                 g_pLed->Asserted.s.fWriting = 1;
Index: /trunk/src/VBox/HostServices/SharedOpenGL/render/renderspu.c
===================================================================
--- /trunk/src/VBox/HostServices/SharedOpenGL/render/renderspu.c	(revision 51974)
+++ /trunk/src/VBox/HostServices/SharedOpenGL/render/renderspu.c	(revision 51975)
@@ -1017,5 +1017,5 @@
      * no need to synch here
      * the lock is actually needed to ensure we're in synch with the redraw thread */
-    if (window->pCompositor == pCompositor && ! fEmpty)
+    if (window->pCompositor == pCompositor && !fEmpty)
         return !!pCompositor;
 
@@ -1031,5 +1031,5 @@
         }
 
-        window->pCompositor = pCompositor;
+        window->pCompositor = !fEmpty ? pCompositor : NULL;
         RTCritSectLeave(&window->CompositorLock);
         return fNeedPresent;
Index: /trunk/src/VBox/HostServices/SharedOpenGL/render/renderspu_cocoa_helper.m
===================================================================
--- /trunk/src/VBox/HostServices/SharedOpenGL/render/renderspu_cocoa_helper.m	(revision 51974)
+++ /trunk/src/VBox/HostServices/SharedOpenGL/render/renderspu_cocoa_helper.m	(revision 51975)
@@ -925,4 +925,7 @@
     DEBUG_MSG(("OVIW(%p): setSize: new size: %dx%d\n", (void*)self, (int)size.width, (int)size.height));
     [self performSelectorOnMainThread:@selector(vboxReshapeOnResizePerform) withObject:nil waitUntilDone:NO];
+
+    /* ensure window contents is updated after that */
+    [self setNeedsDisplay:YES];
 }
 
@@ -1273,4 +1276,6 @@
                 m_fNeedViewportUpdate = false;
             }
+            
+            m_fCleanupNeeded = GL_FALSE;
             
             /* Render FBO content to the dock tile when necessary. */
@@ -1946,7 +1951,9 @@
     NSAutoreleasePool *pPool = [[NSAutoreleasePool alloc] init];
 
-    [(OverlayView*)pView vboxNeedsEmptyPresent];
+    GLboolean fNeedsPresent = [(OverlayView*)pView vboxNeedsEmptyPresent];
 
     [pPool release];
+    
+    return fNeedsPresent;
 }
 
