Index: /trunk/src/VBox/Frontends/VBoxBFE/DisplayImpl.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VBoxBFE/DisplayImpl.cpp	(revision 19816)
+++ /trunk/src/VBox/Frontends/VBoxBFE/DisplayImpl.cpp	(revision 19817)
@@ -93,22 +93,15 @@
     mcbVbvaPartial = 0;
 
-    RTSemEventMultiCreate(&mUpdateSem);
-
-    // reset the event sems
-    RTSemEventMultiReset(mUpdateSem);
-
     // by default, we have an internal Framebuffer which is
     // NULL, i.e. a black hole for no display output
+    mFramebuffer = NULL;
+    mFramebufferOpened = false;
+
+    mu32ResizeStatus = ResizeStatus_Void;
+}
+
+VMDisplay::~VMDisplay()
+{
     mFramebuffer = 0;
-    mInternalFramebuffer = true;
-    mFramebufferOpened = false;
-
-    mu32ResizeStatus = ResizeStatus_Void;
-}
-
-VMDisplay::~VMDisplay()
-{
-    mFramebuffer = 0;
-    RTSemEventMultiDestroy(mUpdateSem);
 }
 
@@ -201,5 +194,5 @@
 
     // this is only valid for external framebuffers
-    if (mInternalFramebuffer)
+    if (!mFramebuffer)
         return E_FAIL;
 
@@ -259,26 +252,6 @@
     }
 
-    // special processing for the internal Framebuffer
-    if (mInternalFramebuffer)
-    {
-        mFramebuffer->Unlock();
-    }
-    else
-    {
-        // callback into the Framebuffer to notify it
-        BOOL finished;
-
-        RTSemEventMultiReset(mUpdateSem);
-
-        mFramebuffer->NotifyUpdate(x, y, w, h, &finished);
-        mFramebuffer->Unlock();
-
-        if (!finished)
-        {
-            // the Framebuffer needs more time to process
-            // the event so we have to halt the VM until it's done
-            RTSemEventMultiWait(mUpdateSem, RT_INDEFINITE_WAIT);
-        }
-    }
+    mFramebuffer->NotifyUpdate(x, y, w, h);
+    mFramebuffer->Unlock();
 }
 
@@ -336,5 +309,5 @@
  * @param Framebuffer external Framebuffer object
  */
-STDMETHODIMP VMDisplay::RegisterExternalFramebuffer(Framebuffer *Framebuffer)
+STDMETHODIMP VMDisplay::SetFramebuffer(unsigned iScreenID, Framebuffer *Framebuffer)
 {
     if (!Framebuffer)
@@ -343,5 +316,4 @@
     // free current Framebuffer (if there is any)
     mFramebuffer = 0;
-    mInternalFramebuffer = false;
     mFramebuffer = Framebuffer;
     updateDisplayData();
Index: /trunk/src/VBox/Frontends/VBoxBFE/DisplayImpl.h
===================================================================
--- /trunk/src/VBox/Frontends/VBoxBFE/DisplayImpl.h	(revision 19816)
+++ /trunk/src/VBox/Frontends/VBoxBFE/DisplayImpl.h	(revision 19817)
@@ -55,5 +55,5 @@
     uint32_t getBitsPerPixel();
 
-    STDMETHODIMP RegisterExternalFramebuffer(Framebuffer *Framebuffer);
+    STDMETHODIMP SetFramebuffer(unsigned iScreenID, Framebuffer *Framebuffer);
     STDMETHODIMP InvalidateAndUpdate();
     STDMETHODIMP ResizeCompleted();
@@ -84,8 +84,7 @@
 
     Framebuffer *mFramebuffer;
-    bool mInternalFramebuffer, mFramebufferOpened;
+    bool mFramebufferOpened;
 
     ULONG mSupportedAccelOps;
-    RTSEMEVENTMULTI mUpdateSem;
 
     struct _VBVAMEMORY *mpVbvaMemory;
Index: /trunk/src/VBox/Frontends/VBoxBFE/Framebuffer.h
===================================================================
--- /trunk/src/VBox/Frontends/VBoxBFE/Framebuffer.h	(revision 19816)
+++ /trunk/src/VBox/Frontends/VBoxBFE/Framebuffer.h	(revision 19817)
@@ -44,6 +44,5 @@
     virtual HRESULT getBitsPerPixel(ULONG *bitsPerPixel) = 0;
     virtual HRESULT getLineSize(ULONG *lineSize) = 0;
-    virtual HRESULT NotifyUpdate(ULONG x, ULONG y,
-                            ULONG w, ULONG h, BOOL *finished) = 0;
+    virtual HRESULT NotifyUpdate(ULONG x, ULONG y, ULONG w, ULONG h) = 0;
     virtual HRESULT RequestResize(ULONG w, ULONG h, BOOL *finished) = 0;
 
Index: /trunk/src/VBox/Frontends/VBoxBFE/SDLFramebuffer.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VBoxBFE/SDLFramebuffer.cpp	(revision 19816)
+++ /trunk/src/VBox/Frontends/VBoxBFE/SDLFramebuffer.cpp	(revision 19817)
@@ -228,5 +228,5 @@
  */
 HRESULT SDLFramebuffer::NotifyUpdate(ULONG x, ULONG y,
-                                     ULONG w, ULONG h, BOOL *finished)
+                                     ULONG w, ULONG h)
 {
     LogFlow(("SDLFramebuffer::NotifyUpdate: x = %d, y = %d, w = %d, h = %d\n",
@@ -258,10 +258,4 @@
 #endif /* !VBOXBFE_WITH_X11 */
 
-    /*
-     * The Display thread can continue as we will lock the framebuffer
-     * from the SDL thread when we get to actually doing the update.
-     */
-    if (finished)
-        *finished = TRUE;
     return S_OK;
 }
Index: /trunk/src/VBox/Frontends/VBoxBFE/SDLFramebuffer.h
===================================================================
--- /trunk/src/VBox/Frontends/VBoxBFE/SDLFramebuffer.h	(revision 19816)
+++ /trunk/src/VBox/Frontends/VBoxBFE/SDLFramebuffer.h	(revision 19817)
@@ -50,6 +50,5 @@
     virtual HRESULT getBitsPerPixel(ULONG *bitsPerPixel);
     virtual HRESULT getLineSize(ULONG *lineSize);
-    virtual HRESULT NotifyUpdate(ULONG x, ULONG y,
-                            ULONG w, ULONG h, BOOL *finished);
+    virtual HRESULT NotifyUpdate(ULONG x, ULONG y, ULONG w, ULONG h);
     virtual HRESULT RequestResize(ULONG w, ULONG h, BOOL *finished);
     virtual HRESULT GetVisibleRegion(BYTE *aRectangles, ULONG aCount, ULONG *aCountCopied);
Index: /trunk/src/VBox/Frontends/VBoxBFE/VBoxBFE.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VBoxBFE/VBoxBFE.cpp	(revision 19816)
+++ /trunk/src/VBox/Frontends/VBoxBFE/VBoxBFE.cpp	(revision 19817)
@@ -803,5 +803,5 @@
     if (!gConsole->initialized())
         goto leave;
-    gDisplay->RegisterExternalFramebuffer(gFramebuffer);
+    gDisplay->SetFramebuffer(0, gFramebuffer);
 
     /* start with something in the titlebar */
Index: /trunk/src/VBox/Frontends/VBoxFB/Framebuffer.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VBoxFB/Framebuffer.cpp	(revision 19816)
+++ /trunk/src/VBox/Frontends/VBoxFB/Framebuffer.cpp	(revision 19817)
@@ -187,5 +187,5 @@
 
 NS_IMETHODIMP VBoxDirectFB::NotifyUpdate(uint32_t x, uint32_t y,
-                                         uint32_t w, uint32_t h, PRBool *finished)
+                                         uint32_t w, uint32_t h)
 {
     // we only need to take action if we have a memory framebuffer
@@ -209,5 +209,6 @@
             DFBCHECK(surface->StretchBlit(surface, fbInternalSurface,
                                           &blitRectangle, &hostRectangle));
-        } else
+        }
+        else
         {
             DFBCHECK(surface->Blit(surface, fbInternalSurface, &blitRectangle,
@@ -216,6 +217,4 @@
         }
     }
-    if (finished)
-        *finished = true;
     return NS_OK;
 }
Index: /trunk/src/VBox/Frontends/VBoxFB/Framebuffer.h
===================================================================
--- /trunk/src/VBox/Frontends/VBoxFB/Framebuffer.h	(revision 19816)
+++ /trunk/src/VBox/Frontends/VBoxFB/Framebuffer.h	(revision 19817)
@@ -44,5 +44,5 @@
     NS_IMETHOD GetUsesGuestVRAM(BOOL *usesGuestVRAM);
     NS_IMETHOD NotifyUpdate(uint32_t x, uint32_t y,
-                           uint32_t w, uint32_t h, PRBool *finished);
+                            uint32_t w, uint32_t h);
     NS_IMETHOD RequestResize(ULONG aScreenId, ULONG pixelFormat, uint32_t vram,
                              uint32_t bitsPerPixel, uint32_t bytesPerLine,
Index: /trunk/src/VBox/Frontends/VBoxFB/VBoxFB.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VBoxFB/VBoxFB.cpp	(revision 19816)
+++ /trunk/src/VBox/Frontends/VBoxFB/VBoxFB.cpp	(revision 19817)
@@ -342,5 +342,5 @@
     // register our framebuffer
     frameBuffer = new VBoxDirectFB(dfb, surface);
-    display->RegisterExternalFramebuffer(frameBuffer);
+    display->SetFramebuffer(VBOX_VIDEO_PRIMARY_SCREEN, frameBuffer);
 
     /**
Index: /trunk/src/VBox/Frontends/VBoxHeadless/VBoxHeadless.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VBoxHeadless/VBoxHeadless.cpp	(revision 19816)
+++ /trunk/src/VBox/Frontends/VBoxHeadless/VBoxHeadless.cpp	(revision 19817)
@@ -46,4 +46,5 @@
 #include <iprt/env.h>
 #include <VBox/err.h>
+#include <VBox/VBoxVideo.h>
 
 #ifdef VBOX_FFMPEG
@@ -744,5 +745,5 @@
                 Log2(("VBoxHeadless: Registering framebuffer\n"));
                 pFramebuffer->AddRef();
-                display->RegisterExternalFramebuffer(pFramebuffer);
+                display->SetFramebuffer(VBOX_VIDEO_PRIMARY_SCREEN, pFramebuffer);
             }
             if (!RT_SUCCESS(rrc) || (rcc != S_OK))
Index: /trunk/src/VBox/Frontends/VBoxHeadless/VideoCapture/FFmpegFB.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VBoxHeadless/VideoCapture/FFmpegFB.cpp	(revision 19816)
+++ /trunk/src/VBox/Frontends/VBoxHeadless/VideoCapture/FFmpegFB.cpp	(revision 19817)
@@ -142,6 +142,5 @@
         {
             /* Dummy update to make sure we get all the frame (timing). */
-            BOOL dummy;
-            NotifyUpdate(0, 0, 0, 0, &dummy);
+            NotifyUpdate(0, 0, 0, 0);
             /* Write the last pending frame before exiting */
             int rc = do_rgb_to_yuv_conversion();
@@ -431,8 +430,6 @@
  * @param w        width of the area which has been updated
  * @param h        height of the area which has been updated
- * @param finished
- */
-STDMETHODIMP FFmpegFB::NotifyUpdate(ULONG x, ULONG y, ULONG w, ULONG h,
-                                    BOOL *finished)
+ */
+STDMETHODIMP FFmpegFB::NotifyUpdate(ULONG x, ULONG y, ULONG w, ULONG h)
 {
     int rc;
@@ -442,8 +439,5 @@
               (unsigned long) x,  (unsigned long) y,  (unsigned long) w,
                (unsigned long) h));
-    if (!finished)
-        return E_POINTER;
-    /* For now we will do things synchronously */
-    *finished = true;
+
     /* We always leave at least one frame update pending, which we
        process when the time until the next frame has elapsed. */
Index: /trunk/src/VBox/Frontends/VBoxHeadless/VideoCapture/FFmpegFB.h
===================================================================
--- /trunk/src/VBox/Frontends/VBoxHeadless/VideoCapture/FFmpegFB.h	(revision 19816)
+++ /trunk/src/VBox/Frontends/VBoxHeadless/VideoCapture/FFmpegFB.h	(revision 19817)
@@ -100,6 +100,5 @@
     STDMETHOD(COMGETTER(WinId)) (ULONG64 *winId);
 
-    STDMETHOD(NotifyUpdate)(ULONG x, ULONG y,
-                            ULONG w, ULONG h, BOOL *finished);
+    STDMETHOD(NotifyUpdate)(ULONG x, ULONG y, ULONG w, ULONG h);
     STDMETHOD(RequestResize)(ULONG aScreenId, ULONG pixelFormat, BYTE *vram,
                              ULONG bitsPerPixel, ULONG bytesPerLine,
Index: /trunk/src/VBox/Frontends/VBoxSDL/Framebuffer.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VBoxSDL/Framebuffer.cpp	(revision 19816)
+++ /trunk/src/VBox/Frontends/VBoxSDL/Framebuffer.cpp	(revision 19817)
@@ -408,5 +408,5 @@
  */
 STDMETHODIMP VBoxSDLFB::NotifyUpdate(ULONG x, ULONG y,
-                                     ULONG w, ULONG h, BOOL *finished)
+                                     ULONG w, ULONG h)
 {
     /*
@@ -434,10 +434,4 @@
 #endif /* !VBOXSDL_WITH_X11 */
 
-    /*
-     * The Display thread can continue as we will lock the framebuffer
-     * from the SDL thread when we get to actually doing the update.
-     */
-    if (finished)
-        *finished = TRUE;
     return S_OK;
 }
@@ -1454,7 +1448,7 @@
  */
 STDMETHODIMP VBoxSDLFBOverlay::NotifyUpdate(ULONG x, ULONG y,
-                            ULONG w, ULONG h, BOOL *finished)
-{
-    return mParent->NotifyUpdate(x + mOverlayX, y + mOverlayY, w, h, finished);
+                            ULONG w, ULONG h)
+{
+    return mParent->NotifyUpdate(x + mOverlayX, y + mOverlayY, w, h);
 }
 
Index: /trunk/src/VBox/Frontends/VBoxSDL/Framebuffer.h
===================================================================
--- /trunk/src/VBox/Frontends/VBoxSDL/Framebuffer.h	(revision 19816)
+++ /trunk/src/VBox/Frontends/VBoxSDL/Framebuffer.h	(revision 19817)
@@ -101,6 +101,5 @@
     STDMETHOD(COMGETTER(WinId)) (uint64_t *winId);
 
-    STDMETHOD(NotifyUpdate)(ULONG x, ULONG y,
-                            ULONG w, ULONG h, BOOL *finished);
+    STDMETHOD(NotifyUpdate)(ULONG x, ULONG y, ULONG w, ULONG h);
     STDMETHOD(RequestResize)(ULONG aScreenId, ULONG pixelFormat, BYTE *vram,
                              ULONG bitsPerPixel, ULONG bytesPerLine,
@@ -268,6 +267,5 @@
     STDMETHOD(Unlock)();
     STDMETHOD(Move)(ULONG x, ULONG y);
-    STDMETHOD(NotifyUpdate)(ULONG x, ULONG y,
-                            ULONG w, ULONG h, BOOL *finished);
+    STDMETHOD(NotifyUpdate)(ULONG x, ULONG y, ULONG w, ULONG h);
     STDMETHOD(RequestResize)(ULONG aScreenId, ULONG pixelFormat, ULONG vram,
                              ULONG bitsPerPixel, ULONG bytesPerLine,
Index: /trunk/src/VBox/Frontends/VBoxSDL/VBoxSDL.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VBoxSDL/VBoxSDL.cpp	(revision 19816)
+++ /trunk/src/VBox/Frontends/VBoxSDL/VBoxSDL.cpp	(revision 19817)
@@ -59,4 +59,5 @@
 #include <VBox/log.h>
 #include <VBox/version.h>
+#include <VBox/VBoxVideo.h>
 
 #include <iprt/alloca.h>
@@ -2037,5 +2038,5 @@
 
     // register our framebuffer
-    rc = gDisplay->RegisterExternalFramebuffer(gpFrameBuffer);
+    rc = gDisplay->SetFramebuffer(VBOX_VIDEO_PRIMARY_SCREEN, gpFrameBuffer);
     if (rc != S_OK)
     {
@@ -2885,5 +2886,5 @@
     LogFlow(("Releasing mouse, keyboard, vrdpserver, display, console...\n"));
     if (gDisplay)
-        gDisplay->SetupInternalFramebuffer(0);
+        gDisplay->SetFramebuffer(VBOX_VIDEO_PRIMARY_SCREEN, NULL);
     gMouse = NULL;
     gKeyboard = NULL;
Index: /trunk/src/VBox/Frontends/VirtualBox/include/VBoxFrameBuffer.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/include/VBoxFrameBuffer.h	(revision 19816)
+++ /trunk/src/VBox/Frontends/VirtualBox/include/VBoxFrameBuffer.h	(revision 19817)
@@ -273,6 +273,5 @@
 
     STDMETHOD(NotifyUpdate) (ULONG aX, ULONG aY,
-                             ULONG aW, ULONG aH,
-                             BOOL *aFinished);
+                             ULONG aW, ULONG aH);
 
     ulong pixelFormat() { return mPixelFormat; }
@@ -308,6 +307,5 @@
 
     STDMETHOD(NotifyUpdate) (ULONG aX, ULONG aY,
-                             ULONG aW, ULONG aH,
-                             BOOL *aFinished);
+                             ULONG aW, ULONG aH);
 
     uchar *address()
@@ -364,6 +362,5 @@
 
     STDMETHOD(NotifyUpdate) (ULONG aX, ULONG aY,
-                             ULONG aW, ULONG aH,
-                             BOOL *aFinished);
+                             ULONG aW, ULONG aH);
 
     uchar *address() { return (uchar *) mSurfaceDesc.lpSurface; }
@@ -422,6 +419,5 @@
 
     STDMETHOD (NotifyUpdate) (ULONG aX, ULONG aY,
-                              ULONG aW, ULONG aH,
-                              BOOL *aFinished);
+                              ULONG aW, ULONG aH);
     STDMETHOD (SetVisibleRegion) (BYTE *aRectangles, ULONG aCount);
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/VBoxConsoleView.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/VBoxConsoleView.cpp	(revision 19816)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/VBoxConsoleView.cpp	(revision 19817)
@@ -20,4 +20,6 @@
  * additional information or have any questions.
  */
+
+#include <VBox/VBoxVideo.h>
 
 #include "VBoxConsoleView.h"
@@ -876,5 +878,5 @@
     {
         mFrameBuf->AddRef();
-        display.RegisterExternalFramebuffer (CFramebuffer (mFrameBuf));
+        display.SetFramebuffer (VBOX_VIDEO_PRIMARY_SCREEN, CFramebuffer (mFrameBuf));
     }
 
@@ -950,5 +952,5 @@
         CDisplay display = mConsole.GetDisplay();
         Assert (!display.isNull());
-        display.SetupInternalFramebuffer (0);
+        display.SetFramebuffer (VBOX_VIDEO_PRIMARY_SCREEN, CFramebuffer(NULL));
         /* release the reference */
         mFrameBuf->Release();
Index: /trunk/src/VBox/Frontends/VirtualBox/src/VBoxFBDDRAW.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/VBoxFBDDRAW.cpp	(revision 19816)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/VBoxFBDDRAW.cpp	(revision 19817)
@@ -229,6 +229,5 @@
 /** @note This method is called on EMT from under this object's lock */
 STDMETHODIMP VBoxDDRAWFrameBuffer::NotifyUpdate (ULONG aX, ULONG aY,
-                                                 ULONG aW, ULONG aH,
-                                                 BOOL *aFinished)
+                                                 ULONG aW, ULONG aH)
 {
     LOGDDRAW(("DDRAW: NotifyUpdate %d,%d %dx%d\n", aX, aY, aW, aH));
@@ -243,6 +242,4 @@
         drawRect (aX, aY, aW, aH);
     }
-
-    *aFinished = TRUE;
 
     return S_OK;
Index: /trunk/src/VBox/Frontends/VirtualBox/src/VBoxFBQuartz2D.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/VBoxFBQuartz2D.cpp	(revision 19816)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/VBoxFBQuartz2D.cpp	(revision 19817)
@@ -64,6 +64,5 @@
 /** @note This method is called on EMT from under this object's lock */
 STDMETHODIMP VBoxQuartz2DFrameBuffer::NotifyUpdate (ULONG aX, ULONG aY,
-                                                 ULONG aW, ULONG aH,
-                                                 BOOL *aFinished)
+                                                 ULONG aW, ULONG aH)
 {
 /*    Log (("Quartz2D: NotifyUpdate %d,%d %dx%d\n", aX, aY, aW, aH));*/
@@ -71,7 +70,4 @@
     QApplication::postEvent (mView,
                              new VBoxRepaintEvent (aX, aY, aW, aH));
-    /* the update has been finished, return TRUE */
-    *aFinished = TRUE;
-
     return S_OK;
 }
Index: /trunk/src/VBox/Frontends/VirtualBox/src/VBoxFrameBuffer.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/VBoxFrameBuffer.cpp	(revision 19816)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/VBoxFrameBuffer.cpp	(revision 19817)
@@ -282,6 +282,5 @@
 /** @note This method is called on EMT from under this object's lock */
 STDMETHODIMP VBoxQImageFrameBuffer::NotifyUpdate (ULONG aX, ULONG aY,
-                                                  ULONG aW, ULONG aH,
-                                                  BOOL *aFinished)
+                                                  ULONG aW, ULONG aH)
 {
     /* We're not on the GUI thread and update() isn't thread safe in
@@ -292,6 +291,4 @@
                              new VBoxRepaintEvent (aX, aY, aW, aH));
 
-    /* The update has been finished, return TRUE */
-    *aFinished = TRUE;
     return S_OK;
 }
@@ -465,6 +462,5 @@
 /** @note This method is called on EMT from under this object's lock */
 STDMETHODIMP VBoxSDLFrameBuffer::NotifyUpdate (ULONG aX, ULONG aY,
-                                               ULONG aW, ULONG aH,
-                                               BOOL *aFinished)
+                                               ULONG aW, ULONG aH)
 {
 #if !defined (Q_WS_WIN) && !defined (Q_WS_PM)
@@ -480,6 +476,4 @@
                                aW, aH);
 #endif
-    /* the update has been finished, return TRUE */
-    *aFinished = TRUE;
     return S_OK;
 }
Index: /trunk/src/VBox/Main/DisplayImpl.cpp
===================================================================
--- /trunk/src/VBox/Main/DisplayImpl.cpp	(revision 19816)
+++ /trunk/src/VBox/Main/DisplayImpl.cpp	(revision 19817)
@@ -23,5 +23,4 @@
 
 #include "DisplayImpl.h"
-#include "FramebufferImpl.h"
 #include "ConsoleImpl.h"
 #include "ConsoleVRDPServer.h"
@@ -86,5 +85,4 @@
     mpVMMDev = NULL;
     mfVMMDevInited = false;
-    RTSemEventMultiCreate(&mUpdateSem);
 
     mLastAddress = NULL;
@@ -124,12 +122,7 @@
     unconst (mParent) = aParent;
 
-    /* reset the event sems */
-    RTSemEventMultiReset (mUpdateSem);
-
     // by default, we have an internal framebuffer which is
     // NULL, i.e. a black hole for no display output
-    mInternalFramebuffer = true;
     mFramebufferOpened = false;
-    mSupportedAccelOps = 0;
 
     ULONG ul;
@@ -185,6 +178,4 @@
     for (ul = 0; ul < mcMonitors; ul++)
         maFramebuffers[ul].pFramebuffer = NULL;
-
-    RTSemEventMultiDestroy (mUpdateSem);
 
     if (mParent)
@@ -507,52 +498,19 @@
     pFramebuffer->Lock();
 
-    /* special processing for the internal framebuffer */
-    if (mInternalFramebuffer)
-    {
-        pFramebuffer->Unlock();
-    } else
-    {
-        /* callback into the framebuffer to notify it */
-        BOOL finished = FALSE;
-
-        RTSemEventMultiReset(mUpdateSem);
-
-        checkCoordBounds (&x, &y, &w, &h, mpDrv->Connector.cx, mpDrv->Connector.cy);
-
-        if (w == 0 || h == 0)
-        {
-            /* Nothing to be updated. */
-            finished = TRUE;
-        }
-        else
-        {
-            pFramebuffer->NotifyUpdate(x, y, w, h, &finished);
-        }
-
-        if (!finished)
-        {
-            /*
-             *  the framebuffer needs more time to process
-             *  the event so we have to halt the VM until it's done
-             */
-            pFramebuffer->Unlock();
-            RTSemEventMultiWait(mUpdateSem, RT_INDEFINITE_WAIT);
-        } else
-        {
-            pFramebuffer->Unlock();
-        }
-
-        if (!mfVideoAccelEnabled)
-        {
-            /* When VBVA is enabled, the VRDP server is informed in the VideoAccelFlush.
-             * Inform the server here only if VBVA is disabled.
-             */
-            if (maFramebuffers[uScreenId].u32ResizeStatus == ResizeStatus_Void)
-            {
-                mParent->consoleVRDPServer()->SendUpdateBitmap(uScreenId, x, y, w, h);
-            }
-        }
-    }
-    return;
+    checkCoordBounds (&x, &y, &w, &h, mpDrv->Connector.cx, mpDrv->Connector.cy);
+
+    if (w != 0 && h != 0)
+        pFramebuffer->NotifyUpdate(x, y, w, h);
+
+    pFramebuffer->Unlock();
+
+    if (!mfVideoAccelEnabled)
+    {
+        /* When VBVA is enabled, the VRDP server is informed in the VideoAccelFlush.
+         * Inform the server here only if VBVA is disabled.
+         */
+        if (maFramebuffers[uScreenId].u32ResizeStatus == ResizeStatus_Void)
+            mParent->consoleVRDPServer()->SendUpdateBitmap(uScreenId, x, y, w, h);
+    }
 }
 
@@ -1344,7 +1302,11 @@
 /////////////////////////////////////////////////////////////////////////////
 
-STDMETHODIMP Display::SetupInternalFramebuffer (ULONG depth)
+STDMETHODIMP Display::SetFramebuffer (ULONG aScreenId,
+    IFramebuffer *aFramebuffer)
 {
     LogFlowFunc (("\n"));
+
+    if (aFramebuffer != NULL)
+        CheckComArgOutPointerValid(aFramebuffer);
 
     AutoCaller autoCaller (this);
@@ -1353,21 +1315,9 @@
     AutoWriteLock alock (this);
 
-    /*
-     *  Create an internal framebuffer only if depth is not zero. Otherwise, we
-     *  reset back to the "black hole" state as it was at Display construction.
-     */
-    ComPtr <IFramebuffer> frameBuf;
-    if (depth)
-    {
-        ComObjPtr <InternalFramebuffer> internal;
-        internal.createObject();
-        internal->init (640, 480, depth);
-        frameBuf = internal; // query interface
-    }
-
     Console::SafeVMPtrQuiet pVM (mParent);
     if (pVM.isOk())
     {
-        /* Must leave the lock here because the changeFramebuffer will also obtain it. */
+        /* Must leave the lock here because the changeFramebuffer will
+         * also obtain it. */
         alock.leave ();
 
@@ -1375,7 +1325,5 @@
         PVMREQ pReq = NULL;
         int vrc = VMR3ReqCall (pVM, VMCPUID_ANY, &pReq, RT_INDEFINITE_WAIT,
-                               (PFNRT) changeFramebuffer, 4,
-                               this, static_cast <IFramebuffer *> (frameBuf),
-                               true /* aInternal */, VBOX_VIDEO_PRIMARY_SCREEN);
+            (PFNRT) changeFramebuffer, 3, this, aFramebuffer, aScreenId);
         if (RT_SUCCESS (vrc))
             vrc = pReq->iStatus;
@@ -1389,135 +1337,5 @@
     {
         /* No VM is created (VM is powered off), do a direct call */
-        int vrc = changeFramebuffer (this, frameBuf, true /* aInternal */, VBOX_VIDEO_PRIMARY_SCREEN);
-        ComAssertRCRet (vrc, E_FAIL);
-    }
-
-    return S_OK;
-}
-
-STDMETHODIMP Display::LockFramebuffer (BYTE **address)
-{
-    CheckComArgOutPointerValid(address);
-
-    AutoCaller autoCaller (this);
-    CheckComRCReturnRC (autoCaller.rc());
-
-    AutoWriteLock alock (this);
-
-    /* only allowed for internal framebuffers */
-    if (mInternalFramebuffer && !mFramebufferOpened
-        && !maFramebuffers[VBOX_VIDEO_PRIMARY_SCREEN].pFramebuffer.isNull())
-    {
-        CHECK_CONSOLE_DRV (mpDrv);
-
-        maFramebuffers[VBOX_VIDEO_PRIMARY_SCREEN].pFramebuffer->Lock();
-        mFramebufferOpened = true;
-        *address = mpDrv->Connector.pu8Data;
-        return S_OK;
-    }
-
-    return setError (VBOX_E_NOT_SUPPORTED,
-        tr ("Framebuffer locking is allowed only for the internal framebuffer"));
-}
-
-STDMETHODIMP Display::UnlockFramebuffer()
-{
-    AutoCaller autoCaller (this);
-    CheckComRCReturnRC (autoCaller.rc());
-
-    AutoWriteLock alock (this);
-
-    if (mFramebufferOpened)
-    {
-        CHECK_CONSOLE_DRV (mpDrv);
-
-        maFramebuffers[VBOX_VIDEO_PRIMARY_SCREEN].pFramebuffer->Unlock();
-        mFramebufferOpened = false;
-        return S_OK;
-    }
-
-    return setError (VBOX_E_NOT_SUPPORTED,
-        tr ("Framebuffer locking is allowed only for the internal framebuffer"));
-}
-
-STDMETHODIMP Display::RegisterExternalFramebuffer (IFramebuffer *frameBuf)
-{
-    LogFlowFunc (("\n"));
-
-    CheckComArgNotNull(frameBuf);
-
-    AutoCaller autoCaller (this);
-    CheckComRCReturnRC (autoCaller.rc());
-
-    AutoWriteLock alock (this);
-
-    Console::SafeVMPtrQuiet pVM (mParent);
-    if (pVM.isOk())
-    {
-        /* Must leave the lock here because the changeFramebuffer will
-         * also obtain it. */
-        alock.leave ();
-
-        /* send request to the EMT thread */
-        PVMREQ pReq = NULL;
-        int vrc = VMR3ReqCall (pVM, VMCPUID_ANY, &pReq, RT_INDEFINITE_WAIT,
-            (PFNRT) changeFramebuffer, 4, this, frameBuf, false /* aInternal */,
-            VBOX_VIDEO_PRIMARY_SCREEN);
-        if (RT_SUCCESS (vrc))
-            vrc = pReq->iStatus;
-        VMR3ReqFree (pReq);
-
-        alock.enter ();
-
-        ComAssertRCRet (vrc, E_FAIL);
-    }
-    else
-    {
-        /* No VM is created (VM is powered off), do a direct call */
-        int vrc = changeFramebuffer (this, frameBuf, false /* aInternal */,
-            VBOX_VIDEO_PRIMARY_SCREEN);
-        ComAssertRCRet (vrc, E_FAIL);
-    }
-
-    return S_OK;
-}
-
-STDMETHODIMP Display::SetFramebuffer (ULONG aScreenId,
-    IFramebuffer *aFramebuffer)
-{
-    LogFlowFunc (("\n"));
-
-    CheckComArgOutPointerValid(aFramebuffer);
-
-    AutoCaller autoCaller (this);
-    CheckComRCReturnRC (autoCaller.rc());
-
-    AutoWriteLock alock (this);
-
-    Console::SafeVMPtrQuiet pVM (mParent);
-    if (pVM.isOk())
-    {
-        /* Must leave the lock here because the changeFramebuffer will
-         * also obtain it. */
-        alock.leave ();
-
-        /* send request to the EMT thread */
-        PVMREQ pReq = NULL;
-        int vrc = VMR3ReqCall (pVM, VMCPUID_ANY, &pReq, RT_INDEFINITE_WAIT,
-            (PFNRT) changeFramebuffer, 4, this, aFramebuffer, false /* aInternal */,
-            aScreenId);
-        if (RT_SUCCESS (vrc))
-            vrc = pReq->iStatus;
-        VMR3ReqFree (pReq);
-
-        alock.enter ();
-
-        ComAssertRCRet (vrc, E_FAIL);
-    }
-    else
-    {
-        /* No VM is created (VM is powered off), do a direct call */
-        int vrc = changeFramebuffer (this, aFramebuffer, false /* aInternal */,
-            aScreenId);
+        int vrc = changeFramebuffer (this, aFramebuffer, aScreenId);
         ComAssertRCRet (vrc, E_FAIL);
     }
@@ -1823,5 +1641,5 @@
 
     /* this is only valid for external framebuffers */
-    if (mInternalFramebuffer)
+    if (maFramebuffers[aScreenId].pFramebuffer == NULL)
         return setError (VBOX_E_NOT_SUPPORTED,
             tr ("Resize completed notification is valid only "
@@ -1859,13 +1677,8 @@
 
     /* this is only valid for external framebuffers */
-    if (mInternalFramebuffer)
+    if (maFramebuffers[VBOX_VIDEO_PRIMARY_SCREEN].pFramebuffer == NULL)
         return setError (VBOX_E_NOT_SUPPORTED,
             tr ("Resize completed notification is valid only "
                 "for external framebuffers"));
-
-    maFramebuffers[VBOX_VIDEO_PRIMARY_SCREEN].pFramebuffer->Lock();
-    /* signal our semaphore */
-    RTSemEventMultiSignal(mUpdateSem);
-    maFramebuffers[VBOX_VIDEO_PRIMARY_SCREEN].pFramebuffer->Unlock();
 
     return S_OK;
@@ -1972,10 +1785,9 @@
 /* static */
 DECLCALLBACK(int) Display::changeFramebuffer (Display *that, IFramebuffer *aFB,
-                                              bool aInternal, unsigned uScreenId)
+                                              unsigned uScreenId)
 {
     LogFlowFunc (("uScreenId = %d\n", uScreenId));
 
     AssertReturn (that, VERR_INVALID_PARAMETER);
-    AssertReturn (aFB || aInternal, VERR_INVALID_PARAMETER);
     AssertReturn (uScreenId < that->mcMonitors, VERR_INVALID_PARAMETER);
 
@@ -1987,7 +1799,4 @@
     DISPLAYFBINFO *pDisplayFBInfo = &that->maFramebuffers[uScreenId];
     pDisplayFBInfo->pFramebuffer = aFB;
-
-    that->mInternalFramebuffer = aInternal;
-    that->mSupportedAccelOps = 0;
 
     that->mParent->consoleVRDPServer()->SendResize ();
Index: unk/src/VBox/Main/FramebufferImpl.cpp
===================================================================
--- /trunk/src/VBox/Main/FramebufferImpl.cpp	(revision 19816)
+++ 	(revision )
@@ -1,217 +1,0 @@
-/** @file
- *
- * VirtualBox COM class implementation
- */
-
-/*
- * Copyright (C) 2006-2007 Sun Microsystems, Inc.
- *
- * This file is part of VirtualBox Open Source Edition (OSE), as
- * available from http://www.virtualbox.org. This file is free software;
- * you can redistribute it and/or modify it under the terms of the GNU
- * General Public License (GPL) as published by the Free Software
- * Foundation, in version 2 as it comes in the "COPYING" file of the
- * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
- * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
- *
- * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa
- * Clara, CA 95054 USA or visit http://www.sun.com if you need
- * additional information or have any questions.
- */
-
-#include "FramebufferImpl.h"
-#include <iprt/semaphore.h>
-
-// constructor / destructor
-/////////////////////////////////////////////////////////////////////////////
-
-InternalFramebuffer::InternalFramebuffer()
-{
-    mData = NULL;
-    RTSemMutexCreate(&mMutex);
-}
-
-InternalFramebuffer::~InternalFramebuffer()
-{
-    RTSemMutexDestroy(mMutex);
-    if (mData)
-        delete mData;
-}
-
-// public methods only for internal purposes
-/////////////////////////////////////////////////////////////////////////////
-
-HRESULT InternalFramebuffer::init(ULONG width, ULONG height, ULONG depth)
-{
-    mWidth = width;
-    mHeight = height;
-    mBitsPerPixel = depth;
-    mBytesPerLine = ((width * depth + 31) / 32) * 4;
-    mData = new uint8_t [mBytesPerLine * height];
-    memset (mData, 0, mBytesPerLine * height);
-
-    return S_OK;
-}
-
-// IFramebuffer properties
-/////////////////////////////////////////////////////////////////////////////
-
-STDMETHODIMP InternalFramebuffer::COMGETTER(Address) (BYTE **address)
-{
-    CheckComArgOutPointerValid(address);
-    *address = mData;
-    return S_OK;
-}
-
-STDMETHODIMP InternalFramebuffer::COMGETTER(Width) (ULONG *width)
-{
-    CheckComArgOutPointerValid(width);
-    *width = mWidth;
-    return S_OK;
-}
-
-STDMETHODIMP InternalFramebuffer::COMGETTER(Height) (ULONG *height)
-{
-    CheckComArgOutPointerValid(height);
-    *height = mHeight;
-    return S_OK;
-}
-
-STDMETHODIMP InternalFramebuffer::COMGETTER(BitsPerPixel) (ULONG *bitsPerPixel)
-{
-    CheckComArgOutPointerValid(bitsPerPixel);
-    *bitsPerPixel = mBitsPerPixel;
-    return S_OK;
-}
-
-STDMETHODIMP InternalFramebuffer::COMGETTER(BytesPerLine) (ULONG *bytesPerLine)
-{
-    CheckComArgOutPointerValid(bytesPerLine);
-    *bytesPerLine = mBytesPerLine;
-    return S_OK;
-}
-
-STDMETHODIMP InternalFramebuffer::COMGETTER(PixelFormat) (ULONG *pixelFormat)
-{
-    CheckComArgOutPointerValid(pixelFormat);
-    *pixelFormat = FramebufferPixelFormat_FOURCC_RGB;
-    return S_OK;
-}
-
-STDMETHODIMP InternalFramebuffer::COMGETTER(UsesGuestVRAM) (BOOL *usesGuestVRAM)
-{
-    CheckComArgOutPointerValid(usesGuestVRAM);
-    *usesGuestVRAM = FALSE;
-    return S_OK;
-}
-
-STDMETHODIMP InternalFramebuffer::COMGETTER(HeightReduction) (ULONG *heightReduction)
-{
-    CheckComArgOutPointerValid(heightReduction);
-    /* no reduction */
-    *heightReduction = 0;
-    return S_OK;
-}
-
-STDMETHODIMP InternalFramebuffer::COMGETTER(Overlay) (IFramebufferOverlay **aOverlay)
-{
-    CheckComArgOutPointerValid(aOverlay);
-    /* no overlay */
-    *aOverlay = 0;
-    return S_OK;
-}
-
-STDMETHODIMP InternalFramebuffer::COMGETTER(WinId) (ULONG64 *winId)
-{
-    CheckComArgOutPointerValid(winId);
-    *winId = 0;
-    return S_OK;
-}
-
-// IFramebuffer methods
-/////////////////////////////////////////////////////////////////////////////
-
-STDMETHODIMP InternalFramebuffer::Lock()
-{
-    RTSemMutexRequest(mMutex, RT_INDEFINITE_WAIT);
-    return S_OK;
-}
-
-STDMETHODIMP InternalFramebuffer::Unlock()
-{
-    RTSemMutexRelease(mMutex);
-    return S_OK;
-}
-
-STDMETHODIMP InternalFramebuffer::NotifyUpdate(ULONG x, ULONG y,
-                                               ULONG w, ULONG h,
-                                               BOOL *finished)
-{
-    CheckComArgOutPointerValid(finished);
-    // no need for the caller to wait
-    *finished = true;
-    return S_OK;
-}
-
-STDMETHODIMP
-InternalFramebuffer::RequestResize(ULONG iScreenId, ULONG pixelFormat, BYTE *vram,
-                                   ULONG bpp, ULONG bpl, ULONG w, ULONG h,
-                                   BOOL *finished)
-{
-    NOREF (bpp);
-    NOREF (bpl);
-
-    CheckComArgOutPointerValid(finished);
-    // no need for the caller to wait
-    *finished = true;
-
-    // allocate a new buffer
-    delete mData;
-    mWidth = w;
-    mHeight = h;
-    mBytesPerLine = ((w * mBitsPerPixel + 31) / 32) * 4;
-    mData = new uint8_t [mBytesPerLine * h];
-    memset (mData, 0, mBytesPerLine * h);
-
-    return S_OK;
-}
-
-STDMETHODIMP InternalFramebuffer::VideoModeSupported(ULONG width, ULONG height, ULONG bpp,
-                                                     BOOL *supported)
-{
-    CheckComArgOutPointerValid(supported);
-    /* whatever you want! */
-    *supported = true;
-    return S_OK;
-}
-
-STDMETHODIMP InternalFramebuffer::GetVisibleRegion(BYTE *aRectangles, ULONG aCount,
-                                                   ULONG *aCountCopied)
-{
-    CheckComArgOutPointerValid(aRectangles);
-
-    PRTRECT rects = (PRTRECT)aRectangles;
-
-    /// @todo
-
-    NOREF(rects);
-    NOREF(aCount);
-    NOREF(aCountCopied);
-
-    return S_OK;
-}
-
-STDMETHODIMP InternalFramebuffer::SetVisibleRegion(BYTE *aRectangles, ULONG aCount)
-{
-    CheckComArgOutPointerValid(aRectangles);
-
-    PRTRECT rects = (PRTRECT)aRectangles;
-
-    /// @todo
-
-    NOREF(rects);
-    NOREF(aCount);
-
-    return S_OK;
-}
-/* vi: set tabstop=4 shiftwidth=4 expandtab: */
Index: /trunk/src/VBox/Main/Makefile.kmk
===================================================================
--- /trunk/src/VBox/Main/Makefile.kmk	(revision 19816)
+++ /trunk/src/VBox/Main/Makefile.kmk	(revision 19817)
@@ -570,5 +570,4 @@
 	MouseImpl.cpp \
 	DisplayImpl.cpp \
-	FramebufferImpl.cpp \
 	MachineDebuggerImpl.cpp \
 	VBoxDriversRegister.cpp \
Index: /trunk/src/VBox/Main/idl/VirtualBox.xidl
===================================================================
--- /trunk/src/VBox/Main/idl/VirtualBox.xidl	(revision 19816)
+++ /trunk/src/VBox/Main/idl/VirtualBox.xidl	(revision 19817)
@@ -10276,5 +10276,5 @@
   <interface
      name="IFramebuffer" extends="$unknown"
-     uuid="3ce29e6d-835a-4283-8ee0-eb9971b81d81"
+     uuid="faaf4c24-d534-4171-8781-c15d2b9fe8c3"
      wsmap="suppress"
      >
@@ -10385,5 +10385,4 @@
       <param name="width" type="unsigned long" dir="in"/>
       <param name="height" type="unsigned long" dir="in"/>
-      <param name="finished" type="boolean" dir="return"/>
     </method>
 
@@ -10663,41 +10662,4 @@
       </desc>
     </attribute>
-
-    <method name="setupInternalFramebuffer">
-      <desc>
-        Prepares an internally managed frame buffer.
-      </desc>
-      <param name="depth" type="unsigned long" dir="in"/>
-    </method>
-
-    <method name="lockFramebuffer">
-      <desc>
-        Requests access to the internal frame buffer.
-
-        <result name="VBOX_E_NOT_SUPPORTED">
-          Attempt to lock a non-internal frame buffer.
-        </result>
-
-      </desc>
-      <param name="address" type="octet" mod="ptr" dir="return"/>
-    </method>
-
-    <method name="unlockFramebuffer">
-      <desc>
-        Releases access to the internal frame buffer.
-
-        <result name="VBOX_E_NOT_SUPPORTED">
-          Attempt to unlock a non-internal frame buffer.
-        </result>
-
-      </desc>
-    </method>
-
-    <method name="registerExternalFramebuffer">
-      <desc>
-        Registers an external frame buffer.
-      </desc>
-      <param name="framebuffer" type="IFramebuffer" dir="in"/>
-    </method>
 
     <method name="setFramebuffer">
Index: /trunk/src/VBox/Main/include/DisplayImpl.h
===================================================================
--- /trunk/src/VBox/Main/include/DisplayImpl.h	(revision 19816)
+++ /trunk/src/VBox/Main/include/DisplayImpl.h	(revision 19817)
@@ -232,8 +232,4 @@
 
     // IDisplay methods
-    STDMETHOD(SetupInternalFramebuffer)(ULONG depth);
-    STDMETHOD(LockFramebuffer)(BYTE **address);
-    STDMETHOD(UnlockFramebuffer)();
-    STDMETHOD(RegisterExternalFramebuffer)(IFramebuffer *frameBuf);
     STDMETHOD(SetFramebuffer)(ULONG aScreenId, IFramebuffer *aFramebuffer);
     STDMETHOD(GetFramebuffer)(ULONG aScreenId, IFramebuffer **aFramebuffer, LONG *aXOrigin, LONG *aYOrigin);
@@ -256,5 +252,5 @@
 
     static DECLCALLBACK(int) changeFramebuffer (Display *that, IFramebuffer *aFB,
-                                                bool aInternal, unsigned uScreenId);
+                                                unsigned uScreenId);
 
     static DECLCALLBACK(void*) drvQueryInterface(PPDMIBASE pInterface, PDMINTERFACE enmInterface);
@@ -277,5 +273,4 @@
     /** Set after the first attempt to find the VMM Device. */
     bool                    mfVMMDevInited;
-    bool mInternalFramebuffer;
 
     unsigned mcMonitors;
@@ -283,7 +278,4 @@
 
     bool mFramebufferOpened;
-    /** bitmask of acceleration operations supported by current framebuffer */
-    ULONG mSupportedAccelOps;
-    RTSEMEVENTMULTI mUpdateSem;
 
     /* arguments of the last handleDisplayResize() call */
Index: unk/src/VBox/Main/include/FramebufferImpl.h
===================================================================
--- /trunk/src/VBox/Main/include/FramebufferImpl.h	(revision 19816)
+++ 	(revision )
@@ -1,93 +1,0 @@
-/** @file
- *
- * VirtualBox COM class implementation
- */
-
-/*
- * Copyright (C) 2006-2007 Sun Microsystems, Inc.
- *
- * This file is part of VirtualBox Open Source Edition (OSE), as
- * available from http://www.virtualbox.org. This file is free software;
- * you can redistribute it and/or modify it under the terms of the GNU
- * General Public License (GPL) as published by the Free Software
- * Foundation, in version 2 as it comes in the "COPYING" file of the
- * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
- * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
- *
- * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa
- * Clara, CA 95054 USA or visit http://www.sun.com if you need
- * additional information or have any questions.
- */
-
-#ifndef ____H_FRAMEBUFFERIMPL
-#define ____H_FRAMEBUFFERIMPL
-
-#include "VirtualBoxBase.h"
-
-
-class ATL_NO_VTABLE InternalFramebuffer :
-    public VirtualBoxBase,
-    VBOX_SCRIPTABLE_IMPL(IFramebuffer)
-{
-public:
-    InternalFramebuffer();
-    virtual ~InternalFramebuffer();
-
-    DECLARE_NOT_AGGREGATABLE(InternalFramebuffer)
-
-    DECLARE_PROTECT_FINAL_CONSTRUCT()
-
-    BEGIN_COM_MAP(InternalFramebuffer)
-        COM_INTERFACE_ENTRY(IFramebuffer)
-        COM_INTERFACE_ENTRY(IDispatch)
-    END_COM_MAP()
-
-    NS_DECL_ISUPPORTS
-
-    // public methods only for internal purposes
-    HRESULT init (ULONG width, ULONG height, ULONG depth);
-
-    // IFramebuffer properties
-    STDMETHOD(COMGETTER(Address)) (BYTE **address);
-    STDMETHOD(COMGETTER(Width)) (ULONG *width);
-    STDMETHOD(COMGETTER(Height)) (ULONG *height);
-    STDMETHOD(COMGETTER(BitsPerPixel)) (ULONG *bitsPerPixel);
-    STDMETHOD(COMGETTER(BytesPerLine)) (ULONG *bytesPerLine);
-    STDMETHOD(COMGETTER(PixelFormat)) (ULONG *pixelFormat);
-    STDMETHOD(COMGETTER(UsesGuestVRAM)) (BOOL *usesGuestVRAM);
-    STDMETHOD(COMGETTER(HeightReduction)) (ULONG *heightReduction);
-    STDMETHOD(COMGETTER(Overlay)) (IFramebufferOverlay **aOverlay);
-    STDMETHOD(COMGETTER(WinId)) (ULONG64 *winId);
-
-    // IFramebuffer methods
-    STDMETHOD(Lock)();
-    STDMETHOD(Unlock)();
-    STDMETHOD(NotifyUpdate)(ULONG x, ULONG y,
-                            ULONG w, ULONG h,
-                            BOOL *finished);
-    STDMETHOD(RequestResize)(ULONG uScreenId, ULONG pixelFormat, BYTE *vram,
-                             ULONG bpp, ULONG bpl, ULONG w, ULONG h,
-                             BOOL *finished);
-    STDMETHOD(VideoModeSupported)(ULONG width, ULONG height, ULONG bpp, BOOL *supported);
-
-    STDMETHOD(GetVisibleRegion)(BYTE *aRectangles, ULONG aCount, ULONG *aCountCopied);
-    STDMETHOD(SetVisibleRegion)(BYTE *aRectangles, ULONG aCount);
-
-private:
-    // FIXME: declare these here until VBoxSupportsTranslation base
-    //        is available in this class.
-    static const char *tr (const char *a) { return a; }
-    static HRESULT setError (HRESULT rc, const char *a,
-                             const char *b, void *c) { return rc; }
-
-    int mWidth;
-    int mHeight;
-    int mBitsPerPixel;
-    int mBytesPerLine;
-    uint8_t *mData;
-    RTSEMMUTEX mMutex;
-};
-
-
-#endif // ____H_FRAMEBUFFERIMPL
-/* vi: set tabstop=4 shiftwidth=4 expandtab: */
Index: /trunk/src/VBox/Main/xpcom/module.cpp
===================================================================
--- /trunk/src/VBox/Main/xpcom/module.cpp	(revision 19816)
+++ /trunk/src/VBox/Main/xpcom/module.cpp	(revision 19817)
@@ -41,5 +41,4 @@
 #include "RemoteUSBDeviceImpl.h"
 #include "SharedFolderImpl.h"
-#include "FramebufferImpl.h"
 #include "ProgressImpl.h"
 #include "NetworkAdapterImpl.h"
@@ -63,6 +62,4 @@
 NS_DECL_CLASSINFO(MachineDebugger)
 NS_IMPL_THREADSAFE_ISUPPORTS1_CI(MachineDebugger, IMachineDebugger)
-NS_DECL_CLASSINFO(InternalFramebuffer)
-NS_IMPL_THREADSAFE_ISUPPORTS1_CI(InternalFramebuffer, IFramebuffer)
 NS_DECL_CLASSINFO(Progress)
 NS_IMPL_THREADSAFE_ISUPPORTS1_CI(Progress, IProgress)
