Index: /trunk/include/VBox/Graphics/VBoxVideoGuest.h
===================================================================
--- /trunk/include/VBox/Graphics/VBoxVideoGuest.h	(revision 71650)
+++ /trunk/include/VBox/Graphics/VBoxVideoGuest.h	(revision 71651)
@@ -85,5 +85,5 @@
                                               uint32_t cbHostArea);
 DECLHIDDEN(int)      VBoxQueryConfHGSMI(PHGSMIGUESTCOMMANDCONTEXT pCtx,
-                                    uint32_t u32Index, uint32_t *pulValue);
+                                        uint32_t u32Index, uint32_t *pulValue);
 DECLHIDDEN(int)      VBoxQueryConfHGSMIDef(PHGSMIGUESTCOMMANDCONTEXT pCtx,
                                            uint32_t u32Index, uint32_t u32DefValue, uint32_t *pulValue);
Index: /trunk/src/VBox/Additions/common/VBoxVideo/HGSMIBase.cpp
===================================================================
--- /trunk/src/VBox/Additions/common/VBoxVideo/HGSMIBase.cpp	(revision 71650)
+++ /trunk/src/VBox/Additions/common/VBoxVideo/HGSMIBase.cpp	(revision 71651)
@@ -165,6 +165,5 @@
 
     /* Allocate the IO buffer. */
-    p = (VBVACONF32 *)VBoxHGSMIBufferAlloc(pCtx, sizeof(*p), HGSMI_CH_VBVA,
-                                           VBVA_QUERY_CONF32);
+    p = (VBVACONF32 *)VBoxHGSMIBufferAlloc(pCtx, sizeof(*p), HGSMI_CH_VBVA, VBVA_QUERY_CONF32);
     if (!p)
         return VERR_NO_MEMORY;
Index: /trunk/src/VBox/Devices/Graphics/HGSMI/HGSMIHost.cpp
===================================================================
--- /trunk/src/VBox/Devices/Graphics/HGSMI/HGSMIHost.cpp	(revision 71650)
+++ /trunk/src/VBox/Devices/Graphics/HGSMI/HGSMIHost.cpp	(revision 71651)
@@ -1535,14 +1535,14 @@
 
     int rc;
-    PHGSMIINSTANCE pIns = (PHGSMIINSTANCE)RTMemAllocZ(sizeof (HGSMIINSTANCE) + cbContext);
+    PHGSMIINSTANCE pIns = (PHGSMIINSTANCE)RTMemAllocZ(sizeof(HGSMIINSTANCE) + cbContext);
     if (pIns)
     {
-        rc = HGSMIAreaInitialize (&pIns->area, pu8MemBase, cbMem, offBase);
+        rc = HGSMIAreaInitialize(&pIns->area, pu8MemBase, cbMem, offBase);
         if (RT_SUCCESS (rc))
-            rc = RTCritSectInit (&pIns->instanceCritSect);
+            rc = RTCritSectInit(&pIns->instanceCritSect);
         if (RT_SUCCESS (rc))
-            rc = RTCritSectInit (&pIns->hostHeapCritSect);
+            rc = RTCritSectInit(&pIns->hostHeapCritSect);
         if (RT_SUCCESS (rc))
-            rc = RTCritSectInit (&pIns->hostFIFOCritSect);
+            rc = RTCritSectInit(&pIns->hostFIFOCritSect);
         if (RT_SUCCESS (rc))
         {
@@ -1575,5 +1575,5 @@
 }
 
-uint32_t HGSMIReset (PHGSMIINSTANCE pIns)
+uint32_t HGSMIReset(PHGSMIINSTANCE pIns)
 {
     uint32_t flags = 0;
@@ -1592,5 +1592,5 @@
 
 #ifdef VBOX_WITH_WDDM
-    while(hgsmiProcessGuestCmdCompletion(pIns) != HGSMIOFFSET_VOID)
+    while (hgsmiProcessGuestCmdCompletion(pIns) != HGSMIOFFSET_VOID)
     {}
 #endif
Index: /trunk/src/VBox/Devices/Graphics/HGSMI/HGSMIHost.h
===================================================================
--- /trunk/src/VBox/Devices/Graphics/HGSMI/HGSMIHost.h	(revision 71650)
+++ /trunk/src/VBox/Devices/Graphics/HGSMI/HGSMIHost.h	(revision 71651)
@@ -28,5 +28,5 @@
 typedef struct HGSMIINSTANCE *PHGSMIINSTANCE;
 
-/* Callback for the guest notification about a new host buffer. */
+/** Callback for the guest notification about a new host buffer. */
 typedef DECLCALLBACK(void) FNHGSMINOTIFYGUEST(void *pvCallback);
 typedef FNHGSMINOTIFYGUEST *PFNHGSMINOTIFYGUEST;
Index: /trunk/src/VBox/Frontends/VBoxFB/Framebuffer.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VBoxFB/Framebuffer.cpp	(revision 71650)
+++ /trunk/src/VBox/Frontends/VBoxFB/Framebuffer.cpp	(revision 71651)
@@ -1,6 +1,5 @@
+/* $Id$ */
 /** @file
- *
- * VBox frontends: Framebuffer (FB, DirectFB):
- * Implementation of VBoxDirectFB class
+ * VBoxFB - implementation of VBoxDirectFB class.
  */
 
@@ -348,6 +347,7 @@
 }
 
-NS_IMETHODIMP VBoxDirectFB::ProcessVHWACommand(PRUint8 *command)
-{
+NS_IMETHODIMP VBoxDirectFB::ProcessVHWACommand(PRUint8 *command, LONG enmCmd, BOOL fGuestCmd)
+{
+    RT_NOREF(command, enmCmd, fGuestCmd);
     return NS_ERROR_NOT_IMPLEMENTED;
 }
Index: /trunk/src/VBox/Frontends/VBoxFB/Framebuffer.h
===================================================================
--- /trunk/src/VBox/Frontends/VBoxFB/Framebuffer.h	(revision 71650)
+++ /trunk/src/VBox/Frontends/VBoxFB/Framebuffer.h	(revision 71651)
@@ -1,6 +1,4 @@
 /** @file
- *
- * VBox frontends: Framebuffer (FB, DirectFB):
- * Declaration of VBoxDirectFB class
+ * VBoxFB - Declaration of VBoxDirectFB class.
  */
 
@@ -51,5 +49,5 @@
     NS_IMETHOD SetVisibleRegion(PRUint8 *aRectangles, PRUint32 aCount);
 
-    NS_IMETHOD ProcessVHWACommand(PRUint8 *pCommand);
+    NS_IMETHOD ProcessVHWACommand(PRUint8 *pCommand, LONG enmCmd, BOOL fGuestCmd);
 
     NS_IMETHOD Notify3DEvent(PRUint32 type, PRUint8 *reserved);
@@ -70,4 +68,4 @@
 
 
-#endif // __H_FRAMEBUFFER
+#endif // !__H_FRAMEBUFFER
 
Index: /trunk/src/VBox/Frontends/VBoxSDL/Framebuffer.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VBoxSDL/Framebuffer.cpp	(revision 71650)
+++ /trunk/src/VBox/Frontends/VBoxSDL/Framebuffer.cpp	(revision 71651)
@@ -621,7 +621,7 @@
 }
 
-STDMETHODIMP VBoxSDLFB::ProcessVHWACommand(BYTE *pCommand)
-{
-    RT_NOREF(pCommand);
+STDMETHODIMP VBoxSDLFB::ProcessVHWACommand(BYTE *pCommand, LONG enmCmd, BOOL fGuestCmd)
+{
+    RT_NOREF(pCommand, enmCmd, fGuestCmd);
     return E_NOTIMPL;
 }
Index: /trunk/src/VBox/Frontends/VBoxSDL/Framebuffer.h
===================================================================
--- /trunk/src/VBox/Frontends/VBoxSDL/Framebuffer.h	(revision 71650)
+++ /trunk/src/VBox/Frontends/VBoxSDL/Framebuffer.h	(revision 71651)
@@ -95,5 +95,5 @@
     STDMETHOD(SetVisibleRegion)(BYTE *aRectangles, ULONG aCount);
 
-    STDMETHOD(ProcessVHWACommand)(BYTE *pCommand);
+    STDMETHOD(ProcessVHWACommand)(BYTE *pCommand, LONG enmCmd, BOOL fGuestCmd);
 
     STDMETHOD(Notify3DEvent)(ULONG uType, ComSafeArrayIn(BYTE, aData));
Index: /trunk/src/VBox/Frontends/VirtualBox/src/VBoxFBOverlay.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/VBoxFBOverlay.cpp	(revision 71650)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/VBoxFBOverlay.cpp	(revision 71651)
@@ -15,6 +15,10 @@
  * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
  */
-#if defined(VBOX_GUI_USE_QGL)
-
+
+#if defined(VBOX_GUI_USE_QGL) /* entire file */
+
+/*********************************************************************************************************************************
+*   Header Files                                                                                                                 *
+*********************************************************************************************************************************/
 #ifdef VBOX_WITH_PRECOMPILED_HEADERS
 # include <precomp.h>
@@ -51,4 +55,5 @@
 # include <iprt/asm.h>
 # include <iprt/semaphore.h>
+# include <VBox/AssertGuest.h>
 
 # include <VBox/VBoxGL2D.h>
@@ -73,4 +78,7 @@
 
 
+/*********************************************************************************************************************************
+*   Defined Constants And Macros                                                                                                 *
+*********************************************************************************************************************************/
 #ifdef VBOXQGL_PROF_BASE
 # ifdef VBOXQGL_DBG_SURF
@@ -89,11 +97,88 @@
 #define VBOXQGL_STATE_VERSION              3
 
+//#define VBOXQGLOVERLAY_STATE_NAMEBASE "QGLOverlayVHWAData"
+//#define VBOXQGLOVERLAY_STATE_VERSION 1
+
+#ifdef DEBUG_misha
+//# define VBOXQGL_STATE_DEBUG
+#endif
+
+#ifdef VBOXQGL_STATE_DEBUG
+#define VBOXQGL_STATE_START_MAGIC        0x12345678
+#define VBOXQGL_STATE_STOP_MAGIC         0x87654321
+
+#define VBOXQGL_STATE_SURFSTART_MAGIC    0x9abcdef1
+#define VBOXQGL_STATE_SURFSTOP_MAGIC     0x1fedcba9
+
+#define VBOXQGL_STATE_OVERLAYSTART_MAGIC 0x13579bdf
+#define VBOXQGL_STATE_OVERLAYSTOP_MAGIC  0xfdb97531
+
+#define VBOXQGL_SAVE_START(_pSSM) do{ int rc = SSMR3PutU32(_pSSM, VBOXQGL_STATE_START_MAGIC); AssertRC(rc);}while(0)
+#define VBOXQGL_SAVE_STOP(_pSSM) do{ int rc = SSMR3PutU32(_pSSM, VBOXQGL_STATE_STOP_MAGIC); AssertRC(rc);}while(0)
+
+#define VBOXQGL_SAVE_SURFSTART(_pSSM) do{ int rc = SSMR3PutU32(_pSSM, VBOXQGL_STATE_SURFSTART_MAGIC); AssertRC(rc);}while(0)
+#define VBOXQGL_SAVE_SURFSTOP(_pSSM) do{ int rc = SSMR3PutU32(_pSSM, VBOXQGL_STATE_SURFSTOP_MAGIC); AssertRC(rc);}while(0)
+
+#define VBOXQGL_SAVE_OVERLAYSTART(_pSSM) do{ int rc = SSMR3PutU32(_pSSM, VBOXQGL_STATE_OVERLAYSTART_MAGIC); AssertRC(rc);}while(0)
+#define VBOXQGL_SAVE_OVERLAYSTOP(_pSSM) do{ int rc = SSMR3PutU32(_pSSM, VBOXQGL_STATE_OVERLAYSTOP_MAGIC); AssertRC(rc);}while(0)
+
+#define VBOXQGL_LOAD_CHECK(_pSSM, _v) \
+    do{ \
+        uint32_t _u32; \
+        int rcCheck = SSMR3GetU32(_pSSM, &_u32); AssertRC(rcCheck); \
+        if (_u32 != (_v)) \
+        { \
+            VBOXQGLLOG(("load error: expected magic (0x%x), but was (0x%x)\n", (_v), _u32));\
+        }\
+        Assert(_u32 == (_v)); \
+    }while(0)
+
+#define VBOXQGL_LOAD_START(_pSSM) VBOXQGL_LOAD_CHECK(_pSSM, VBOXQGL_STATE_START_MAGIC)
+#define VBOXQGL_LOAD_STOP(_pSSM) VBOXQGL_LOAD_CHECK(_pSSM, VBOXQGL_STATE_STOP_MAGIC)
+
+#define VBOXQGL_LOAD_SURFSTART(_pSSM) VBOXQGL_LOAD_CHECK(_pSSM, VBOXQGL_STATE_SURFSTART_MAGIC)
+#define VBOXQGL_LOAD_SURFSTOP(_pSSM) VBOXQGL_LOAD_CHECK(_pSSM, VBOXQGL_STATE_SURFSTOP_MAGIC)
+
+#define VBOXQGL_LOAD_OVERLAYSTART(_pSSM) VBOXQGL_LOAD_CHECK(_pSSM, VBOXQGL_STATE_OVERLAYSTART_MAGIC)
+#define VBOXQGL_LOAD_OVERLAYSTOP(_pSSM) VBOXQGL_LOAD_CHECK(_pSSM, VBOXQGL_STATE_OVERLAYSTOP_MAGIC)
+
+#else
+
+#define VBOXQGL_SAVE_START(_pSSM) do{}while(0)
+#define VBOXQGL_SAVE_STOP(_pSSM) do{}while(0)
+
+#define VBOXQGL_SAVE_SURFSTART(_pSSM) do{}while(0)
+#define VBOXQGL_SAVE_SURFSTOP(_pSSM) do{}while(0)
+
+#define VBOXQGL_SAVE_OVERLAYSTART(_pSSM) do{}while(0)
+#define VBOXQGL_SAVE_OVERLAYSTOP(_pSSM) do{}while(0)
+
+#define VBOXQGL_LOAD_START(_pSSM) do{}while(0)
+#define VBOXQGL_LOAD_STOP(_pSSM) do{}while(0)
+
+#define VBOXQGL_LOAD_SURFSTART(_pSSM) do{}while(0)
+#define VBOXQGL_LOAD_SURFSTOP(_pSSM) do{}while(0)
+
+#define VBOXQGL_LOAD_OVERLAYSTART(_pSSM) do{}while(0)
+#define VBOXQGL_LOAD_OVERLAYSTOP(_pSSM) do{}while(0)
+
+#endif
+
+/*********************************************************************************************************************************
+*   Global Variables                                                                                                             *
+*********************************************************************************************************************************/
+static VBoxVHWAInfo g_VBoxVHWASupportInfo;
+static bool g_bVBoxVHWAChecked = false;
+static bool g_bVBoxVHWASupported = false;
+
+
 #ifdef DEBUG
-VBoxVHWADbgTimer::VBoxVHWADbgTimer(uint32_t cPeriods) :
-        mPeriodSum(0LL),
-        mPrevTime(0LL),
-        mcFrames(0LL),
-        mcPeriods(cPeriods),
-        miPeriod(0)
+
+VBoxVHWADbgTimer::VBoxVHWADbgTimer(uint32_t cPeriods)
+    : mPeriodSum(0)
+    , mPrevTime(0)
+    , mcFrames(0)
+    , mcPeriods(cPeriods)
+    , miPeriod(0)
 {
     mpaPeriods = new uint64_t[cPeriods];
@@ -109,5 +194,5 @@
 {
     uint64_t cur = VBOXGETTIME();
-    if(mPrevTime)
+    if (mPrevTime)
     {
         uint64_t curPeriod = cur - mPrevTime;
@@ -120,77 +205,7 @@
     ++mcFrames;
 }
-#endif
-
-//#define VBOXQGLOVERLAY_STATE_NAMEBASE "QGLOverlayVHWAData"
-//#define VBOXQGLOVERLAY_STATE_VERSION 1
-
-#ifdef DEBUG_misha
-//# define VBOXQGL_STATE_DEBUG
-#endif
-
-#ifdef VBOXQGL_STATE_DEBUG
-#define VBOXQGL_STATE_START_MAGIC        0x12345678
-#define VBOXQGL_STATE_STOP_MAGIC         0x87654321
-
-#define VBOXQGL_STATE_SURFSTART_MAGIC    0x9abcdef1
-#define VBOXQGL_STATE_SURFSTOP_MAGIC     0x1fedcba9
-
-#define VBOXQGL_STATE_OVERLAYSTART_MAGIC 0x13579bdf
-#define VBOXQGL_STATE_OVERLAYSTOP_MAGIC  0xfdb97531
-
-#define VBOXQGL_SAVE_START(_pSSM) do{ int rc = SSMR3PutU32(_pSSM, VBOXQGL_STATE_START_MAGIC); AssertRC(rc);}while(0)
-#define VBOXQGL_SAVE_STOP(_pSSM) do{ int rc = SSMR3PutU32(_pSSM, VBOXQGL_STATE_STOP_MAGIC); AssertRC(rc);}while(0)
-
-#define VBOXQGL_SAVE_SURFSTART(_pSSM) do{ int rc = SSMR3PutU32(_pSSM, VBOXQGL_STATE_SURFSTART_MAGIC); AssertRC(rc);}while(0)
-#define VBOXQGL_SAVE_SURFSTOP(_pSSM) do{ int rc = SSMR3PutU32(_pSSM, VBOXQGL_STATE_SURFSTOP_MAGIC); AssertRC(rc);}while(0)
-
-#define VBOXQGL_SAVE_OVERLAYSTART(_pSSM) do{ int rc = SSMR3PutU32(_pSSM, VBOXQGL_STATE_OVERLAYSTART_MAGIC); AssertRC(rc);}while(0)
-#define VBOXQGL_SAVE_OVERLAYSTOP(_pSSM) do{ int rc = SSMR3PutU32(_pSSM, VBOXQGL_STATE_OVERLAYSTOP_MAGIC); AssertRC(rc);}while(0)
-
-#define VBOXQGL_LOAD_CHECK(_pSSM, _v) \
-    do{ \
-        uint32_t _u32; \
-        int rc = SSMR3GetU32(_pSSM, &_u32); AssertRC(rc); \
-        if(_u32 != (_v)) \
-        { \
-            VBOXQGLLOG(("load error: expected magic (0x%x), but was (0x%x)\n", (_v), _u32));\
-        }\
-        Assert(_u32 == (_v)); \
-    }while(0)
-
-#define VBOXQGL_LOAD_START(_pSSM) VBOXQGL_LOAD_CHECK(_pSSM, VBOXQGL_STATE_START_MAGIC)
-#define VBOXQGL_LOAD_STOP(_pSSM) VBOXQGL_LOAD_CHECK(_pSSM, VBOXQGL_STATE_STOP_MAGIC)
-
-#define VBOXQGL_LOAD_SURFSTART(_pSSM) VBOXQGL_LOAD_CHECK(_pSSM, VBOXQGL_STATE_SURFSTART_MAGIC)
-#define VBOXQGL_LOAD_SURFSTOP(_pSSM) VBOXQGL_LOAD_CHECK(_pSSM, VBOXQGL_STATE_SURFSTOP_MAGIC)
-
-#define VBOXQGL_LOAD_OVERLAYSTART(_pSSM) VBOXQGL_LOAD_CHECK(_pSSM, VBOXQGL_STATE_OVERLAYSTART_MAGIC)
-#define VBOXQGL_LOAD_OVERLAYSTOP(_pSSM) VBOXQGL_LOAD_CHECK(_pSSM, VBOXQGL_STATE_OVERLAYSTOP_MAGIC)
-
-#else
-
-#define VBOXQGL_SAVE_START(_pSSM) do{}while(0)
-#define VBOXQGL_SAVE_STOP(_pSSM) do{}while(0)
-
-#define VBOXQGL_SAVE_SURFSTART(_pSSM) do{}while(0)
-#define VBOXQGL_SAVE_SURFSTOP(_pSSM) do{}while(0)
-
-#define VBOXQGL_SAVE_OVERLAYSTART(_pSSM) do{}while(0)
-#define VBOXQGL_SAVE_OVERLAYSTOP(_pSSM) do{}while(0)
-
-#define VBOXQGL_LOAD_START(_pSSM) do{}while(0)
-#define VBOXQGL_LOAD_STOP(_pSSM) do{}while(0)
-
-#define VBOXQGL_LOAD_SURFSTART(_pSSM) do{}while(0)
-#define VBOXQGL_LOAD_SURFSTOP(_pSSM) do{}while(0)
-
-#define VBOXQGL_LOAD_OVERLAYSTART(_pSSM) do{}while(0)
-#define VBOXQGL_LOAD_OVERLAYSTOP(_pSSM) do{}while(0)
-
-#endif
-
-static VBoxVHWAInfo g_VBoxVHWASupportInfo;
-static bool g_bVBoxVHWAChecked = false;
-static bool g_bVBoxVHWASupported = false;
+
+#endif /* DEBUG */
+
 
 class VBoxVHWAEntriesCache
@@ -231,5 +246,5 @@
 static struct VBOXVHWACMD * vhwaHHCmdCreate(VBOXVHWACMD_TYPE type, size_t size)
 {
-    char *buf = (char*)malloc(VBOXVHWACMD_SIZE_FROMBODYSIZE(size));
+    char *buf = (char *)malloc(VBOXVHWACMD_SIZE_FROMBODYSIZE(size));
     memset(buf, 0, size);
     VBOXVHWACMD *pCmd = (VBOXVHWACMD *)buf;
@@ -241,7 +256,7 @@
 static const VBoxVHWAInfo & vboxVHWAGetSupportInfo(const QGLContext *pContext)
 {
-    if(!g_VBoxVHWASupportInfo.isInitialized())
-    {
-        if(pContext)
+    if (!g_VBoxVHWASupportInfo.isInitialized())
+    {
+        if (pContext)
         {
             g_VBoxVHWASupportInfo.init(pContext);
@@ -252,5 +267,5 @@
             const QGLContext *pContext = ctx.makeCurrent();
             Assert(pContext);
-            if(pContext)
+            if (pContext)
             {
                 g_VBoxVHWASupportInfo.init(pContext);
@@ -318,11 +333,11 @@
 }
 
-uint32_t VBoxVHWAHandleTable::put(void * data)
+uint32_t VBoxVHWAHandleTable::put(void *data)
 {
     Assert(data);
-    if(!data)
+    if (!data)
         return VBOXVHWA_SURFHANDLE_INVALID;
 
-    if(mcUsage == mcSize)
+    if (mcUsage == mcSize)
     {
         /** @todo resize */
@@ -331,13 +346,13 @@
 
     Assert(mcUsage < mcSize);
-    if(mcUsage >= mcSize)
+    if (mcUsage >= mcSize)
         return VBOXVHWA_SURFHANDLE_INVALID;
 
-    for(int k = 0; k < 2; ++k)
+    for (int k = 0; k < 2; ++k)
     {
         Assert(mCursor != 0);
-        for(uint32_t i = mCursor; i < mcSize; ++i)
-        {
-            if(!mTable[i])
+        for (uint32_t i = mCursor; i < mcSize; ++i)
+        {
+            if (!mTable[i])
             {
                 doPut(i, data);
@@ -355,9 +370,9 @@
 bool VBoxVHWAHandleTable::mapPut(uint32_t h, void * data)
 {
-    if(mcSize <= h)
+    if (mcSize <= h)
         return false;
-    if(h == 0)
+    if (h == 0)
         return false;
-    if(mTable[h])
+    if (mTable[h])
         return false;
 
@@ -379,5 +394,5 @@
     void* val = mTable[h];
     Assert(val);
-    if(val)
+    if (val)
     {
         doRemove(h);
@@ -398,5 +413,6 @@
 }
 
-static VBoxVHWATextureImage* vboxVHWAImageCreate(const QRect & aRect, const VBoxVHWAColorFormat & aFormat, class VBoxVHWAGlProgramMngr * pMgr, VBOXVHWAIMG_TYPE flags)
+static VBoxVHWATextureImage *vboxVHWAImageCreate(const QRect & aRect, const VBoxVHWAColorFormat & aFormat,
+                                                 class VBoxVHWAGlProgramMngr * pMgr, VBOXVHWAIMG_TYPE flags)
 {
     bool bCanLinearNonFBO = false;
@@ -408,21 +424,21 @@
 
     const VBoxVHWAInfo & info = vboxVHWAGetSupportInfo(NULL);
-    if((flags & VBOXVHWAIMG_PBO) && !info.getGlInfo().isPBOSupported())
+    if ((flags & VBOXVHWAIMG_PBO) && !info.getGlInfo().isPBOSupported())
         flags &= ~VBOXVHWAIMG_PBO;
 
-    if((flags & VBOXVHWAIMG_PBOIMG) &&
+    if ((flags & VBOXVHWAIMG_PBOIMG) &&
             (!info.getGlInfo().isPBOSupported() || !info.getGlInfo().isPBOOffsetSupported()))
         flags &= ~VBOXVHWAIMG_PBOIMG;
 
-    if((flags & VBOXVHWAIMG_FBO) && !info.getGlInfo().isFBOSupported())
+    if ((flags & VBOXVHWAIMG_FBO) && !info.getGlInfo().isFBOSupported())
         flags &= ~VBOXVHWAIMG_FBO;
 
     /* ensure we don't create a PBO-based texture in case we use a PBO-based image */
-    if(flags & VBOXVHWAIMG_PBOIMG)
+    if (flags & VBOXVHWAIMG_PBOIMG)
         flags &= ~VBOXVHWAIMG_PBO;
 
-    if(flags & VBOXVHWAIMG_FBO)
-    {
-        if(flags & VBOXVHWAIMG_PBOIMG)
+    if (flags & VBOXVHWAIMG_FBO)
+    {
+        if (flags & VBOXVHWAIMG_PBOIMG)
         {
             VBOXQGLLOG(("FBO PBO Image\n"));
@@ -439,5 +455,5 @@
     }
 
-    if(flags & VBOXVHWAIMG_PBOIMG)
+    if (flags & VBOXVHWAIMG_PBOIMG)
     {
         VBOXQGLLOG(("PBO Image\n"));
@@ -449,19 +465,20 @@
 }
 
-static VBoxVHWATexture* vboxVHWATextureCreate(const QGLContext * pContext, const QRect & aRect, const VBoxVHWAColorFormat & aFormat, uint32_t bytesPerLine, VBOXVHWAIMG_TYPE flags)
+static VBoxVHWATexture* vboxVHWATextureCreate(const QGLContext * pContext, const QRect & aRect,
+                                              const VBoxVHWAColorFormat & aFormat, uint32_t bytesPerLine, VBOXVHWAIMG_TYPE flags)
 {
     const VBoxVHWAInfo & info = vboxVHWAGetSupportInfo(pContext);
     GLint scaleFunc = (flags & VBOXVHWAIMG_LINEAR) ? GL_LINEAR : GL_NEAREST;
-    if((flags & VBOXVHWAIMG_PBO) && info.getGlInfo().isPBOSupported())
+    if ((flags & VBOXVHWAIMG_PBO) && info.getGlInfo().isPBOSupported())
     {
         VBOXQGLLOG(("VBoxVHWATextureNP2RectPBO\n"));
         return new VBoxVHWATextureNP2RectPBO(aRect, aFormat, bytesPerLine, scaleFunc);
     }
-    else if(info.getGlInfo().isTextureRectangleSupported())
+    else if (info.getGlInfo().isTextureRectangleSupported())
     {
         VBOXQGLLOG(("VBoxVHWATextureNP2Rect\n"));
         return new VBoxVHWATextureNP2Rect(aRect, aFormat, bytesPerLine, scaleFunc);
     }
-    else if(info.getGlInfo().isTextureNP2Supported())
+    else if (info.getGlInfo().isTextureNP2Supported())
     {
         VBOXQGLLOG(("VBoxVHWATextureNP2\n"));
@@ -475,8 +492,8 @@
 {
 public:
-    VBoxVHWAGlShaderComponent(const char *aRcName, GLenum aType) :
-        mRcName(aRcName),
-        mType(aType),
-        mInitialized(false)
+    VBoxVHWAGlShaderComponent(const char *aRcName, GLenum aType)
+        : mRcName(aRcName)
+        , mType(aType)
+        , mInitialized(false)
     { NOREF(mType); }
 
@@ -495,5 +512,5 @@
 int VBoxVHWAGlShaderComponent::init()
 {
-    if(isInitialized())
+    if (isInitialized())
         return VINF_ALREADY_INITIALIZED;
 
@@ -526,5 +543,5 @@
         mcComponents = other.mcComponents;
         mType = other.mType;
-        if(mcComponents)
+        if (mcComponents)
         {
             maComponents = new VBoxVHWAGlShaderComponent*[mcComponents];
@@ -538,5 +555,5 @@
         mcComponents = other.mcComponents;
         mType = other.mType;
-        if(mcComponents)
+        if (mcComponents)
         {
             maComponents = new VBoxVHWAGlShaderComponent*[mcComponents];
@@ -571,22 +588,20 @@
     length = new GLint[mcComponents];
     sources = new const char*[mcComponents];
-    for(int i = 0; i < mcComponents; i++)
+    for (int i = 0; i < mcComponents; i++)
     {
         length[i] = -1;
         rc = maComponents[i]->init();
         AssertRC(rc);
-        if(RT_FAILURE(rc))
+        if (RT_FAILURE(rc))
             break;
         sources[i] = maComponents[i]->contents();
     }
 
-    if(RT_SUCCESS(rc))
+    if (RT_SUCCESS(rc))
     {
 #ifdef DEBUG
         VBOXQGLLOG(("\ncompiling shaders:\n------------\n"));
-        for(int i = 0; i < mcComponents; i++)
-        {
+        for (int i = 0; i < mcComponents; i++)
             VBOXQGLLOG(("**********\n%s\n***********\n", sources[i]));
-        }
         VBOXQGLLOG(("------------\n"));
 #endif
@@ -614,5 +629,5 @@
 
         Assert(compiled);
-        if(compiled)
+        if (compiled)
         {
             rc = VINF_SUCCESS;
@@ -656,8 +671,8 @@
 {
     Assert(acShaders);
-    if(acShaders)
+    if (acShaders)
     {
         mShaders = new VBoxVHWAGlShader[acShaders];
-        for(int i = 0; i < acShaders; i++)
+        for (int i = 0; i < acShaders; i++)
         {
             mShaders[i] = *apShaders[i];
@@ -671,5 +686,5 @@
     uninit();
 
-    if(mShaders)
+    if (mShaders)
     {
         delete[] mShaders;
@@ -680,22 +695,22 @@
 {
     Assert(!isInitialized());
-    if(isInitialized())
+    if (isInitialized())
         return VINF_ALREADY_INITIALIZED;
 
     Assert(mcShaders);
-    if(!mcShaders)
+    if (!mcShaders)
         return VERR_GENERAL_FAILURE;
 
     int rc = VINF_SUCCESS;
-    for(int i = 0; i < mcShaders; i++)
+    for (int i = 0; i < mcShaders; i++)
     {
         int rc = mShaders[i].init();
         AssertRC(rc);
-        if(RT_FAILURE(rc))
+        if (RT_FAILURE(rc))
         {
             break;
         }
     }
-    if(RT_FAILURE(rc))
+    if (RT_FAILURE(rc))
     {
         return rc;
@@ -704,7 +719,7 @@
     mProgram = vboxglCreateProgram();
     Assert(mProgram);
-    if(mProgram)
-    {
-        for(int i = 0; i < mcShaders; i++)
+    if (mProgram)
+    {
+        for (int i = 0; i < mcShaders; i++)
         {
             VBOXQGL_CHECKERR(
@@ -729,5 +744,5 @@
 #endif
 
-        if(linked)
+        if (linked)
         {
             return VINF_SUCCESS;
@@ -744,5 +759,5 @@
 void VBoxVHWAGlProgram::uninit()
 {
-    if(!isInitialized())
+    if (!isInitialized())
         return;
 
@@ -839,24 +854,32 @@
 };
 
-VBoxVHWAGlProgramVHWA::VBoxVHWAGlProgramVHWA(uint32_t type, uint32_t fourcc, VBoxVHWAGlShader ** apShaders, int acShaders) :
-    VBoxVHWAGlProgram(apShaders, acShaders),
-    mType(type),
-    mFourcc(fourcc),
-    mDstUpperR(0.0), mDstUpperG(0.0), mDstUpperB(0.0),
-    mUniDstUpperColor(-1),
-    mDstLowerR(0.0), mDstLowerG(0.0), mDstLowerB(0.0),
-    mUniDstLowerColor(-1),
-    mSrcUpperR(0.0), mSrcUpperG(0.0), mSrcUpperB(0.0),
-    mUniSrcUpperColor(-1),
-    mSrcLowerR(0.0), mSrcLowerG(0.0), mSrcLowerB(0.0),
-    mUniSrcLowerColor(-1),
-    mDstTex(-1),
-    mUniDstTex(-1),
-    mSrcTex(-1),
-    mUniSrcTex(-1),
-    mVTex(-1),
-    mUniVTex(-1),
-    mUTex(-1),
-    mUniUTex(-1)
+VBoxVHWAGlProgramVHWA::VBoxVHWAGlProgramVHWA(uint32_t type, uint32_t fourcc, VBoxVHWAGlShader **apShaders, int acShaders)
+    : VBoxVHWAGlProgram(apShaders, acShaders)
+    , mType(type)
+    , mFourcc(fourcc)
+    , mDstUpperR(0.0)
+    , mDstUpperG(0.0)
+    , mDstUpperB(0.0)
+    , mUniDstUpperColor(-1)
+    , mDstLowerR(0.0)
+    , mDstLowerG(0.0)
+    , mDstLowerB(0.0)
+    , mUniDstLowerColor(-1)
+    , mSrcUpperR(0.0)
+    , mSrcUpperG(0.0)
+    , mSrcUpperB(0.0)
+    , mUniSrcUpperColor(-1)
+    , mSrcLowerR(0.0)
+    , mSrcLowerG(0.0)
+    , mSrcLowerB(0.0)
+    , mUniSrcLowerColor(-1)
+    , mDstTex(-1)
+    , mUniDstTex(-1)
+    , mSrcTex(-1)
+    , mUniSrcTex(-1)
+    , mVTex(-1)
+    , mUniVTex(-1)
+    , mUTex(-1)
+    , mUniUTex(-1)
 {}
 
@@ -864,7 +887,7 @@
 {
     int rc = VBoxVHWAGlProgram::init();
-    if(RT_FAILURE(rc))
+    if (RT_FAILURE(rc))
         return rc;
-    if(rc == VINF_ALREADY_INITIALIZED)
+    if (rc == VINF_ALREADY_INITIALIZED)
         return rc;
 
@@ -878,5 +901,5 @@
         mUniSrcTex = vboxglGetUniformLocation(program(), "uSrcTex");
         Assert(mUniSrcTex != -1);
-        if(mUniSrcTex == -1)
+        if (mUniSrcTex == -1)
             break;
 
@@ -887,9 +910,9 @@
         ++tex;
 
-        if(type() & VBOXVHWA_PROGRAM_SRCCOLORKEY)
+        if (type() & VBOXVHWA_PROGRAM_SRCCOLORKEY)
         {
             mUniSrcLowerColor = vboxglGetUniformLocation(program(), "uSrcClr");
             Assert(mUniSrcLowerColor != -1);
-            if(mUniSrcLowerColor == -1)
+            if (mUniSrcLowerColor == -1)
                 break;
 
@@ -901,5 +924,5 @@
         }
 
-        if(type() & VBOXVHWA_PROGRAM_COLORCONV)
+        if (type() & VBOXVHWA_PROGRAM_COLORCONV)
         {
             switch(fourcc())
@@ -909,5 +932,5 @@
                     mUniVTex = vboxglGetUniformLocation(program(), "uVTex");
                     Assert(mUniVTex != -1);
-                    if(mUniVTex == -1)
+                    if (mUniVTex == -1)
                         break;
 
@@ -920,5 +943,5 @@
                     mUniUTex = vboxglGetUniformLocation(program(), "uUTex");
                     Assert(mUniUTex != -1);
-                    if(mUniUTex == -1)
+                    if (mUniUTex == -1)
                         break;
                     VBOXQGL_CHECKERR(
@@ -940,10 +963,10 @@
         }
 
-        if(type() & VBOXVHWA_PROGRAM_DSTCOLORKEY)
+        if (type() & VBOXVHWA_PROGRAM_DSTCOLORKEY)
         {
 
             mUniDstTex = vboxglGetUniformLocation(program(), "uDstTex");
             Assert(mUniDstTex != -1);
-            if(mUniDstTex == -1)
+            if (mUniDstTex == -1)
                 break;
             VBOXQGL_CHECKERR(
@@ -955,5 +978,5 @@
             mUniDstLowerColor = vboxglGetUniformLocation(program(), "uDstClr");
             Assert(mUniDstLowerColor != -1);
-            if(mUniDstLowerColor == -1)
+            if (mUniDstLowerColor == -1)
                 break;
 
@@ -970,5 +993,5 @@
 
     stop();
-    if(rc == VINF_SUCCESS)
+    if (rc == VINF_SUCCESS)
         return VINF_SUCCESS;
 
@@ -981,7 +1004,7 @@
 {
     Assert(isInitialized());
-    if(!isInitialized())
+    if (!isInitialized())
         return VERR_GENERAL_FAILURE;
-    if(mDstUpperR == r && mDstUpperG == g && mDstUpperB == b)
+    if (mDstUpperR == r && mDstUpperG == g && mDstUpperB == b)
         return VINF_ALREADY_INITIALIZED;
     vboxglUniform4f(mUniDstUpperColor, r, g, b, 0.0);
@@ -995,7 +1018,7 @@
 {
     Assert(isInitialized());
-    if(!isInitialized())
+    if (!isInitialized())
         return VERR_GENERAL_FAILURE;
-    if(mDstLowerR == r && mDstLowerG == g && mDstLowerB == b)
+    if (mDstLowerR == r && mDstLowerG == g && mDstLowerB == b)
         return VINF_ALREADY_INITIALIZED;
 
@@ -1013,7 +1036,7 @@
 {
     Assert(isInitialized());
-    if(!isInitialized())
+    if (!isInitialized())
         return VERR_GENERAL_FAILURE;
-    if(mSrcUpperR == r && mSrcUpperG == g && mSrcUpperB == b)
+    if (mSrcUpperR == r && mSrcUpperG == g && mSrcUpperB == b)
         return VINF_ALREADY_INITIALIZED;
     vboxglUniform4f(mUniSrcUpperColor, r, g, b, 0.0);
@@ -1027,7 +1050,7 @@
 {
     Assert(isInitialized());
-    if(!isInitialized())
+    if (!isInitialized())
         return VERR_GENERAL_FAILURE;
-    if(mSrcLowerR == r && mSrcLowerG == g && mSrcLowerB == b)
+    if (mSrcLowerR == r && mSrcLowerG == g && mSrcLowerB == b)
         return VINF_ALREADY_INITIALIZED;
     VBOXQGL_CHECKERR(
@@ -1043,21 +1066,21 @@
 {
 public:
-    VBoxVHWAGlProgramMngr() :
-        mShaderCConvApplyAYUV(":/cconvApplyAYUV.c", GL_FRAGMENT_SHADER),
-        mShaderCConvAYUV(":/cconvAYUV.c", GL_FRAGMENT_SHADER),
-        mShaderCConvBGR(":/cconvBGR.c", GL_FRAGMENT_SHADER),
-        mShaderCConvUYVY(":/cconvUYVY.c", GL_FRAGMENT_SHADER),
-        mShaderCConvYUY2(":/cconvYUY2.c", GL_FRAGMENT_SHADER),
-        mShaderCConvYV12(":/cconvYV12.c", GL_FRAGMENT_SHADER),
-        mShaderSplitBGRA(":/splitBGRA.c", GL_FRAGMENT_SHADER),
-        mShaderCKeyDst(":/ckeyDst.c", GL_FRAGMENT_SHADER),
-        mShaderCKeyDst2(":/ckeyDst2.c", GL_FRAGMENT_SHADER),
-        mShaderMainOverlay(":/mainOverlay.c", GL_FRAGMENT_SHADER),
-        mShaderMainOverlayNoCKey(":/mainOverlayNoCKey.c", GL_FRAGMENT_SHADER),
-        mShaderMainOverlayNoDiscard(":/mainOverlayNoDiscard.c", GL_FRAGMENT_SHADER),
-        mShaderMainOverlayNoDiscard2(":/mainOverlayNoDiscard2.c", GL_FRAGMENT_SHADER)
+    VBoxVHWAGlProgramMngr()
+        : mShaderCConvApplyAYUV(":/cconvApplyAYUV.c", GL_FRAGMENT_SHADER)
+        , mShaderCConvAYUV(":/cconvAYUV.c", GL_FRAGMENT_SHADER)
+        , mShaderCConvBGR(":/cconvBGR.c", GL_FRAGMENT_SHADER)
+        , mShaderCConvUYVY(":/cconvUYVY.c", GL_FRAGMENT_SHADER)
+        , mShaderCConvYUY2(":/cconvYUY2.c", GL_FRAGMENT_SHADER)
+        , mShaderCConvYV12(":/cconvYV12.c", GL_FRAGMENT_SHADER)
+        , mShaderSplitBGRA(":/splitBGRA.c", GL_FRAGMENT_SHADER)
+        , mShaderCKeyDst(":/ckeyDst.c", GL_FRAGMENT_SHADER)
+        , mShaderCKeyDst2(":/ckeyDst2.c", GL_FRAGMENT_SHADER)
+        , mShaderMainOverlay(":/mainOverlay.c", GL_FRAGMENT_SHADER)
+        , mShaderMainOverlayNoCKey(":/mainOverlayNoCKey.c", GL_FRAGMENT_SHADER)
+        , mShaderMainOverlayNoDiscard(":/mainOverlayNoDiscard.c", GL_FRAGMENT_SHADER)
+        , mShaderMainOverlayNoDiscard2(":/mainOverlayNoDiscard2.c", GL_FRAGMENT_SHADER)
     {}
 
-    VBoxVHWAGlProgramVHWA * getProgram(uint32_t type, const VBoxVHWAColorFormat * pFrom, const VBoxVHWAColorFormat * pTo);
+    VBoxVHWAGlProgramVHWA *getProgram(uint32_t type, const VBoxVHWAColorFormat * pFrom, const VBoxVHWAColorFormat * pTo);
 
     void stopCurrentProgram()
@@ -1068,7 +1091,6 @@
     }
 private:
-    VBoxVHWAGlProgramVHWA * searchProgram(uint32_t type, uint32_t fourcc, bool bCreate);
-
-    VBoxVHWAGlProgramVHWA * createProgram(uint32_t type, uint32_t fourcc);
+    VBoxVHWAGlProgramVHWA *searchProgram(uint32_t type, uint32_t fourcc, bool bCreate);
+    VBoxVHWAGlProgramVHWA *createProgram(uint32_t type, uint32_t fourcc);
 
     typedef std::list <VBoxVHWAGlProgramVHWA*> ProgramList;
@@ -1097,7 +1119,7 @@
 };
 
-VBoxVHWAGlProgramVHWA * VBoxVHWAGlProgramMngr::createProgram(uint32_t type, uint32_t fourcc)
-{
-    VBoxVHWAGlShaderComponent * apShaders[16];
+VBoxVHWAGlProgramVHWA *VBoxVHWAGlProgramMngr::createProgram(uint32_t type, uint32_t fourcc)
+{
+    VBoxVHWAGlShaderComponent *apShaders[16];
     uint32_t cShaders = 0;
 
@@ -1107,8 +1129,8 @@
     cShaders++;
 
-    if(!!(type & VBOXVHWA_PROGRAM_DSTCOLORKEY)
+    if (!!(type & VBOXVHWA_PROGRAM_DSTCOLORKEY)
             && !(type & VBOXVHWA_PROGRAM_COLORKEYNODISCARD))
     {
-        if(fourcc == FOURCC_YV12)
+        if (fourcc == FOURCC_YV12)
         {
             apShaders[cShaders++] = &mShaderCKeyDst2;
@@ -1120,5 +1142,5 @@
     }
 
-    if(type & VBOXVHWA_PROGRAM_SRCCOLORKEY)
+    if (type & VBOXVHWA_PROGRAM_SRCCOLORKEY)
     {
         AssertFailed();
@@ -1128,22 +1150,22 @@
     bool bFound = false;
 
-//    if(type & VBOXVHWA_PROGRAM_COLORCONV)
-    {
-        if(fourcc == FOURCC_UYVY)
+//    if (type & VBOXVHWA_PROGRAM_COLORCONV)
+    {
+        if (fourcc == FOURCC_UYVY)
         {
             apShaders[cShaders++] = &mShaderCConvUYVY;
             bFound = true;
         }
-        else if(fourcc == FOURCC_YUY2)
+        else if (fourcc == FOURCC_YUY2)
         {
             apShaders[cShaders++] = &mShaderCConvYUY2;
             bFound = true;
         }
-        else if(fourcc == FOURCC_YV12)
+        else if (fourcc == FOURCC_YV12)
         {
             apShaders[cShaders++] = &mShaderCConvYV12;
             bFound = true;
         }
-        else if(fourcc == FOURCC_AYUV)
+        else if (fourcc == FOURCC_AYUV)
         {
             apShaders[cShaders++] = &mShaderCConvAYUV;
@@ -1152,5 +1174,5 @@
     }
 
-    if(bFound)
+    if (bFound)
     {
         type |= VBOXVHWA_PROGRAM_COLORCONV;
@@ -1163,21 +1185,15 @@
     }
 
-    if(type & VBOXVHWA_PROGRAM_DSTCOLORKEY)
-    {
-        if(type & VBOXVHWA_PROGRAM_COLORKEYNODISCARD)
-        {
-            if(fourcc == FOURCC_YV12)
-            {
+    if (type & VBOXVHWA_PROGRAM_DSTCOLORKEY)
+    {
+        if (type & VBOXVHWA_PROGRAM_COLORKEYNODISCARD)
+        {
+            if (fourcc == FOURCC_YV12)
                 apShaders[cShaders++] = &mShaderMainOverlayNoDiscard2;
-            }
             else
-            {
                 apShaders[cShaders++] = &mShaderMainOverlayNoDiscard;
-            }
         }
         else
-        {
             apShaders[cShaders++] = &mShaderMainOverlay;
-        }
     }
     else
@@ -1204,5 +1220,5 @@
     type &= VBOXVHWA_SUPPORTED_PROGRAM;
 
-    if(pFrom && pFrom->fourcc())
+    if (pFrom && pFrom->fourcc())
     {
         fourcc = pFrom->fourcc();
@@ -1210,15 +1226,11 @@
     }
     else
-    {
-        type &= (~VBOXVHWA_PROGRAM_COLORCONV);
-    }
-
-    if(!(type & VBOXVHWA_PROGRAM_DSTCOLORKEY)
-            && !(type & VBOXVHWA_PROGRAM_SRCCOLORKEY))
-    {
-        type &= (~VBOXVHWA_PROGRAM_COLORKEYNODISCARD);
-    }
-
-    if(type)
+        type &= ~VBOXVHWA_PROGRAM_COLORCONV;
+
+    if (   !(type & VBOXVHWA_PROGRAM_DSTCOLORKEY)
+        && !(type & VBOXVHWA_PROGRAM_SRCCOLORKEY))
+        type &= ~VBOXVHWA_PROGRAM_COLORKEYNODISCARD;
+
+    if (type)
         return searchProgram(type, fourcc, true);
     return NULL;
@@ -1227,17 +1239,14 @@
 VBoxVHWAGlProgramVHWA * VBoxVHWAGlProgramMngr::searchProgram(uint32_t type, uint32_t fourcc, bool bCreate)
 {
-    for (ProgramList::const_iterator it = mPrograms.begin();
-         it != mPrograms.end(); ++ it)
+    for (ProgramList::const_iterator it = mPrograms.begin(); it != mPrograms.end(); ++ it)
     {
         if (!(*it)->matches(type, fourcc))
-        {
             continue;
-        }
         return *it;
     }
-    if(bCreate)
+    if (bCreate)
     {
         VBoxVHWAGlProgramVHWA *pProgram = createProgram(type, fourcc);
-        if(pProgram)
+        if (pProgram)
         {
             mPrograms.push_back(pProgram);
@@ -1251,11 +1260,11 @@
 {
     Assert(addr);
-    if(!addr) return;
-    if(addr == mAddress) return;
-
-    if(mFreeAddress)
-    {
+    if (!addr)
+        return;
+    if (addr == mAddress)
+        return;
+
+    if (mFreeAddress)
         free(mAddress);
-    }
 
     mAddress = addr;
@@ -1285,31 +1294,32 @@
 
 VBoxVHWASurfaceBase::VBoxVHWASurfaceBase(class VBoxVHWAImage *pImage,
-        const QSize & aSize,
-        const QRect & aTargRect,
-        const QRect & aSrcRect,
-        const QRect & aVisTargRect,
-        VBoxVHWAColorFormat & aColorFormat,
-        VBoxVHWAColorKey * pSrcBltCKey, VBoxVHWAColorKey * pDstBltCKey,
-                    VBoxVHWAColorKey * pSrcOverlayCKey, VBoxVHWAColorKey * pDstOverlayCKey,
-                    VBOXVHWAIMG_TYPE aImgFlags) :
-                mRect(0,0,aSize.width(),aSize.height()),
-                mAddress(NULL),
-                mpSrcBltCKey(NULL),
-                mpDstBltCKey(NULL),
-                mpSrcOverlayCKey(NULL),
-                mpDstOverlayCKey(NULL),
-                mpDefaultDstOverlayCKey(NULL),
-                mpDefaultSrcOverlayCKey(NULL),
-                mLockCount(0),
-                mFreeAddress(false),
-                mbNotIntersected(false),
-                mComplexList(NULL),
-                mpPrimary(NULL),
-                mHGHandle(VBOXVHWA_SURFHANDLE_INVALID),
-                mpImage(pImage)
+                                         const QSize &aSize,
+                                         const QRect &aTargRect,
+                                         const QRect &aSrcRect,
+                                         const QRect &aVisTargRect,
+                                         VBoxVHWAColorFormat &aColorFormat,
+                                         VBoxVHWAColorKey *pSrcBltCKey,
+                                         VBoxVHWAColorKey *pDstBltCKey,
+                                         VBoxVHWAColorKey *pSrcOverlayCKey,
+                                         VBoxVHWAColorKey *pDstOverlayCKey,
+                                         VBOXVHWAIMG_TYPE aImgFlags)
+    : mRect(0,0,aSize.width(),aSize.height())
+    , mAddress(NULL)
+    , mpSrcBltCKey(NULL)
+    , mpDstBltCKey(NULL)
+    , mpSrcOverlayCKey(NULL)
+    , mpDstOverlayCKey(NULL)
+    , mpDefaultDstOverlayCKey(NULL)
+    , mpDefaultSrcOverlayCKey(NULL)
+    , mLockCount(0)
+    , mFreeAddress(false)
+    , mbNotIntersected(false)
+    , mComplexList(NULL)
+    , mpPrimary(NULL)
+    , mHGHandle(VBOXVHWA_SURFHANDLE_INVALID)
+    , mpImage(pImage)
 #ifdef DEBUG
-                ,
-                cFlipsCurr(0),
-                cFlipsTarg(0)
+    , cFlipsCurr(0)
+    , cFlipsTarg(0)
 #endif
 {
@@ -1337,8 +1347,8 @@
 {
     int last = ASMBitLastSetS32(val);
-    if(last>1)
+    if (last>1)
     {
         last--;
-        if((1 << last) != val)
+        if ((1 << last) != val)
         {
             Assert((1 << last) < val);
@@ -1355,26 +1365,26 @@
     switch(format)
     {
-    case GL_COLOR_INDEX:
-    case GL_RED:
-    case GL_GREEN:
-    case GL_BLUE:
-    case GL_ALPHA:
-    case GL_LUMINANCE:
-        numComponents = 1;
-        break;
-    case GL_RGB:
-    case GL_BGR_EXT:
-        numComponents = 3;
-        break;
-    case GL_RGBA:
-    case GL_BGRA_EXT:
-        numComponents = 4;
-        break;
-    case GL_LUMINANCE_ALPHA:
-        numComponents = 2;
-        break;
-    default:
-        AssertFailed();
-        break;
+        case GL_COLOR_INDEX:
+        case GL_RED:
+        case GL_GREEN:
+        case GL_BLUE:
+        case GL_ALPHA:
+        case GL_LUMINANCE:
+            numComponents = 1;
+            break;
+        case GL_RGB:
+        case GL_BGR_EXT:
+            numComponents = 3;
+            break;
+        case GL_RGBA:
+        case GL_BGRA_EXT:
+            numComponents = 4;
+            break;
+        case GL_LUMINANCE_ALPHA:
+            numComponents = 2;
+            break;
+        default:
+            AssertFailed();
+            break;
     }
 
@@ -1382,21 +1392,21 @@
     switch(type)
     {
-    case GL_UNSIGNED_BYTE:
-    case GL_BYTE:
-        componentSize = 1;
-        break;
-    //case GL_BITMAP:
-    case  GL_UNSIGNED_SHORT:
-    case GL_SHORT:
-        componentSize = 2;
-        break;
-    case GL_UNSIGNED_INT:
-    case GL_INT:
-    case GL_FLOAT:
-        componentSize = 4;
-        break;
-    default:
-        AssertFailed();
-        break;
+        case GL_UNSIGNED_BYTE:
+        case GL_BYTE:
+            componentSize = 1;
+            break;
+        //case GL_BITMAP:
+        case  GL_UNSIGNED_SHORT:
+        case GL_SHORT:
+            componentSize = 2;
+            break;
+        case GL_UNSIGNED_INT:
+        case GL_INT:
+        case GL_FLOAT:
+            componentSize = 4;
+            break;
+        default:
+            AssertFailed();
+            break;
     }
     return numComponents * componentSize;
@@ -1407,5 +1417,5 @@
     delete mImage;
 
-    if(mAddress && mFreeAddress)
+    if (mAddress && mFreeAddress)
     {
         free(mAddress);
@@ -1421,5 +1431,5 @@
 void VBoxVHWASurfaceBase::init(VBoxVHWASurfaceBase * pPrimary, uchar *pvMem)
 {
-    if(pPrimary)
+    if (pPrimary)
     {
         VBOXQGL_CHECKERR(
@@ -1432,12 +1442,10 @@
 #ifdef DEBUG_misha
     int tex0Size = mImage->component(0)->memSize();
-    if(pPrimary)
+    if (pPrimary)
     {
         memset(address, 0xff, tex0Size);
         Assert(size >= tex0Size);
-        if(size > tex0Size)
-        {
+        if (size > tex0Size)
             memset(address + tex0Size, 0x0, size - tex0Size);
-        }
     }
     else
@@ -1445,8 +1453,6 @@
         memset(address, 0x0f, tex0Size);
         Assert(size >= tex0Size);
-        if(size > tex0Size)
-        {
+        if (size > tex0Size)
             memset(address + tex0Size, 0x3f, size - tex0Size);
-        }
     }
 #else
@@ -1457,5 +1463,5 @@
     mpPrimary = pPrimary;
 
-    if(pvMem)
+    if (pvMem)
     {
         mAddress = pvMem;
@@ -1478,5 +1484,5 @@
     Assert(mRect.contains(mUpdateMem2TexRect.rect()));
 
-    if(pPrimary)
+    if (pPrimary)
     {
         VBOXQGLLOG(("restoring to tex 0"));
@@ -1488,15 +1494,11 @@
 }
 
-void VBoxVHWATexture::doUpdate(uchar * pAddress, const QRect * pRect)
+void VBoxVHWATexture::doUpdate(uchar *pAddress, const QRect *pRect)
 {
     GLenum tt = texTarget();
-    if(pRect)
-    {
+    if (pRect)
         Assert(mRect.contains(*pRect));
-    }
     else
-    {
         pRect = &mRect;
-    }
 
     Assert(glIsTexture(mTexture));
@@ -1510,5 +1512,5 @@
     int height = pRect->height()/mColorFormat.heightCompression();
 
-    uchar * address = pAddress + pointOffsetTex(x, y);
+    uchar *address = pAddress + pointOffsetTex(x, y);
 
     VBOXQGL_CHECKERR(
@@ -1532,35 +1534,36 @@
 void VBoxVHWATexture::texCoord(int x, int y)
 {
-    glTexCoord2f(((float)x)/mTexRect.width()/mColorFormat.widthCompression(), ((float)y)/mTexRect.height()/mColorFormat.heightCompression());
+    glTexCoord2f(((float)x)/mTexRect.width()/mColorFormat.widthCompression(),
+                 ((float)y)/mTexRect.height()/mColorFormat.heightCompression());
 }
 
 void VBoxVHWATexture::multiTexCoord(GLenum texUnit, int x, int y)
 {
-    vboxglMultiTexCoord2f(texUnit, ((float)x)/mTexRect.width()/mColorFormat.widthCompression(), ((float)y)/mTexRect.height()/mColorFormat.heightCompression());
+    vboxglMultiTexCoord2f(texUnit, ((float)x)/mTexRect.width()/mColorFormat.widthCompression(),
+                          ((float)y)/mTexRect.height()/mColorFormat.heightCompression());
 }
 
 void VBoxVHWATexture::uninit()
 {
-    if(mTexture)
-    {
+    if (mTexture)
         glDeleteTextures(1,&mTexture);
-    }
-}
-
-VBoxVHWATexture::VBoxVHWATexture(const QRect & aRect, const VBoxVHWAColorFormat &aFormat, uint32_t bytesPerLine, GLint scaleFuncttion) :
-            mAddress(NULL),
-            mTexture(0),
-            mBytesPerPixel(0),
-            mBytesPerPixelTex(0),
-            mBytesPerLine(0),
-            mScaleFuncttion(scaleFuncttion)
-{
-    mColorFormat = aFormat;
-    mRect = aRect;
-    mBytesPerPixel = mColorFormat.bitsPerPixel()/8;
-    mBytesPerPixelTex = mColorFormat.bitsPerPixelTex()/8;
-    mBytesPerLine = bytesPerLine ? bytesPerLine : mBytesPerPixel * mRect.width();
-    GLsizei wdt = VBoxVHWASurfaceBase::makePowerOf2(mRect.width()/mColorFormat.widthCompression());
-    GLsizei hgt = VBoxVHWASurfaceBase::makePowerOf2(mRect.height()/mColorFormat.heightCompression());
+}
+
+VBoxVHWATexture::VBoxVHWATexture(const QRect & aRect, const VBoxVHWAColorFormat &aFormat,
+                                 uint32_t bytesPerLine, GLint scaleFuncttion)
+    : mAddress(NULL)
+    , mTexture(0)
+    , mBytesPerPixel(0)
+    , mBytesPerPixelTex(0)
+    , mBytesPerLine(0)
+    , mScaleFuncttion(scaleFuncttion)
+{
+    mColorFormat      = aFormat;
+    mRect             = aRect;
+    mBytesPerPixel    = mColorFormat.bitsPerPixel() / 8;
+    mBytesPerPixelTex = mColorFormat.bitsPerPixelTex() / 8;
+    mBytesPerLine     = bytesPerLine ? bytesPerLine : mBytesPerPixel * mRect.width();
+    GLsizei wdt       = VBoxVHWASurfaceBase::makePowerOf2(mRect.width() / mColorFormat.widthCompression());
+    GLsizei hgt       = VBoxVHWASurfaceBase::makePowerOf2(mRect.height() / mColorFormat.heightCompression());
     mTexRect = QRect(0,0,wdt,hgt);
 }
@@ -1663,17 +1666,18 @@
 }
 
-GLenum VBoxVHWATextureNP2Rect::texTarget() {return GL_TEXTURE_RECTANGLE; }
+GLenum VBoxVHWATextureNP2Rect::texTarget()
+{
+    return GL_TEXTURE_RECTANGLE;
+}
 
 bool VBoxVHWASurfaceBase::synchTexMem(const QRect * pRect)
 {
-    if(pRect)
-    {
+    if (pRect)
         Assert(mRect.contains(*pRect));
-    }
-
-    if(mUpdateMem2TexRect.isClear())
+
+    if (mUpdateMem2TexRect.isClear())
         return false;
 
-    if(pRect && !mUpdateMem2TexRect.rect().intersects(*pRect))
+    if (pRect && !mUpdateMem2TexRect.rect().intersects(*pRect))
         return false;
 
@@ -1698,5 +1702,5 @@
 }
 
-void VBoxVHWATextureNP2RectPBO::doUpdate(uchar * pAddress, const QRect * pRect)
+void VBoxVHWATextureNP2RectPBO::doUpdate(uchar *pAddress, const QRect *pRect)
 {
     Q_UNUSED(pAddress);
@@ -1711,5 +1715,5 @@
             );
     Assert(buf);
-    if(buf)
+    if (buf)
     {
         memcpy(buf, mAddress, memSize());
@@ -1757,5 +1761,5 @@
     GLvoid *buf = vboxglMapBuffer(GL_PIXEL_UNPACK_BUFFER, GL_WRITE_ONLY);
     Assert(buf);
-    if(buf)
+    if (buf)
     {
         memcpy(buf, mAddress, memSize());
@@ -1771,5 +1775,5 @@
 {
     Assert(!mpMappedAllignedBuffer);
-    if(!mpMappedAllignedBuffer)
+    if (!mpMappedAllignedBuffer)
     {
         VBOXQGL_CHECKERR(
@@ -1798,5 +1802,5 @@
 {
     Assert(mpMappedAllignedBuffer);
-    if(mpMappedAllignedBuffer)
+    if (mpMappedAllignedBuffer)
     {
         VBOXQGL_CHECKERR(
@@ -1834,5 +1838,5 @@
 }
 
-void VBoxVHWATextureNP2RectPBOMapped::doUpdate(uchar * pAddress, const QRect * pRect)
+void VBoxVHWATextureNP2RectPBOMapped::doUpdate(uchar *pAddress, const QRect *pRect)
 {
     Q_UNUSED(pAddress);
@@ -1843,5 +1847,5 @@
     );
 
-    if(mpMappedAllignedBuffer)
+    if (mpMappedAllignedBuffer)
     {
         bool unmapped;
@@ -1862,17 +1866,15 @@
 }
 
-int VBoxVHWASurfaceBase::lock(const QRect * pRect, uint32_t flags)
+int VBoxVHWASurfaceBase::lock(const QRect *pRect, uint32_t flags)
 {
     Q_UNUSED(flags);
 
-    if(pRect)
-    {
+    if (pRect)
         Assert(mRect.contains(*pRect));
-    }
 
     Assert(mLockCount >= 0);
-    if(pRect && pRect->isEmpty())
+    if (pRect && pRect->isEmpty())
         return VERR_GENERAL_FAILURE;
-    if(mLockCount < 0)
+    if (mLockCount < 0)
         return VERR_GENERAL_FAILURE;
 
@@ -1895,5 +1897,5 @@
 }
 
-void VBoxVHWASurfaceBase::setRectValues (const QRect & aTargRect, const QRect & aSrcRect)
+void VBoxVHWASurfaceBase::setRectValues (const QRect &aTargRect, const QRect &aSrcRect)
 {
     mTargRect = aTargRect;
@@ -1901,11 +1903,9 @@
 }
 
-void VBoxVHWASurfaceBase::setVisibleRectValues (const QRect & aVisTargRect)
+void VBoxVHWASurfaceBase::setVisibleRectValues (const QRect &aVisTargRect)
 {
     mVisibleTargRect = aVisTargRect.intersected(mTargRect);
-    if(mVisibleTargRect.isEmpty() || mTargRect.isEmpty())
-    {
+    if (mVisibleTargRect.isEmpty() || mTargRect.isEmpty())
         mVisibleSrcRect.setSize(QSize(0, 0));
-    }
     else
     {
@@ -1939,8 +1939,6 @@
 void VBoxVHWASurfaceBase::setRects(const QRect & aTargRect, const QRect & aSrcRect)
 {
-    if(mTargRect != aTargRect || mSrcRect != aSrcRect)
-    {
+    if (mTargRect != aTargRect || mSrcRect != aSrcRect)
         setRectValues(aTargRect, aSrcRect);
-    }
 }
 
@@ -1952,10 +1950,9 @@
 }
 
-void VBoxVHWASurfaceBase::updateVisibility (VBoxVHWASurfaceBase *pPrimary, const QRect & aVisibleTargRect, bool bNotIntersected, bool bForce)
-{
-    if(bForce || aVisibleTargRect.intersected(mTargRect) != mVisibleTargRect)
-    {
+void VBoxVHWASurfaceBase::updateVisibility(VBoxVHWASurfaceBase *pPrimary, const QRect & aVisibleTargRect,
+                                           bool bNotIntersected, bool bForce)
+{
+    if (bForce || aVisibleTargRect.intersected(mTargRect) != mVisibleTargRect)
         setVisibleRectValues(aVisibleTargRect);
-    }
 
     mpPrimary = pPrimary;
@@ -1967,5 +1964,5 @@
 void VBoxVHWASurfaceBase::initDisplay()
 {
-    if(mVisibleTargRect.isEmpty() || mVisibleSrcRect.isEmpty())
+    if (mVisibleTargRect.isEmpty() || mVisibleSrcRect.isEmpty())
     {
         Assert(mVisibleTargRect.isEmpty() && mVisibleSrcRect.isEmpty());
@@ -1974,5 +1971,6 @@
     }
 
-    int rc = mImage->initDisplay(mpPrimary ? mpPrimary->mImage : NULL, &mVisibleTargRect, &mVisibleSrcRect, getActiveDstOverlayCKey(mpPrimary), getActiveSrcOverlayCKey(), mbNotIntersected);
+    int rc = mImage->initDisplay(mpPrimary ? mpPrimary->mImage : NULL, &mVisibleTargRect, &mVisibleSrcRect,
+                                 getActiveDstOverlayCKey(mpPrimary), getActiveSrcOverlayCKey(), mbNotIntersected);
     AssertRC(rc);
 }
@@ -1980,8 +1978,6 @@
 void VBoxVHWASurfaceBase::updatedMem(const QRect *rec)
 {
-    if(rec)
-    {
+    if (rec)
         Assert(mRect.contains(*rec));
-    }
     mUpdateMem2TexRect.add(*rec);
 }
@@ -1991,5 +1987,5 @@
     Assert(mImage->displayInitialized());
 
-    if(mVisibleTargRect.isEmpty())
+    if (mVisibleTargRect.isEmpty())
     {
         /* nothing to display, i.e. the surface is not visible,
@@ -1998,18 +1994,13 @@
         return false;
     }
-    else
-    {
-        Assert(!mVisibleSrcRect.isEmpty());
-    }
+    Assert(!mVisibleSrcRect.isEmpty());
 
     bForce |= synchTexMem(&mVisibleSrcRect);
 
     const VBoxVHWAColorKey * pDstCKey = getActiveDstOverlayCKey(pPrimary);
-    if(pPrimary && pDstCKey)
-    {
+    if (pPrimary && pDstCKey)
         bForce |= pPrimary->synchTexMem(&mVisibleTargRect);
-    }
-
-    if(!bForce)
+
+    if (!bForce)
         return false;
 
@@ -2028,7 +2019,7 @@
 {
 public:
-    VBoxGLContext (const QGLFormat & format ) :
-        QGLContext(format),
-        mAllowDoneCurrent(true)
+    VBoxGLContext (const QGLFormat & format )
+        : QGLContext(format)
+        , mAllowDoneCurrent(true)
     {
     }
@@ -2036,5 +2027,5 @@
     void doneCurrent()
     {
-        if(!mAllowDoneCurrent)
+        if (!mAllowDoneCurrent)
             return;
         QGLContext::doneCurrent();
@@ -2048,12 +2039,10 @@
 
 
-VBoxGLWgt::VBoxGLWgt(VBoxVHWAImage * pImage,
-            QWidget* parent, const QGLWidget* shareWidget)
-
-        : QGLWidget(new VBoxGLContext(shareWidget->format()), parent, shareWidget),
-          mpImage(pImage)
+VBoxGLWgt::VBoxGLWgt(VBoxVHWAImage *pImage, QWidget *parent, const QGLWidget *shareWidget)
+    : QGLWidget(new VBoxGLContext(shareWidget->format()), parent, shareWidget)
+    , mpImage(pImage)
 {
     /* work-around to disable done current needed to old ATI drivers on Linux */
-    VBoxGLContext *pc = (VBoxGLContext*)context();
+    VBoxGLContext *pc = (VBoxGLContext *)context();
     pc->allowDoneCurrent (false);
     Assert(isSharing());
@@ -2062,14 +2051,13 @@
 
 VBoxVHWAImage::VBoxVHWAImage ()
-    : mSurfHandleTable(128), /* 128 should be enough */
-    mRepaintNeeded(false),
-//    mbVGASurfCreated(false),
-    mConstructingList(NULL),
-    mcRemaining2Contruct(0),
-    mSettings(NULL)
+    : mSurfHandleTable(128) /* 128 should be enough */
+    , mRepaintNeeded(false)
+//  ,  mbVGASurfCreated(false)
+    , mConstructingList(NULL)
+    , mcRemaining2Contruct(0)
+    , mSettings(NULL)
 #ifdef VBOXVHWA_PROFILE_FPS
-    ,
-    mFPSCounter(64),
-    mbNewFrame(false)
+    , mFPSCounter(64)
+    , mbNewFrame(false)
 #endif
 {
@@ -2085,5 +2073,5 @@
 }
 
-const QGLFormat & VBoxVHWAImage::vboxGLFormat()
+const QGLFormat &VBoxVHWAImage::vboxGLFormat()
 {
     static QGLFormat vboxFormat = QGLFormat();
@@ -2109,13 +2097,13 @@
 
 #ifdef VBOXVHWA_OLD_COORD
-void VBoxVHWAImage::doSetupMatrix(const QSize & aSize, bool bInverted)
+void VBoxVHWAImage::doSetupMatrix(const QSize &aSize, bool bInverted)
 {
     VBOXQGL_CHECKERR(
             glLoadIdentity();
             );
-    if(bInverted)
+    if (bInverted)
     {
         VBOXQGL_CHECKERR(
-                glScalef(1.0f/aSize.width(), 1.0f/aSize.height(), 1.0f);
+                glScalef(1.0f / aSize.width(), 1.0f / aSize.height(), 1.0f);
                 );
     }
@@ -2127,5 +2115,5 @@
                 );
         VBOXQGL_CHECKERR(
-                glScalef(1.0f/aSize.width(), 1.0f/aSize.height(), 1.0f);
+                glScalef(1.0f / aSize.width(), 1.0f / aSize.height(), 1.0f);
                 );
         VBOXQGL_CHECKERR(
@@ -2149,5 +2137,5 @@
     glLoadIdentity();
 
-    if(bInverted)
+    if (bInverted)
         glOrtho(0., (GLdouble)display.width(), (GLdouble)display.height(), 0., -1., 1.);
     else
@@ -2158,13 +2146,12 @@
 }
 
-int VBoxVHWAImage::reset(VHWACommandList * pCmdList)
-{
-    VBOXVHWACMD * pCmd;
+int VBoxVHWAImage::reset(VHWACommandList *pCmdList)
+{
+    VBOXVHWACMD *pCmd;
     const OverlayList & overlays = mDisplay.overlays();
-    for (OverlayList::const_iterator oIt = overlays.begin();
-            oIt != overlays.end(); ++ oIt)
+    for (OverlayList::const_iterator oIt = overlays.begin(); oIt != overlays.end(); ++ oIt)
     {
         VBoxVHWASurfList * pSurfList = *oIt;
-        if(pSurfList->current())
+        if (pSurfList->current())
         {
             /* 1. hide overlay */
@@ -2179,7 +2166,5 @@
         /* 2. destroy overlay */
         const SurfList & surfaces = pSurfList->surfaces();
-
-        for (SurfList::const_iterator sIt = surfaces.begin();
-                sIt != surfaces.end(); ++ sIt)
+        for (SurfList::const_iterator sIt = surfaces.begin(); sIt != surfaces.end(); ++ sIt)
         {
             VBoxVHWASurfaceBase *pCurSurf = (*sIt);
@@ -2194,9 +2179,8 @@
     /* 3. destroy primaries */
     const SurfList & surfaces = mDisplay.primaries().surfaces();
-    for (SurfList::const_iterator sIt = surfaces.begin();
-            sIt != surfaces.end(); ++ sIt)
+    for (SurfList::const_iterator sIt = surfaces.begin(); sIt != surfaces.end(); ++ sIt)
     {
         VBoxVHWASurfaceBase *pCurSurf = (*sIt);
-        if(pCurSurf->handle() != VBOXVHWA_SURFHANDLE_INVALID)
+        if (pCurSurf->handle() != VBOXVHWA_SURFHANDLE_INVALID)
         {
             pCmd = vhwaHHCmdCreate(VBOXVHWACMD_TYPE_SURF_DESTROY, sizeof(VBOXVHWACMD_SURF_DESTROY));
@@ -2218,5 +2202,5 @@
     const VBoxVHWAInfo & info = vboxVHWAGetSupportInfo(NULL);
 
-    if(!(pCmd->SurfInfo.flags & VBOXVHWA_SD_CAPS))
+    if (!(pCmd->SurfInfo.flags & VBOXVHWA_SD_CAPS))
     {
         AssertFailed();
@@ -2225,5 +2209,5 @@
     }
 #ifdef VBOXVHWA_ALLOW_PRIMARY_AND_OVERLAY_ONLY
-    if(pCmd->SurfInfo.surfCaps & VBOXVHWA_SCAPS_OFFSCREENPLAIN)
+    if (pCmd->SurfInfo.surfCaps & VBOXVHWA_SCAPS_OFFSCREENPLAIN)
     {
 #ifdef DEBUGVHWASTRICT
@@ -2235,7 +2219,7 @@
 #endif
 
-    if(pCmd->SurfInfo.surfCaps & VBOXVHWA_SCAPS_PRIMARYSURFACE)
-    {
-        if(pCmd->SurfInfo.surfCaps & VBOXVHWA_SCAPS_COMPLEX)
+    if (pCmd->SurfInfo.surfCaps & VBOXVHWA_SCAPS_PRIMARYSURFACE)
+    {
+        if (pCmd->SurfInfo.surfCaps & VBOXVHWA_SCAPS_COMPLEX)
         {
 #ifdef DEBUG_misha
@@ -2310,13 +2294,13 @@
 }
 
-int VBoxVHWAImage::vhwaSurfaceCreate (struct VBOXVHWACMD_SURF_CREATE RT_UNTRUSTED_VOLATILE_GUEST *pCmd)
+int VBoxVHWAImage::vhwaSurfaceCreate(struct VBOXVHWACMD_SURF_CREATE RT_UNTRUSTED_VOLATILE_GUEST *pCmd)
 {
     VBOXQGLLOG_ENTER (("\n"));
 
     uint32_t handle = VBOXVHWA_SURFHANDLE_INVALID;
-    if(pCmd->SurfInfo.hSurf != VBOXVHWA_SURFHANDLE_INVALID)
+    if (pCmd->SurfInfo.hSurf != VBOXVHWA_SURFHANDLE_INVALID)
     {
         handle = pCmd->SurfInfo.hSurf;
-        if(mSurfHandleTable.get(handle))
+        if (mSurfHandleTable.get(handle))
         {
             AssertFailed();
@@ -2338,20 +2322,20 @@
     VBoxVHWAColorKey *pDstOverlayCKey = NULL, DstOverlayCKey;
     VBoxVHWAColorKey *pSrcOverlayCKey = NULL, SrcOverlayCKey;
-    if(pCmd->SurfInfo.flags & VBOXVHWA_SD_CKDESTBLT)
+    if (pCmd->SurfInfo.flags & VBOXVHWA_SD_CKDESTBLT)
     {
         DstBltCKey = VBoxVHWAColorKey(pCmd->SurfInfo.DstBltCK.high, pCmd->SurfInfo.DstBltCK.low);
         pDstBltCKey = &DstBltCKey;
     }
-    if(pCmd->SurfInfo.flags & VBOXVHWA_SD_CKSRCBLT)
+    if (pCmd->SurfInfo.flags & VBOXVHWA_SD_CKSRCBLT)
     {
         SrcBltCKey = VBoxVHWAColorKey(pCmd->SurfInfo.SrcBltCK.high, pCmd->SurfInfo.SrcBltCK.low);
         pSrcBltCKey = &SrcBltCKey;
     }
-    if(pCmd->SurfInfo.flags & VBOXVHWA_SD_CKDESTOVERLAY)
+    if (pCmd->SurfInfo.flags & VBOXVHWA_SD_CKDESTOVERLAY)
     {
         DstOverlayCKey = VBoxVHWAColorKey(pCmd->SurfInfo.DstOverlayCK.high, pCmd->SurfInfo.DstOverlayCK.low);
         pDstOverlayCKey = &DstOverlayCKey;
     }
-    if(pCmd->SurfInfo.flags & VBOXVHWA_SD_CKSRCOVERLAY)
+    if (pCmd->SurfInfo.flags & VBOXVHWA_SD_CKSRCOVERLAY)
     {
         SrcOverlayCKey = VBoxVHWAColorKey(pCmd->SurfInfo.SrcOverlayCK.high, pCmd->SurfInfo.SrcOverlayCK.low);
@@ -2363,5 +2347,5 @@
         bNoPBO = true;
         bPrimary = true;
-        VBoxVHWASurfaceBase * pVga = vgaSurface();
+        VBoxVHWASurfaceBase *pVga = vgaSurface();
 #ifdef VBOX_WITH_WDDM
         uchar * addr = vboxVRAMAddressFromOffset(pCmd->SurfInfo.offSurface);
@@ -2376,7 +2360,7 @@
 
         reportedFormat = VBoxVHWAColorFormat(pCmd->SurfInfo.PixelFormat.c.rgbBitCount,
-                                    pCmd->SurfInfo.PixelFormat.m1.rgbRBitMask,
-                                    pCmd->SurfInfo.PixelFormat.m2.rgbGBitMask,
-                                    pCmd->SurfInfo.PixelFormat.m3.rgbBBitMask);
+                                             pCmd->SurfInfo.PixelFormat.m1.rgbRBitMask,
+                                             pCmd->SurfInfo.PixelFormat.m2.rgbGBitMask,
+                                             pCmd->SurfInfo.PixelFormat.m3.rgbBBitMask);
 
         if (pVga->handle() == VBOXVHWA_SURFHANDLE_INVALID
@@ -2384,14 +2368,14 @@
         {
             Assert(pCmd->SurfInfo.PixelFormat.flags & VBOXVHWA_PF_RGB);
-//            if(pCmd->SurfInfo.PixelFormat.flags & VBOXVHWA_PF_RGB)
+//            if (pCmd->SurfInfo.PixelFormat.flags & VBOXVHWA_PF_RGB)
             {
                 Assert(pCmd->SurfInfo.width == pVga->width());
                 Assert(pCmd->SurfInfo.height == pVga->height());
-//                if(pCmd->SurfInfo.width == pVga->width()
+//                if (pCmd->SurfInfo.width == pVga->width()
 //                        && pCmd->SurfInfo.height == pVga->height())
                 {
                     // the assert below is incorrect in case the Framebuffer is working in "not using VRAM" mode
 //                    Assert(pVga->pixelFormat().equals(format));
-//                    if(pVga->pixelFormat().equals(format))
+//                    if (pVga->pixelFormat().equals(format))
                     {
                         surf = pVga;
@@ -2411,16 +2395,16 @@
         }
     }
-    else if(pCmd->SurfInfo.surfCaps & VBOXVHWA_SCAPS_OFFSCREENPLAIN)
+    else if (pCmd->SurfInfo.surfCaps & VBOXVHWA_SCAPS_OFFSCREENPLAIN)
     {
         bNoPBO = true;
     }
 
-    if(!surf)
+    if (!surf)
     {
         VBOXVHWAIMG_TYPE fFlags = 0;
-        if(!bNoPBO)
+        if (!bNoPBO)
         {
             fFlags |= VBOXVHWAIMG_PBO | VBOXVHWAIMG_PBOIMG | VBOXVHWAIMG_LINEAR;
-            if(mSettings->isStretchLinearEnabled())
+            if (mSettings->isStretchLinearEnabled())
                 fFlags |= VBOXVHWAIMG_FBO;
         }
@@ -2433,37 +2417,37 @@
         else if (pCmd->SurfInfo.PixelFormat.flags & VBOXVHWA_PF_RGB)
             format = VBoxVHWAColorFormat(pCmd->SurfInfo.PixelFormat.c.rgbBitCount,
-                                            pCmd->SurfInfo.PixelFormat.m1.rgbRBitMask,
-                                            pCmd->SurfInfo.PixelFormat.m2.rgbGBitMask,
-                                            pCmd->SurfInfo.PixelFormat.m3.rgbBBitMask);
+                                         pCmd->SurfInfo.PixelFormat.m1.rgbRBitMask,
+                                         pCmd->SurfInfo.PixelFormat.m2.rgbGBitMask,
+                                         pCmd->SurfInfo.PixelFormat.m3.rgbBBitMask);
         else if (pCmd->SurfInfo.PixelFormat.flags & VBOXVHWA_PF_FOURCC)
             format = VBoxVHWAColorFormat(pCmd->SurfInfo.PixelFormat.fourCC);
         else
-            AssertBreakpoint();
+            AssertFailed();
 
         if (format.isValid())
         {
             surf = new VBoxVHWASurfaceBase(this,
-                        surfSize,
-                        primaryRect,
-                        QRect(0, 0, surfSize.width(), surfSize.height()),
-                        mViewport,
-                        format,
-                        pSrcBltCKey, pDstBltCKey, pSrcOverlayCKey, pDstOverlayCKey,
+                                           surfSize,
+                                           primaryRect,
+                                           QRect(0, 0, surfSize.width(), surfSize.height()),
+                                           mViewport,
+                                           format,
+                                           pSrcBltCKey, pDstBltCKey, pSrcOverlayCKey, pDstOverlayCKey,
 #ifdef VBOXVHWA_USE_TEXGROUP
-                        0,
-#endif
-                        fFlags);
+                                           0,
+#endif
+                                           fFlags);
         }
         else
         {
-            AssertBreakpoint();
+            AssertFailed();
             VBOXQGLLOG_EXIT(("pSurf (0x%p)\n",surf));
             return VERR_GENERAL_FAILURE;
         }
 
-        uchar * addr = vboxVRAMAddressFromOffset(pCmd->SurfInfo.offSurface);
+        uchar *addr = vboxVRAMAddressFromOffset(pCmd->SurfInfo.offSurface);
         surf->init(mDisplay.getPrimary(), addr);
 
-        if(pCmd->SurfInfo.surfCaps & VBOXVHWA_SCAPS_OVERLAY)
+        if (pCmd->SurfInfo.surfCaps & VBOXVHWA_SCAPS_OVERLAY)
         {
 #ifdef DEBUG_misha
@@ -2471,5 +2455,5 @@
 #endif
 
-            if(!mConstructingList)
+            if (!mConstructingList)
             {
                 mConstructingList = new VBoxVHWASurfList();
@@ -2480,8 +2464,6 @@
             mConstructingList->add(surf);
             mcRemaining2Contruct--;
-            if(!mcRemaining2Contruct)
-            {
+            if (!mcRemaining2Contruct)
                 mConstructingList = NULL;
-            }
         }
         else
@@ -2494,5 +2476,5 @@
             Assert(pCmd->SurfInfo.surfCaps & VBOXVHWA_SCAPS_VISIBLE);
 #endif
-            if(bPrimary)
+            if (bPrimary)
             {
                 Assert(surf->getComplexList() == mDisplay.getVGA()->getComplexList());
@@ -2503,7 +2485,5 @@
     }
     else
-    {
         Assert(pCmd->SurfInfo.surfCaps & VBOXVHWA_SCAPS_PRIMARYSURFACE);
-    }
 
     Assert(mDisplay.getVGA() == mDisplay.getPrimary());
@@ -2530,9 +2510,9 @@
     }
 
-    if(handle != VBOXVHWA_SURFHANDLE_INVALID)
+    if (handle != VBOXVHWA_SURFHANDLE_INVALID)
     {
         bool bSuccess = mSurfHandleTable.mapPut(handle, surf);
         Assert(bSuccess);
-        if(!bSuccess)
+        if (!bSuccess)
         {
             /** @todo this is very bad, should not be here */
@@ -2570,5 +2550,5 @@
         format = VBoxVHWAColorFormat(pCmd->SurfInfo.PixelFormat.fourCC);
     else
-        AssertBreakpoint();
+        AssertFailed();
 
     Assert(format.isValid());
@@ -2584,4 +2564,5 @@
 }
 #endif
+
 int VBoxVHWAImage::vhwaSurfaceDestroy(struct VBOXVHWACMD_SURF_DESTROY RT_UNTRUSTED_VOLATILE_GUEST *pCmd)
 {
@@ -2591,12 +2572,12 @@
 
     VBOXQGLLOG_ENTER(("pSurf (0x%x)\n",pSurf));
-    if(pList != mDisplay.getVGA()->getComplexList())
+    if (pList != mDisplay.getVGA()->getComplexList())
     {
         Assert(pList);
         pList->remove(pSurf);
-        if(pList->surfaces().empty())
+        if (pList->surfaces().empty())
         {
             mDisplay.removeOverlay(pList);
-            if(pList == mConstructingList)
+            if (pList == mConstructingList)
             {
                 mConstructingList = NULL;
@@ -2612,7 +2593,7 @@
         Assert(pList);
         Assert(pList->size() >= 1);
-        if(pList->size() > 1)
-        {
-            if(pSurf == mDisplay.getVGA())
+        if (pList->size() > 1)
+        {
+            if (pSurf == mDisplay.getVGA())
             {
                 const SurfList & surfaces = pList->surfaces();
@@ -2650,15 +2631,15 @@
 }
 
-#define VBOXVHWA_CONSTRUCT_QRECT_FROM_RECTL_RB(_pr) \
-             QRect((_pr)->left,                     \
-                 (_pr)->top,                        \
-                 (_pr)->right - (_pr)->left + 1,    \
-                 (_pr)->bottom - (_pr)->top + 1)
-
-#define VBOXVHWA_CONSTRUCT_QRECT_FROM_RECTL_WH(_pr) \
-             QRect((_pr)->left,                     \
-                 (_pr)->top,                        \
-                 (_pr)->right - (_pr)->left,        \
-                 (_pr)->bottom - (_pr)->top)
+#define VBOXVHWA_CONSTRUCT_QRECT_FROM_RECTL_RB(a_pr) \
+    QRect((a_pr)->left, \
+          (a_pr)->top, \
+          (a_pr)->right  - (a_pr)->left + 1, \
+          (a_pr)->bottom - (a_pr)->top + 1)
+
+#define VBOXVHWA_CONSTRUCT_QRECT_FROM_RECTL_WH(a_pr) \
+    QRect((a_pr)->left, \
+          (a_pr)->top, \
+          (a_pr)->right  - (a_pr)->left, \
+          (a_pr)->bottom - (a_pr)->top)
 
 int VBoxVHWAImage::vhwaSurfaceLock(struct VBOXVHWACMD_SURF_LOCK RT_UNTRUSTED_VOLATILE_GUEST *pCmd)
@@ -2682,10 +2663,10 @@
      * other surfaces receive unlock only once becoming visible, e.g. on DdFlip
      * Ensure this is so*/
-    if(pSurf != mDisplay.getPrimary())
+    if (pSurf != mDisplay.getPrimary())
     {
         const OverlayList & overlays = mDisplay.overlays();
         bool bFound = false;
 
-        if(!mDisplay.isPrimary(pSurf))
+        if (!mDisplay.isPrimary(pSurf))
         {
             for (OverlayList::const_iterator it = overlays.begin();
@@ -2693,5 +2674,5 @@
             {
                 VBoxVHWASurfList * pSurfList = *it;
-                if(pSurfList->current() == pSurf)
+                if (pSurfList->current() == pSurf)
                 {
                     bFound = true;
@@ -2707,5 +2688,5 @@
 #endif
     VBOXQGLLOG_ENTER(("pSurf (0x%x)\n",pSurf));
-    if(pCmd->u.in.xUpdatedMemValid)
+    if (pCmd->u.in.xUpdatedMemValid)
     {
         QRect r = VBOXVHWA_CONSTRUCT_QRECT_FROM_RECTL_WH(&pCmd->u.in.xUpdatedMemRect);
@@ -2730,5 +2711,5 @@
     vboxCheckUpdateAddress (pTargSurf, pCmd->u.in.offTargSurface);
 
-    if(pCmd->u.in.xUpdatedTargMemValid)
+    if (pCmd->u.in.xUpdatedTargMemValid)
     {
         QRect r = VBOXVHWA_CONSTRUCT_QRECT_FROM_RECTL_WH(&pCmd->u.in.xUpdatedTargMemRect);
@@ -2755,5 +2736,5 @@
                                                struct VBOXVHWACMD_SURF_OVERLAY_UPDATE RT_UNTRUSTED_VOLATILE_GUEST *pCmd)
 {
-    if(pCmd->u.in.flags & VBOXVHWA_OVER_KEYDEST)
+    if (pCmd->u.in.flags & VBOXVHWA_OVER_KEYDEST)
     {
         VBOXQGLLOG((", KEYDEST"));
@@ -2767,5 +2748,5 @@
         pSrcSurf->setOverriddenDstOverlayCKey(NULL);
     }
-    else if(pCmd->u.in.flags & VBOXVHWA_OVER_KEYDESTOVERRIDE)
+    else if (pCmd->u.in.flags & VBOXVHWA_OVER_KEYDESTOVERRIDE)
     {
         VBOXQGLLOG((", KEYDESTOVERRIDE"));
@@ -2799,10 +2780,10 @@
     }
 
-    if(pCmd->u.in.flags & VBOXVHWA_OVER_KEYSRC)
+    if (pCmd->u.in.flags & VBOXVHWA_OVER_KEYSRC)
     {
         VBOXQGLLOG((", KEYSRC"));
         pSrcSurf->resetDefaultSrcOverlayCKey();
     }
-    else if(pCmd->u.in.flags & VBOXVHWA_OVER_KEYSRCOVERRIDE)
+    else if (pCmd->u.in.flags & VBOXVHWA_OVER_KEYSRCOVERRIDE)
     {
         VBOXQGLLOG((", KEYSRCOVERRIDE"));
@@ -2816,5 +2797,5 @@
     }
     VBOXQGLLOG(("\n"));
-    if(pDstSurf)
+    if (pDstSurf)
     {
         QRect dstRect = VBOXVHWA_CONSTRUCT_QRECT_FROM_RECTL_WH(&pCmd->u.in.dstRect);
@@ -2841,5 +2822,5 @@
     VBoxVHWASurfaceBase *pDstSurf = NULL;
 
-    if(pCmd->u.in.hDstSurf)
+    if (pCmd->u.in.hDstSurf)
     {
         pDstSurf = handle2Surface(pCmd->u.in.hDstSurf);
@@ -2852,7 +2833,7 @@
         Assert(pDstSurf->getComplexList() == mDisplay.getVGA()->getComplexList());
 
-        if(pCmd->u.in.flags & VBOXVHWA_OVER_SHOW)
-        {
-            if(pDstSurf != mDisplay.getPrimary())
+        if (pCmd->u.in.flags & VBOXVHWA_OVER_SHOW)
+        {
+            if (pDstSurf != mDisplay.getPrimary())
             {
                 mDisplay.updateVGA(pDstSurf);
@@ -2863,10 +2844,10 @@
 
 #ifdef VBOX_WITH_WDDM
-    if(pCmd->u.in.xFlags & VBOXVHWACMD_SURF_OVERLAY_UPDATE_F_SRCMEMRECT)
+    if (pCmd->u.in.xFlags & VBOXVHWACMD_SURF_OVERLAY_UPDATE_F_SRCMEMRECT)
     {
         QRect r = VBOXVHWA_CONSTRUCT_QRECT_FROM_RECTL_WH(&pCmd->u.in.xUpdatedSrcMemRect);
         pSrcSurf->updatedMem(&r);
     }
-    if(pCmd->u.in.xFlags & VBOXVHWACMD_SURF_OVERLAY_UPDATE_F_DSTMEMRECT)
+    if (pCmd->u.in.xFlags & VBOXVHWACMD_SURF_OVERLAY_UPDATE_F_DSTMEMRECT)
     {
         QRect r = VBOXVHWA_CONSTRUCT_QRECT_FROM_RECTL_WH(&pCmd->u.in.xUpdatedDstMemRect);
@@ -2884,10 +2865,10 @@
     }
 
-    if(pCmd->u.in.flags & VBOXVHWA_OVER_HIDE)
+    if (pCmd->u.in.flags & VBOXVHWA_OVER_HIDE)
     {
         VBOXQGLLOG(("hide\n"));
         pList->setCurrentVisible(NULL);
     }
-    else if(pCmd->u.in.flags & VBOXVHWA_OVER_SHOW)
+    else if (pCmd->u.in.flags & VBOXVHWA_OVER_SHOW)
     {
         VBOXQGLLOG(("show\n"));
@@ -2944,6 +2925,5 @@
 {
     VBoxVHWASurfaceBase *pSurf = handle2Surface(pCmd->u.in.hSurf);
-
-    VBOXQGLLOG_ENTER(("pSurf (0x%x)\n",pSurf));
+    VBOXQGLLOG_ENTER(("pSurf (0x%x)\n", pSurf));
 
     vboxCheckUpdateAddress (pSurf, pCmd->u.in.offSurface);
@@ -2981,17 +2961,17 @@
     bool bEnabled = false;
     const VBoxVHWAInfo & info = vboxVHWAGetSupportInfo(NULL);
-    if(info.isVHWASupported())
+    if (info.isVHWASupported())
     {
         Assert(pCmd->u.in.guestVersion.maj == VBOXVHWA_VERSION_MAJ);
-        if(pCmd->u.in.guestVersion.maj == VBOXVHWA_VERSION_MAJ)
+        if (pCmd->u.in.guestVersion.maj == VBOXVHWA_VERSION_MAJ)
         {
             Assert(pCmd->u.in.guestVersion.min == VBOXVHWA_VERSION_MIN);
-            if(pCmd->u.in.guestVersion.min == VBOXVHWA_VERSION_MIN)
+            if (pCmd->u.in.guestVersion.min == VBOXVHWA_VERSION_MIN)
             {
                 Assert(pCmd->u.in.guestVersion.bld == VBOXVHWA_VERSION_BLD);
-                if(pCmd->u.in.guestVersion.bld == VBOXVHWA_VERSION_BLD)
+                if (pCmd->u.in.guestVersion.bld == VBOXVHWA_VERSION_BLD)
                 {
                     Assert(pCmd->u.in.guestVersion.reserved == VBOXVHWA_VERSION_RSV);
-                    if(pCmd->u.in.guestVersion.reserved == VBOXVHWA_VERSION_RSV)
+                    if (pCmd->u.in.guestVersion.reserved == VBOXVHWA_VERSION_RSV)
                     {
                         bEnabled = true;
@@ -3012,9 +2992,9 @@
 //                                 | VBOXVHWA_CAPS_BLTCOLORFILL not supported, although adding it is trivial
 //                                 | VBOXVHWA_CAPS_BLTFOURCC set below if shader support is available
-                                 VBOXVHWA_CAPS_OVERLAY
-                                 | VBOXVHWA_CAPS_OVERLAYSTRETCH
-                                 | VBOXVHWA_CAPS_OVERLAYCANTCLIP
+                           VBOXVHWA_CAPS_OVERLAY
+                         | VBOXVHWA_CAPS_OVERLAYSTRETCH
+                         | VBOXVHWA_CAPS_OVERLAYCANTCLIP
                                  // | VBOXVHWA_CAPS_OVERLAYFOURCC set below if shader support is available
-                                 ;
+                         ;
 
         /** @todo check if we could use DDSCAPS_ALPHA instead of colorkeying */
@@ -3030,42 +3010,39 @@
         pCmd->u.out.curOverlays = 0;
 
-        pCmd->u.out.surfaceCaps =
-                            VBOXVHWA_SCAPS_PRIMARYSURFACE
+        pCmd->u.out.surfaceCaps = VBOXVHWA_SCAPS_PRIMARYSURFACE
 #ifndef VBOXVHWA_ALLOW_PRIMARY_AND_OVERLAY_ONLY
-                            | VBOXVHWA_SCAPS_OFFSCREENPLAIN
-#endif
-                            | VBOXVHWA_SCAPS_FLIP
-                            | VBOXVHWA_SCAPS_LOCALVIDMEM
-                            | VBOXVHWA_SCAPS_OVERLAY
-                    //        | VBOXVHWA_SCAPS_BACKBUFFER
-                    //        | VBOXVHWA_SCAPS_FRONTBUFFER
-                    //        | VBOXVHWA_SCAPS_VIDEOMEMORY
-                    //        | VBOXVHWA_SCAPS_COMPLEX
-                    //        | VBOXVHWA_SCAPS_VISIBLE
-                            ;
-
-        if(info.getGlInfo().isFragmentShaderSupported() && info.getGlInfo().getMultiTexNumSupported() >= 2)
+                                | VBOXVHWA_SCAPS_OFFSCREENPLAIN
+#endif
+                                | VBOXVHWA_SCAPS_FLIP
+                                | VBOXVHWA_SCAPS_LOCALVIDMEM
+                                | VBOXVHWA_SCAPS_OVERLAY
+                    //            | VBOXVHWA_SCAPS_BACKBUFFER
+                    //            | VBOXVHWA_SCAPS_FRONTBUFFER
+                    //            | VBOXVHWA_SCAPS_VIDEOMEMORY
+                    //            | VBOXVHWA_SCAPS_COMPLEX
+                    //            | VBOXVHWA_SCAPS_VISIBLE
+                                ;
+
+        if (info.getGlInfo().isFragmentShaderSupported() && info.getGlInfo().getMultiTexNumSupported() >= 2)
         {
             pCmd->u.out.caps |= VBOXVHWA_CAPS_COLORKEY
-                            | VBOXVHWA_CAPS_COLORKEYHWASSIST
-                            ;
-
-            pCmd->u.out.colorKeyCaps =
-//                          VBOXVHWA_CKEYCAPS_DESTBLT | VBOXVHWA_CKEYCAPS_DESTBLTCLRSPACE | VBOXVHWA_CKEYCAPS_SRCBLT| VBOXVHWA_CKEYCAPS_SRCBLTCLRSPACE |
-//                          VBOXVHWA_CKEYCAPS_SRCOVERLAY | VBOXVHWA_CKEYCAPS_SRCOVERLAYONEACTIVE |
-                            VBOXVHWA_CKEYCAPS_DESTOVERLAY          |
-                            VBOXVHWA_CKEYCAPS_DESTOVERLAYONEACTIVE;
-                            ;
-
-            if(info.getGlInfo().isTextureRectangleSupported())
+                             |  VBOXVHWA_CAPS_COLORKEYHWASSIST;
+
+            pCmd->u.out.colorKeyCaps = 0
+//                                   | VBOXVHWA_CKEYCAPS_DESTBLT | VBOXVHWA_CKEYCAPS_DESTBLTCLRSPACE
+//                                   | VBOXVHWA_CKEYCAPS_SRCBLT| VBOXVHWA_CKEYCAPS_SRCBLTCLRSPACE
+//                                   | VBOXVHWA_CKEYCAPS_SRCOVERLAY | VBOXVHWA_CKEYCAPS_SRCOVERLAYONEACTIVE
+                                     | VBOXVHWA_CKEYCAPS_DESTOVERLAY
+                                     | VBOXVHWA_CKEYCAPS_DESTOVERLAYONEACTIVE;
+
+            if (info.getGlInfo().isTextureRectangleSupported())
             {
                 pCmd->u.out.caps |= VBOXVHWA_CAPS_OVERLAYFOURCC
-//                              | VBOXVHWA_CAPS_BLTFOURCC
-                                ;
-
-                pCmd->u.out.colorKeyCaps |=
-//                               VBOXVHWA_CKEYCAPS_SRCOVERLAYYUV |
-                                 VBOXVHWA_CKEYCAPS_DESTOVERLAYYUV;
+//                               |  VBOXVHWA_CAPS_BLTFOURCC
                                  ;
+
+                pCmd->u.out.colorKeyCaps |= 0
+//                                       |  VBOXVHWA_CKEYCAPS_SRCOVERLAYYUV
+                                         |  VBOXVHWA_CKEYCAPS_DESTOVERLAYYUV;
 
 //              pCmd->u.out.caps2 |= VBOXVHWA_CAPS2_COPYFOURCC;
@@ -3083,13 +3060,13 @@
     VBOXQGLLOG_ENTER(("\n"));
 
-    const VBoxVHWAInfo & info = vboxVHWAGetSupportInfo(NULL);
+    const VBoxVHWAInfo &info = vboxVHWAGetSupportInfo(NULL);
     uint32_t aFourcc[VBOXVHWA_NUMFOURCC];
     int num = mSettings->getIntersection(info, VBOXVHWA_NUMFOURCC, aFourcc);
     Assert(pCmd->numFourCC >= (uint32_t)num);
-    if(pCmd->numFourCC < (uint32_t)num)
+    if (pCmd->numFourCC < (uint32_t)num)
         return VERR_GENERAL_FAILURE;
 
     pCmd->numFourCC = (uint32_t)num;
-    memcpy((void *)pCmd->FourCC, aFourcc, num * sizeof(aFourcc[0]));
+    memcpy((void *)&pCmd->FourCC[0], aFourcc, num * sizeof(aFourcc[0]));
     return VINF_SUCCESS;
 }
@@ -3108,5 +3085,5 @@
 //}
 
-int VBoxVHWAImage::vhwaSaveSurface(struct SSMHANDLE * pSSM, VBoxVHWASurfaceBase *pSurf, uint32_t surfCaps)
+int VBoxVHWAImage::vhwaSaveSurface(struct SSMHANDLE *pSSM, VBoxVHWASurfaceBase *pSurf, uint32_t surfCaps)
 {
     VBOXQGL_SAVE_SURFSTART(pSSM);
@@ -3114,74 +3091,68 @@
     uint64_t u64 = vboxVRAMOffset(pSurf);
     int rc;
-    rc = SSMR3PutU32(pSSM, pSurf->handle());         AssertRC(rc);
-    rc = SSMR3PutU64(pSSM, u64);         AssertRC(rc);
-    rc = SSMR3PutU32(pSSM, pSurf->width());         AssertRC(rc);
-    rc = SSMR3PutU32(pSSM, pSurf->height());         AssertRC(rc);
-    rc = SSMR3PutU32(pSSM, surfCaps);         AssertRC(rc);
+    rc = SSMR3PutU32(pSSM, pSurf->handle());
+    rc = SSMR3PutU64(pSSM, u64);
+    rc = SSMR3PutU32(pSSM, pSurf->width());
+    rc = SSMR3PutU32(pSSM, pSurf->height());
+    rc = SSMR3PutU32(pSSM, surfCaps);
+
     uint32_t flags = 0;
-    const VBoxVHWAColorKey * pDstBltCKey = pSurf->dstBltCKey();
-    const VBoxVHWAColorKey * pSrcBltCKey = pSurf->srcBltCKey();
-    const VBoxVHWAColorKey * pDstOverlayCKey = pSurf->dstOverlayCKey();
-    const VBoxVHWAColorKey * pSrcOverlayCKey = pSurf->srcOverlayCKey();
-    if(pDstBltCKey)
-    {
+    const VBoxVHWAColorKey *pDstBltCKey = pSurf->dstBltCKey();
+    const VBoxVHWAColorKey *pSrcBltCKey = pSurf->srcBltCKey();
+    const VBoxVHWAColorKey *pDstOverlayCKey = pSurf->dstOverlayCKey();
+    const VBoxVHWAColorKey *pSrcOverlayCKey = pSurf->srcOverlayCKey();
+    if (pDstBltCKey)
         flags |= VBOXVHWA_SD_CKDESTBLT;
-    }
-    if(pSrcBltCKey)
-    {
+    if (pSrcBltCKey)
         flags |= VBOXVHWA_SD_CKSRCBLT;
-    }
-    if(pDstOverlayCKey)
-    {
+    if (pDstOverlayCKey)
         flags |= VBOXVHWA_SD_CKDESTOVERLAY;
-    }
-    if(pSrcOverlayCKey)
-    {
+    if (pSrcOverlayCKey)
         flags |= VBOXVHWA_SD_CKSRCOVERLAY;
-    }
-
-    rc = SSMR3PutU32(pSSM, flags);         AssertRC(rc);
-    if(pDstBltCKey)
-    {
-        rc = SSMR3PutU32(pSSM, pDstBltCKey->lower());         AssertRC(rc);
-        rc = SSMR3PutU32(pSSM, pDstBltCKey->upper());         AssertRC(rc);
-    }
-    if(pSrcBltCKey)
-    {
-        rc = SSMR3PutU32(pSSM, pSrcBltCKey->lower());         AssertRC(rc);
-        rc = SSMR3PutU32(pSSM, pSrcBltCKey->upper());         AssertRC(rc);
-    }
-    if(pDstOverlayCKey)
-    {
-        rc = SSMR3PutU32(pSSM, pDstOverlayCKey->lower());         AssertRC(rc);
-        rc = SSMR3PutU32(pSSM, pDstOverlayCKey->upper());         AssertRC(rc);
-    }
-    if(pSrcOverlayCKey)
-    {
-        rc = SSMR3PutU32(pSSM, pSrcOverlayCKey->lower());         AssertRC(rc);
-        rc = SSMR3PutU32(pSSM, pSrcOverlayCKey->upper());         AssertRC(rc);
-    }
+    rc = SSMR3PutU32(pSSM, flags);
+
+    if (pDstBltCKey)
+    {
+        rc = SSMR3PutU32(pSSM, pDstBltCKey->lower());
+        rc = SSMR3PutU32(pSSM, pDstBltCKey->upper());
+    }
+    if (pSrcBltCKey)
+    {
+        rc = SSMR3PutU32(pSSM, pSrcBltCKey->lower());
+        rc = SSMR3PutU32(pSSM, pSrcBltCKey->upper());
+    }
+    if (pDstOverlayCKey)
+    {
+        rc = SSMR3PutU32(pSSM, pDstOverlayCKey->lower());
+        rc = SSMR3PutU32(pSSM, pDstOverlayCKey->upper());
+    }
+    if (pSrcOverlayCKey)
+    {
+        rc = SSMR3PutU32(pSSM, pSrcOverlayCKey->lower());
+        rc = SSMR3PutU32(pSSM, pSrcOverlayCKey->upper());
+    }
+    AssertRCReturn(rc, rc);
 
     const VBoxVHWAColorFormat & format = pSurf->pixelFormat();
     flags = 0;
-    if(format.fourcc())
+    if (format.fourcc())
     {
         flags |= VBOXVHWA_PF_FOURCC;
-        rc = SSMR3PutU32(pSSM, flags);         AssertRC(rc);
-        rc = SSMR3PutU32(pSSM, format.fourcc());         AssertRC(rc);
+        rc = SSMR3PutU32(pSSM, flags);
+        rc = SSMR3PutU32(pSSM, format.fourcc());
     }
     else
     {
         flags |= VBOXVHWA_PF_RGB;
-        rc = SSMR3PutU32(pSSM, flags);         AssertRC(rc);
-        rc = SSMR3PutU32(pSSM, format.bitsPerPixel());         AssertRC(rc);
-        rc = SSMR3PutU32(pSSM, format.r().mask());         AssertRC(rc);
-        rc = SSMR3PutU32(pSSM, format.g().mask());         AssertRC(rc);
-        rc = SSMR3PutU32(pSSM, format.b().mask());         AssertRC(rc);
-        rc = SSMR3PutU32(pSSM, format.a().mask());         AssertRC(rc);
-    }
+        rc = SSMR3PutU32(pSSM, flags);
+        rc = SSMR3PutU32(pSSM, format.bitsPerPixel());
+        rc = SSMR3PutU32(pSSM, format.r().mask());
+        rc = SSMR3PutU32(pSSM, format.g().mask());
+        rc = SSMR3PutU32(pSSM, format.b().mask());
+        rc = SSMR3PutU32(pSSM, format.a().mask());
+    }
+    AssertRCReturn(rc, rc);
 
     VBOXQGL_SAVE_SURFSTOP(pSSM);
-
     return rc;
 }
@@ -3204,44 +3175,45 @@
     rc = SSMR3GetU32(pSSM, &u32);         AssertRC(rc);
     pCreateSurf->SurfInfo.hSurf = (VBOXVHWA_SURFHANDLE)u32;
-    if(RT_SUCCESS(rc))
-    {
-        rc = SSMR3GetU64(pSSM, &pCreateSurf->SurfInfo.offSurface);         AssertRC(rc);
-        rc = SSMR3GetU32(pSSM, &pCreateSurf->SurfInfo.width);         AssertRC(rc);
-        rc = SSMR3GetU32(pSSM, &pCreateSurf->SurfInfo.height);         AssertRC(rc);
-        rc = SSMR3GetU32(pSSM, &pCreateSurf->SurfInfo.surfCaps);         AssertRC(rc);
-        rc = SSMR3GetU32(pSSM, &pCreateSurf->SurfInfo.flags);         AssertRC(rc);
-        if(pCreateSurf->SurfInfo.flags & VBOXVHWA_SD_CKDESTBLT)
-        {
-            rc = SSMR3GetU32(pSSM, &pCreateSurf->SurfInfo.DstBltCK.low);         AssertRC(rc);
-            rc = SSMR3GetU32(pSSM, &pCreateSurf->SurfInfo.DstBltCK.high);         AssertRC(rc);
-        }
-        if(pCreateSurf->SurfInfo.flags & VBOXVHWA_SD_CKSRCBLT)
-        {
-            rc = SSMR3GetU32(pSSM, &pCreateSurf->SurfInfo.SrcBltCK.low);         AssertRC(rc);
-            rc = SSMR3GetU32(pSSM, &pCreateSurf->SurfInfo.SrcBltCK.high);         AssertRC(rc);
-        }
-        if(pCreateSurf->SurfInfo.flags & VBOXVHWA_SD_CKDESTOVERLAY)
-        {
-            rc = SSMR3GetU32(pSSM, &pCreateSurf->SurfInfo.DstOverlayCK.low);         AssertRC(rc);
-            rc = SSMR3GetU32(pSSM, &pCreateSurf->SurfInfo.DstOverlayCK.high);         AssertRC(rc);
-        }
-        if(pCreateSurf->SurfInfo.flags & VBOXVHWA_SD_CKSRCOVERLAY)
-        {
-            rc = SSMR3GetU32(pSSM, &pCreateSurf->SurfInfo.SrcOverlayCK.low);         AssertRC(rc);
-            rc = SSMR3GetU32(pSSM, &pCreateSurf->SurfInfo.SrcOverlayCK.high);         AssertRC(rc);
-        }
-
-        rc = SSMR3GetU32(pSSM, &pCreateSurf->SurfInfo.PixelFormat.flags);         AssertRC(rc);
-        if(pCreateSurf->SurfInfo.PixelFormat.flags & VBOXVHWA_PF_RGB)
-        {
-            rc = SSMR3GetU32(pSSM, &pCreateSurf->SurfInfo.PixelFormat.c.rgbBitCount);         AssertRC(rc);
-            rc = SSMR3GetU32(pSSM, &pCreateSurf->SurfInfo.PixelFormat.m1.rgbRBitMask);         AssertRC(rc);
-            rc = SSMR3GetU32(pSSM, &pCreateSurf->SurfInfo.PixelFormat.m2.rgbGBitMask);         AssertRC(rc);
-            rc = SSMR3GetU32(pSSM, &pCreateSurf->SurfInfo.PixelFormat.m3.rgbBBitMask);         AssertRC(rc);
-            rc = SSMR3GetU32(pSSM, &pCreateSurf->SurfInfo.PixelFormat.m4.rgbABitMask);         AssertRC(rc);
-        }
-        else if(pCreateSurf->SurfInfo.PixelFormat.flags & VBOXVHWA_PF_FOURCC)
-        {
-            rc = SSMR3GetU32(pSSM, &pCreateSurf->SurfInfo.PixelFormat.fourCC);         AssertRC(rc);
+    if (RT_SUCCESS(rc))
+    {
+        rc = SSMR3GetU64(pSSM, &pCreateSurf->SurfInfo.offSurface);      AssertRC(rc);
+        rc = SSMR3GetU32(pSSM, &pCreateSurf->SurfInfo.width);           AssertRC(rc);
+        rc = SSMR3GetU32(pSSM, &pCreateSurf->SurfInfo.height);          AssertRC(rc);
+        rc = SSMR3GetU32(pSSM, &pCreateSurf->SurfInfo.surfCaps);        AssertRC(rc);
+        rc = SSMR3GetU32(pSSM, &pCreateSurf->SurfInfo.flags);           AssertRC(rc);
+        if (pCreateSurf->SurfInfo.flags & VBOXVHWA_SD_CKDESTBLT)
+        {
+            rc = SSMR3GetU32(pSSM, &pCreateSurf->SurfInfo.DstBltCK.low);    AssertRC(rc);
+            rc = SSMR3GetU32(pSSM, &pCreateSurf->SurfInfo.DstBltCK.high);   AssertRC(rc);
+        }
+        if (pCreateSurf->SurfInfo.flags & VBOXVHWA_SD_CKSRCBLT)
+        {
+            rc = SSMR3GetU32(pSSM, &pCreateSurf->SurfInfo.SrcBltCK.low);    AssertRC(rc);
+            rc = SSMR3GetU32(pSSM, &pCreateSurf->SurfInfo.SrcBltCK.high);   AssertRC(rc);
+        }
+        if (pCreateSurf->SurfInfo.flags & VBOXVHWA_SD_CKDESTOVERLAY)
+        {
+            rc = SSMR3GetU32(pSSM, &pCreateSurf->SurfInfo.DstOverlayCK.low);  AssertRC(rc);
+            rc = SSMR3GetU32(pSSM, &pCreateSurf->SurfInfo.DstOverlayCK.high); AssertRC(rc);
+        }
+        if (pCreateSurf->SurfInfo.flags & VBOXVHWA_SD_CKSRCOVERLAY)
+        {
+            rc = SSMR3GetU32(pSSM, &pCreateSurf->SurfInfo.SrcOverlayCK.low);  AssertRC(rc);
+            rc = SSMR3GetU32(pSSM, &pCreateSurf->SurfInfo.SrcOverlayCK.high); AssertRC(rc);
+        }
+
+        rc = SSMR3GetU32(pSSM, &pCreateSurf->SurfInfo.PixelFormat.flags);     AssertRC(rc);
+        if (pCreateSurf->SurfInfo.PixelFormat.flags & VBOXVHWA_PF_RGB)
+        {
+            rc = SSMR3GetU32(pSSM, &pCreateSurf->SurfInfo.PixelFormat.c.rgbBitCount);   AssertRC(rc);
+            rc = SSMR3GetU32(pSSM, &pCreateSurf->SurfInfo.PixelFormat.m1.rgbRBitMask);  AssertRC(rc);
+            rc = SSMR3GetU32(pSSM, &pCreateSurf->SurfInfo.PixelFormat.m2.rgbGBitMask);  AssertRC(rc);
+            rc = SSMR3GetU32(pSSM, &pCreateSurf->SurfInfo.PixelFormat.m3.rgbBBitMask);  AssertRC(rc);
+            rc = SSMR3GetU32(pSSM, &pCreateSurf->SurfInfo.PixelFormat.m4.rgbABitMask);  AssertRC(rc);
+        }
+        else if (pCreateSurf->SurfInfo.PixelFormat.flags & VBOXVHWA_PF_FOURCC)
+        {
+            rc = SSMR3GetU32(pSSM, &pCreateSurf->SurfInfo.PixelFormat.fourCC);
+            AssertRC(rc);
         }
         else
@@ -3249,6 +3221,7 @@
             AssertFailed();
         }
-
-        if(cBackBuffers)
+        AssertRCReturnStmt(rc, free(buf), rc);
+
+        if (cBackBuffers)
         {
             pCreateSurf->SurfInfo.cBackBuffers = cBackBuffers;
@@ -3258,5 +3231,5 @@
         pCmdList->push_back(pCmd);
 //        vboxExecOnResize(&VBoxVHWAImage::vboxDoVHWACmdAndFree, pCmd); AssertRC(rc);
-//        if(RT_SUCCESS(rc))
+//        if (RT_SUCCESS(rc))
 //        {
 //            rc = pCmd->rc;
@@ -3284,5 +3257,5 @@
     bool bSaveSrcCKey = false;
 
-    if(bVisible)
+    if (bVisible)
     {
         flags |= VBOXVHWA_OVER_SHOW;
@@ -3293,9 +3266,9 @@
     }
 
-    if(!dstCKey)
+    if (!dstCKey)
     {
         flags |= VBOXVHWA_OVER_KEYDEST;
     }
-    else if(defaultDstCKey)
+    else if (defaultDstCKey)
     {
         flags |= VBOXVHWA_OVER_KEYDESTOVERRIDE;
@@ -3303,9 +3276,9 @@
     }
 
-    if(srcCKey == defaultSrcCKey)
+    if (srcCKey == defaultSrcCKey)
     {
         flags |= VBOXVHWA_OVER_KEYSRC;
     }
-    else if(srcCKey)
+    else if (srcCKey)
     {
         flags |= VBOXVHWA_OVER_KEYSRCOVERRIDE;
@@ -3313,32 +3286,33 @@
     }
 
-    int rc = SSMR3PutU32(pSSM, flags); AssertRC(rc);
-
-    rc = SSMR3PutU32(pSSM, mDisplay.getPrimary()->handle()); AssertRC(rc);
-    rc = SSMR3PutU32(pSSM, pSurf->handle()); AssertRC(rc);
-
-    if(bSaveDstCKey)
-    {
-        rc = SSMR3PutU32(pSSM, dstCKey->lower()); AssertRC(rc);
-        rc = SSMR3PutU32(pSSM, dstCKey->upper()); AssertRC(rc);
-    }
-    if(bSaveSrcCKey)
-    {
-        rc = SSMR3PutU32(pSSM, srcCKey->lower()); AssertRC(rc);
-        rc = SSMR3PutU32(pSSM, srcCKey->upper()); AssertRC(rc);
+    int rc = SSMR3PutU32(pSSM, flags);
+
+    rc = SSMR3PutU32(pSSM, mDisplay.getPrimary()->handle());
+    rc = SSMR3PutU32(pSSM, pSurf->handle());
+
+    if (bSaveDstCKey)
+    {
+        rc = SSMR3PutU32(pSSM, dstCKey->lower());
+        rc = SSMR3PutU32(pSSM, dstCKey->upper());
+    }
+    if (bSaveSrcCKey)
+    {
+        rc = SSMR3PutU32(pSSM, srcCKey->lower());
+        rc = SSMR3PutU32(pSSM, srcCKey->upper());
     }
 
     int x1, x2, y1, y2;
     pSurf->targRect().getCoords(&x1, &y1, &x2, &y2);
-    rc = SSMR3PutS32(pSSM, x1); AssertRC(rc);
-    rc = SSMR3PutS32(pSSM, x2+1); AssertRC(rc);
-    rc = SSMR3PutS32(pSSM, y1); AssertRC(rc);
-    rc = SSMR3PutS32(pSSM, y2+1); AssertRC(rc);
+    rc = SSMR3PutS32(pSSM, x1);
+    rc = SSMR3PutS32(pSSM, x2+1);
+    rc = SSMR3PutS32(pSSM, y1);
+    rc = SSMR3PutS32(pSSM, y2+1);
 
     pSurf->srcRect().getCoords(&x1, &y1, &x2, &y2);
-    rc = SSMR3PutS32(pSSM, x1); AssertRC(rc);
-    rc = SSMR3PutS32(pSSM, x2+1); AssertRC(rc);
-    rc = SSMR3PutS32(pSSM, y1); AssertRC(rc);
-    rc = SSMR3PutS32(pSSM, y2+1); AssertRC(rc);
+    rc = SSMR3PutS32(pSSM, x1);
+    rc = SSMR3PutS32(pSSM, x2+1);
+    rc = SSMR3PutS32(pSSM, y1);
+    rc = SSMR3PutS32(pSSM, y2+1);
+    AssertRCReturn(rc, rc);
 
     VBOXQGL_SAVE_OVERLAYSTOP(pSSM);
@@ -3372,25 +3346,26 @@
         pUpdateOverlay->u.in.offSrcSurface = VBOXVHWA_OFFSET64_VOID;
 
-        if(pUpdateOverlay->u.in.flags & VBOXVHWA_OVER_KEYDESTOVERRIDE)
-        {
-            rc = SSMR3GetU32(pSSM, &pUpdateOverlay->u.in.desc.DstCK.low); AssertRC(rc);
+        if (pUpdateOverlay->u.in.flags & VBOXVHWA_OVER_KEYDESTOVERRIDE)
+        {
+            rc = SSMR3GetU32(pSSM, &pUpdateOverlay->u.in.desc.DstCK.low);  AssertRC(rc);
             rc = SSMR3GetU32(pSSM, &pUpdateOverlay->u.in.desc.DstCK.high); AssertRC(rc);
         }
 
-        if(pUpdateOverlay->u.in.flags & VBOXVHWA_OVER_KEYSRCOVERRIDE)
-        {
-            rc = SSMR3GetU32(pSSM, &pUpdateOverlay->u.in.desc.SrcCK.low); AssertRC(rc);
+        if (pUpdateOverlay->u.in.flags & VBOXVHWA_OVER_KEYSRCOVERRIDE)
+        {
+            rc = SSMR3GetU32(pSSM, &pUpdateOverlay->u.in.desc.SrcCK.low);  AssertRC(rc);
             rc = SSMR3GetU32(pSSM, &pUpdateOverlay->u.in.desc.SrcCK.high); AssertRC(rc);
         }
 
-        rc = SSMR3GetS32(pSSM, &pUpdateOverlay->u.in.dstRect.left); AssertRC(rc);
-        rc = SSMR3GetS32(pSSM, &pUpdateOverlay->u.in.dstRect.right); AssertRC(rc);
-        rc = SSMR3GetS32(pSSM, &pUpdateOverlay->u.in.dstRect.top); AssertRC(rc);
+        rc = SSMR3GetS32(pSSM, &pUpdateOverlay->u.in.dstRect.left);   AssertRC(rc);
+        rc = SSMR3GetS32(pSSM, &pUpdateOverlay->u.in.dstRect.right);  AssertRC(rc);
+        rc = SSMR3GetS32(pSSM, &pUpdateOverlay->u.in.dstRect.top);    AssertRC(rc);
         rc = SSMR3GetS32(pSSM, &pUpdateOverlay->u.in.dstRect.bottom); AssertRC(rc);
 
-        rc = SSMR3GetS32(pSSM, &pUpdateOverlay->u.in.srcRect.left); AssertRC(rc);
-        rc = SSMR3GetS32(pSSM, &pUpdateOverlay->u.in.srcRect.right); AssertRC(rc);
-        rc = SSMR3GetS32(pSSM, &pUpdateOverlay->u.in.srcRect.top); AssertRC(rc);
-        rc = SSMR3GetS32(pSSM, &pUpdateOverlay->u.in.srcRect.bottom); AssertRC(rc);
+        rc = SSMR3GetS32(pSSM, &pUpdateOverlay->u.in.srcRect.left);   AssertRC(rc);
+        rc = SSMR3GetS32(pSSM, &pUpdateOverlay->u.in.srcRect.right);  AssertRC(rc);
+        rc = SSMR3GetS32(pSSM, &pUpdateOverlay->u.in.srcRect.top);    AssertRC(rc);
+        rc = SSMR3GetS32(pSSM, &pUpdateOverlay->u.in.srcRect.bottom);
+        AssertRCReturnStmt(rc, free(buf), rc);
 
         pCmdList->push_back(pCmd);
@@ -3402,12 +3377,12 @@
 }
 
-void VBoxVHWAImage::vhwaSaveExecVoid(struct SSMHANDLE * pSSM)
+void VBoxVHWAImage::vhwaSaveExecVoid(struct SSMHANDLE *pSSM)
 {
     VBOXQGL_SAVE_START(pSSM);
-    int rc = SSMR3PutU32(pSSM, 0);         AssertRC(rc); /* 0 primaries */
+    SSMR3PutU32(pSSM, 0); /* 0 primaries */
     VBOXQGL_SAVE_STOP(pSSM);
 }
 
-void VBoxVHWAImage::vhwaSaveExec(struct SSMHANDLE * pSSM)
+void VBoxVHWAImage::vhwaSaveExec(struct SSMHANDLE *pSSM)
 {
     VBOXQGL_SAVE_START(pSSM);
@@ -3432,5 +3407,5 @@
     const SurfList & primaryList = mDisplay.primaries().surfaces();
     uint32_t cPrimary = (uint32_t)primaryList.size();
-    if(cPrimary &&
+    if (cPrimary &&
             (mDisplay.getVGA() == NULL || mDisplay.getVGA()->handle() == VBOXVHWA_SURFHANDLE_INVALID))
     {
@@ -3438,9 +3413,8 @@
     }
 
-    int rc = SSMR3PutU32(pSSM, cPrimary);         AssertRC(rc);
-    if(cPrimary)
-    {
-        for (SurfList::const_iterator pr = primaryList.begin();
-             pr != primaryList.end(); ++ pr)
+    int rc = SSMR3PutU32(pSSM, cPrimary);
+    if (cPrimary)
+    {
+        for (SurfList::const_iterator pr = primaryList.begin(); pr != primaryList.end(); ++ pr)
         {
             VBoxVHWASurfaceBase *pSurf = *pr;
@@ -3448,10 +3422,10 @@
             bool bVisible = (pSurf == mDisplay.getPrimary());
             uint32_t flags = VBOXVHWA_SCAPS_PRIMARYSURFACE;
-            if(bVisible)
+            if (bVisible)
                 flags |= VBOXVHWA_SCAPS_VISIBLE;
 
-            if(pSurf->handle() != VBOXVHWA_SURFHANDLE_INVALID)
+            if (pSurf->handle() != VBOXVHWA_SURFHANDLE_INVALID)
             {
-                rc = vhwaSaveSurface(pSSM, *pr, flags);    AssertRC(rc);
+                rc = vhwaSaveSurface(pSSM, *pr, flags);
 #ifdef DEBUG
                 --cPrimary;
@@ -3470,8 +3444,7 @@
 
         const OverlayList & overlays = mDisplay.overlays();
-        rc = SSMR3PutU32(pSSM, (uint32_t)overlays.size());         AssertRC(rc);
-
-        for (OverlayList::const_iterator it = overlays.begin();
-             it != overlays.end(); ++ it)
+        rc = SSMR3PutU32(pSSM, (uint32_t)overlays.size());
+
+        for (OverlayList::const_iterator it = overlays.begin(); it != overlays.end(); ++ it)
         {
             VBoxVHWASurfList * pSurfList = *it;
@@ -3479,16 +3452,13 @@
             uint32_t cSurfs = (uint32_t)surfaces.size();
             uint32_t flags = VBOXVHWA_SCAPS_OVERLAY;
-            if(cSurfs > 1)
+            if (cSurfs > 1)
                 flags |= VBOXVHWA_SCAPS_COMPLEX;
-            rc = SSMR3PutU32(pSSM, cSurfs);         AssertRC(rc);
-            for (SurfList::const_iterator sit = surfaces.begin();
-                 sit != surfaces.end(); ++ sit)
-            {
-                rc = vhwaSaveSurface(pSSM, *sit, flags);    AssertRC(rc);
-            }
+            rc = SSMR3PutU32(pSSM, cSurfs);
+            for (SurfList::const_iterator sit = surfaces.begin(); sit != surfaces.end(); ++ sit)
+                rc = vhwaSaveSurface(pSSM, *sit, flags);
 
             bool bVisible = true;
             VBoxVHWASurfaceBase * pOverlayData = pSurfList->current();
-            if(!pOverlayData)
+            if (!pOverlayData)
             {
                 pOverlayData = surfaces.front();
@@ -3496,5 +3466,5 @@
             }
 
-            rc = vhwaSaveOverlayData(pSSM, pOverlayData, bVisible);    AssertRC(rc);
+            rc = vhwaSaveOverlayData(pSSM, pOverlayData, bVisible);
         }
     }
@@ -3505,7 +3475,7 @@
 int VBoxVHWAImage::vhwaLoadVHWAEnable(VHWACommandList * pCmdList)
 {
-    char *buf = (char*)malloc(sizeof(VBOXVHWACMD));
+    char *buf = (char *)malloc(sizeof(VBOXVHWACMD));
     Assert(buf);
-    if(buf)
+    if (buf)
     {
         memset(buf, 0, sizeof(VBOXVHWACMD));
@@ -3524,5 +3494,5 @@
     VBOXQGL_LOAD_START(pSSM);
 
-    if(u32Version > VBOXQGL_STATE_VERSION)
+    if (u32Version > VBOXQGL_STATE_VERSION)
         return VERR_VERSION_MISMATCH;
 
@@ -3531,45 +3501,41 @@
 
     rc = vhwaLoadVHWAEnable(pCmdList); AssertRC(rc);
-    if(RT_SUCCESS(rc))
+    if (RT_SUCCESS(rc))
     {
         rc = SSMR3GetU32(pSSM, &u32); AssertRC(rc);
-        if(RT_SUCCESS(rc))
-        {
-            if(u32Version == 1U && u32 == (~0U)) /* work around the v1 bug */
+        if (RT_SUCCESS(rc))
+        {
+            if (u32Version == 1U && u32 == UINT32_MAX) /* work around the v1 bug */
                 u32 = 0;
-            if(u32)
+            if (u32)
             {
-                for(uint32_t i = 0; i < u32; ++i)
+                for (uint32_t i = 0; i < u32; ++i)
                 {
-                    rc = vhwaLoadSurface(pCmdList, pSSM, 0, u32Version);  AssertRC(rc);
-                    if(RT_FAILURE(rc))
-                        break;
+                    rc = vhwaLoadSurface(pCmdList, pSSM, 0, u32Version);
+                    AssertRCBreak(rc);
                 }
 
-                if(RT_SUCCESS(rc))
+                if (RT_SUCCESS(rc))
                 {
                     rc = SSMR3GetU32(pSSM, &u32); AssertRC(rc);
-                    if(RT_SUCCESS(rc))
+                    if (RT_SUCCESS(rc))
                     {
-                        for(uint32_t i = 0; i < u32; ++i)
+                        for (uint32_t i = 0; i < u32; ++i)
                         {
                             uint32_t cSurfs;
                             rc = SSMR3GetU32(pSSM, &cSurfs); AssertRC(rc);
-                            for(uint32_t j = 0; j < cSurfs; ++j)
+                            for (uint32_t j = 0; j < cSurfs; ++j)
                             {
-                                rc = vhwaLoadSurface(pCmdList, pSSM, cSurfs - 1, u32Version);  AssertRC(rc);
-                                if(RT_FAILURE(rc))
-                                    break;
+                                rc = vhwaLoadSurface(pCmdList, pSSM, cSurfs - 1, u32Version);
+                                AssertRCBreak(rc);
                             }
 
-                            if(RT_SUCCESS(rc))
+                            if (RT_SUCCESS(rc))
                             {
-                                rc = vhwaLoadOverlayData(pCmdList, pSSM, u32Version);  AssertRC(rc);
+                                rc = vhwaLoadOverlayData(pCmdList, pSSM, u32Version);
+                                AssertRCBreak(rc);
                             }
-
-                            if(RT_FAILURE(rc))
-                            {
+                            else
                                 break;
-                            }
                         }
                     }
@@ -3577,8 +3543,9 @@
             }
 #ifdef VBOXQGL_STATE_DEBUG
-            else if(u32Version == 1) /* read the 0 overlay count to ensure the following VBOXQGL_LOAD_STOP succeeds */
+            else if (u32Version == 1) /* read the 0 overlay count to ensure the following VBOXQGL_LOAD_STOP succeeds */
             {
-                rc = SSMR3GetU32(pSSM, &u32); AssertRC(rc);
-                Assert(u32 == 0);
+                rc = SSMR3GetU32(pSSM, &u32);
+                AssertRC(rc);
+                Assert(u32 == 0 || RT_FAILURE(rc));
             }
 #endif
@@ -3623,16 +3590,16 @@
 }
 
-uchar * VBoxVHWAImage::vboxVRAMAddressFromOffset(uint64_t offset)
+uchar *VBoxVHWAImage::vboxVRAMAddressFromOffset(uint64_t offset)
 {
     /** @todo check vramSize() */
-    return (offset != VBOXVHWA_OFFSET64_VOID) ? ((uint8_t*)vramBase()) + offset : NULL;
-}
-
-uint64_t VBoxVHWAImage::vboxVRAMOffsetFromAddress(uchar* addr)
-{
-    return uint64_t(addr - ((uchar*)vramBase()));
-}
-
-uint64_t VBoxVHWAImage::vboxVRAMOffset(VBoxVHWASurfaceBase * pSurf)
+    return (offset != VBOXVHWA_OFFSET64_VOID) ? ((uint8_t *)vramBase()) + offset : NULL;
+}
+
+uint64_t VBoxVHWAImage::vboxVRAMOffsetFromAddress(uchar *addr)
+{
+    return uint64_t(addr - ((uchar *)vramBase()));
+}
+
+uint64_t VBoxVHWAImage::vboxVRAMOffset(VBoxVHWASurfaceBase *pSurf)
 {
     return pSurf->addressAlocated() ? VBOXVHWA_OFFSET64_VOID : vboxVRAMOffsetFromAddress(pSurf->address());
@@ -3644,15 +3611,13 @@
 
 int g_iCur = 0;
-VBoxVHWASurfaceBase * g_apSurf[] = {NULL, NULL, NULL};
-
-void VBoxVHWAImage::vboxDoTestSurfaces(void* context)
-{
-    if(g_iCur >= RT_ELEMENTS(g_apSurf))
+VBoxVHWASurfaceBase *g_apSurf[] = {NULL, NULL, NULL};
+
+void VBoxVHWAImage::vboxDoTestSurfaces(void *context)
+{
+    if (g_iCur >= RT_ELEMENTS(g_apSurf))
         g_iCur = 0;
     VBoxVHWASurfaceBase * pSurf1 = g_apSurf[g_iCur];
-    if(pSurf1)
-    {
+    if (pSurf1)
         pSurf1->getComplexList()->setCurrentVisible(pSurf1);
-    }
 }
 #endif
@@ -3663,8 +3628,7 @@
     mViewport = aRect;
 
-    const SurfList & primaryList = mDisplay.primaries().surfaces();
-
-    for (SurfList::const_iterator pr = primaryList.begin();
-         pr != primaryList.end(); ++ pr)
+    const SurfList &primaryList = mDisplay.primaries().surfaces();
+
+    for (SurfList::const_iterator pr = primaryList.begin(); pr != primaryList.end(); ++pr)
     {
         VBoxVHWASurfaceBase *pSurf = *pr;
@@ -3678,10 +3642,9 @@
     bool bDisplayPrimary = true;
 
-    for (OverlayList::const_iterator it = overlays.begin();
-         it != overlays.end(); ++ it)
-    {
-        VBoxVHWASurfList * pSurfList = *it;
-        const SurfList & surfaces = pSurfList->surfaces();
-        if(surfaces.size())
+    for (OverlayList::const_iterator it = overlays.begin(); it != overlays.end(); ++it)
+    {
+        VBoxVHWASurfList *pSurfList = *it;
+        const SurfList &surfaces = pSurfList->surfaces();
+        if (surfaces.size())
         {
             bool bNotIntersected = !overInter.isEmpty() && surfaces.front()->targRect().contains(overInter);
@@ -3716,10 +3679,9 @@
 bool VBoxVHWAImage::hasVisibleOverlays()
 {
-    const OverlayList & overlays = mDisplay.overlays();
-    for (OverlayList::const_iterator it = overlays.begin();
-         it != overlays.end(); ++ it)
+    const OverlayList &overlays = mDisplay.overlays();
+    for (OverlayList::const_iterator it = overlays.begin(); it != overlays.end(); ++ it)
     {
         VBoxVHWASurfList * pSurfList = *it;
-        if(pSurfList->current() != NULL)
+        if (pSurfList->current() != NULL)
             return true;
     }
@@ -3729,14 +3691,11 @@
 QRect VBoxVHWAImage::overlaysRectUnion()
 {
-    const OverlayList & overlays = mDisplay.overlays();
+    const OverlayList &overlays = mDisplay.overlays();
     VBoxVHWADirtyRect un;
-    for (OverlayList::const_iterator it = overlays.begin();
-         it != overlays.end(); ++ it)
-    {
-        VBoxVHWASurfaceBase * pOverlay = (*it)->current();
-        if(pOverlay != NULL)
-        {
+    for (OverlayList::const_iterator it = overlays.begin(); it != overlays.end(); ++ it)
+    {
+        VBoxVHWASurfaceBase *pOverlay = (*it)->current();
+        if (pOverlay != NULL)
             un.add(pOverlay->targRect());
-        }
     }
     return un.toRect();
@@ -3745,21 +3704,18 @@
 QRect VBoxVHWAImage::overlaysRectIntersection()
 {
-    const OverlayList & overlays = mDisplay.overlays();
+    const OverlayList &overlays = mDisplay.overlays();
     QRect rect;
     VBoxVHWADirtyRect un;
-    for (OverlayList::const_iterator it = overlays.begin();
-         it != overlays.end(); ++ it)
-    {
-        VBoxVHWASurfaceBase * pOverlay = (*it)->current();
-        if(pOverlay != NULL)
-        {
-            if(rect.isNull())
-            {
+    for (OverlayList::const_iterator it = overlays.begin(); it != overlays.end(); ++ it)
+    {
+        VBoxVHWASurfaceBase *pOverlay = (*it)->current();
+        if (pOverlay != NULL)
+        {
+            if (rect.isNull())
                 rect = pOverlay->targRect();
-            }
             else
             {
                 rect = rect.intersected(pOverlay->targRect());
-                if(rect.isNull())
+                if (rect.isNull())
                     break;
             }
@@ -3769,10 +3725,10 @@
 }
 
-void VBoxVHWAImage::vboxDoUpdateRect(const QRect * pRect)
+void VBoxVHWAImage::vboxDoUpdateRect(const QRect *pRect)
 {
     mDisplay.getPrimary()->updatedMem(pRect);
 }
 
-void VBoxVHWAImage::resize(const VBoxFBSizeInfo & size)
+void VBoxVHWAImage::resize(const VBoxFBSizeInfo &size)
 {
     VBOXQGL_CHECKERR(
@@ -3860,5 +3816,5 @@
     else
     {
-        AssertBreakpoint();
+        AssertFailed();
         fallback = true;
     }
@@ -3867,5 +3823,5 @@
     {
         /* we should never come to fallback more now */
-        AssertBreakpoint();
+        AssertFailed();
         /* we don't support either the pixel format or the color depth,
          * fallback to a self-provided 32bpp RGB buffer */
@@ -3878,5 +3834,5 @@
     }
 
-    ulong bytesPerPixel = bitsPerPixel/8;
+    ulong bytesPerPixel = bitsPerPixel / 8;
     const QSize scaledSize = size.scaledSize();
     const ulong displayWidth = scaledSize.isValid() ? scaledSize.width() : bytesPerLine / bytesPerPixel;
@@ -3884,12 +3840,12 @@
 
 #ifdef VBOXQGL_DBG_SURF
-    for(int i = 0; i < RT_ELEMENTS(g_apSurf); i++)
+    for (int i = 0; i < RT_ELEMENTS(g_apSurf); i++)
     {
         VBoxVHWASurfaceBase * pSurf1 = g_apSurf[i];
-        if(pSurf1)
+        if (pSurf1)
         {
             VBoxVHWASurfList *pConstructingList = pSurf1->getComplexList();
             delete pSurf1;
-            if(pConstructingList)
+            if (pConstructingList)
                 delete pConstructingList;
         }
@@ -3897,6 +3853,6 @@
 #endif
 
-    VBoxVHWASurfaceBase * pDisplay = mDisplay.setVGA(NULL);
-    if(pDisplay)
+    VBoxVHWASurfaceBase *pDisplay = mDisplay.setVGA(NULL);
+    if (pDisplay)
         delete pDisplay;
 
@@ -3905,14 +3861,15 @@
     QRect dispRect(0, 0, displayWidth, displayHeight);
     pDisplay = new VBoxVHWASurfaceBase(this,
-            dispSize,
-            dispRect,
-            dispRect,
-            dispRect, /* we do not know viewport at the stage of precise, set as a disp rect, it will be updated on repaint */
-            format,
-            (VBoxVHWAColorKey*)NULL, (VBoxVHWAColorKey*)NULL, (VBoxVHWAColorKey*)NULL, (VBoxVHWAColorKey*)NULL,
+                                       dispSize,
+                                       dispRect,
+                                       dispRect,
+                                       dispRect, /* we do not know viewport at the stage of precise, set as a
+                                                    disp rect, it will be updated on repaint */
+                                       format,
+                                       NULL, NULL, NULL, NULL,
 #ifdef VBOXVHWA_USE_TEXGROUP
-            0,
-#endif
-            0 /* VBOXVHWAIMG_TYPE fFlags */);
+                                       0,
+#endif
+                                       0 /* VBOXVHWAIMG_TYPE fFlags */);
     pDisplay->init(NULL, fUsesGuestVram ? size.VRAM() : NULL);
     mDisplay.setVGA(pDisplay);
@@ -3927,18 +3884,18 @@
         uint32_t height = 60;
 
-        for(int i = 0; i < RT_ELEMENTS(g_apSurf); i++)
+        for (int i = 0; i < RT_ELEMENTS(g_apSurf); i++)
         {
             VBoxVHWAColorFormat tmpFormat(FOURCC_YV12);
             QSize tmpSize(width, height) ;
             VBoxVHWASurfaceBase *pSurf1 = new VBoxVHWASurfaceBase(this, tmpSize,
-                             mDisplay.getPrimary()->rect(),
-                             QRect(0, 0, width, height),
-                             mViewport,
-                             tmpFormat,
-                             NULL, NULL, NULL, &VBoxVHWAColorKey(0,0),
+                                                                  mDisplay.getPrimary()->rect(),
+                                                                  QRect(0, 0, width, height),
+                                                                  mViewport,
+                                                                  tmpFormat,
+                                                                  NULL, NULL, NULL, &VBoxVHWAColorKey(0,0),
 #ifdef VBOXVHWA_USE_TEXGROUP
-                             0,
-#endif
-                             false);
+                                                                  0,
+#endif
+                                                                  false);
 
             Assert(mDisplay.getVGA());
@@ -3946,5 +3903,5 @@
             uchar *addr = pSurf1->address();
             uchar cur = 0;
-            for(uint32_t k = 0; k < width*height; k++)
+            for (uint32_t k = 0; k < width*height; k++)
             {
                 addr[k] = cur;
@@ -3964,7 +3921,6 @@
         updateCmd.u.in.hSrcSurf = (VBOXVHWA_SURFHANDLE)g_apSurf[0];
         updateCmd.u.in.hDstSurf = (VBOXVHWA_SURFHANDLE)pDisplay;
-        updateCmd.u.in.flags =
-                VBOXVHWA_OVER_SHOW
-                | VBOXVHWA_OVER_KEYDESTOVERRIDE;
+        updateCmd.u.in.flags = VBOXVHWA_OVER_SHOW
+                             | VBOXVHWA_OVER_KEYDESTOVERRIDE;
 
         updateCmd.u.in.desc.DstCK.high = 1;
@@ -3973,5 +3929,5 @@
         updateCmd.u.in.dstRect.left = 0;
         updateCmd.u.in.dstRect.right = pDisplay->width();
-        updateCmd.u.in.dstRect.top = (pDisplay->height() - height)/2;
+        updateCmd.u.in.dstRect.top = (pDisplay->height() - height) / 2;
         updateCmd.u.in.dstRect.bottom = updateCmd.u.in.dstRect.top + height;
 
@@ -3988,5 +3944,5 @@
 #endif
 
-//    if(!mOnResizeCmdList.empty())
+//    if (!mOnResizeCmdList.empty())
 //    {
 //        for (VHWACommandList::const_iterator it = mOnResizeCmdList.begin();
@@ -4006,19 +3962,19 @@
 }
 
-VBoxVHWAColorFormat::VBoxVHWAColorFormat (uint32_t bitsPerPixel, uint32_t r, uint32_t g, uint32_t b) :
-    mWidthCompression (1),
-    mHeightCompression (1)
-{
-    init (bitsPerPixel, r, g, b);
-}
-
-VBoxVHWAColorFormat::VBoxVHWAColorFormat (uint32_t fourcc) :
-    mWidthCompression (1),
-    mHeightCompression (1)
-{
-    init (fourcc);
-}
-
-void VBoxVHWAColorFormat::init (uint32_t fourcc)
+VBoxVHWAColorFormat::VBoxVHWAColorFormat (uint32_t bitsPerPixel, uint32_t r, uint32_t g, uint32_t b)
+    : mWidthCompression(1)
+    , mHeightCompression(1)
+{
+    init(bitsPerPixel, r, g, b);
+}
+
+VBoxVHWAColorFormat::VBoxVHWAColorFormat(uint32_t fourcc)
+    : mWidthCompression(1)
+    , mHeightCompression(1)
+{
+    init(fourcc);
+}
+
+void VBoxVHWAColorFormat::init(uint32_t fourcc)
 {
     mDataFormat = fourcc;
@@ -4026,8 +3982,8 @@
     mFormat = GL_BGRA_EXT;//GL_RGBA;
     mType = GL_UNSIGNED_BYTE;
-    mR = VBoxVHWAColorComponent (0xff);
-    mG = VBoxVHWAColorComponent (0xff);
-    mB = VBoxVHWAColorComponent (0xff);
-    mA = VBoxVHWAColorComponent (0xff);
+    mR = VBoxVHWAColorComponent(0xff);
+    mG = VBoxVHWAColorComponent(0xff);
+    mB = VBoxVHWAColorComponent(0xff);
+    mA = VBoxVHWAColorComponent(0xff);
     mBitsPerPixelTex = 32;
 
@@ -4056,5 +4012,5 @@
 }
 
-void VBoxVHWAColorFormat::init (uint32_t bitsPerPixel, uint32_t r, uint32_t g, uint32_t b)
+void VBoxVHWAColorFormat::init(uint32_t bitsPerPixel, uint32_t r, uint32_t g, uint32_t b)
 {
     mBitsPerPixel = bitsPerPixel;
@@ -4067,7 +4023,7 @@
             mFormat = GL_BGRA_EXT;//GL_RGBA;
             mType = GL_UNSIGNED_BYTE;
-            mR = VBoxVHWAColorComponent (r);
-            mG = VBoxVHWAColorComponent (g);
-            mB = VBoxVHWAColorComponent (b);
+            mR = VBoxVHWAColorComponent(r);
+            mG = VBoxVHWAColorComponent(g);
+            mB = VBoxVHWAColorComponent(b);
             break;
         case 24:
@@ -4078,7 +4034,7 @@
             mFormat = GL_BGR_EXT;
             mType = GL_UNSIGNED_BYTE;
-            mR = VBoxVHWAColorComponent (r);
-            mG = VBoxVHWAColorComponent (g);
-            mB = VBoxVHWAColorComponent (b);
+            mR = VBoxVHWAColorComponent(r);
+            mG = VBoxVHWAColorComponent(g);
+            mB = VBoxVHWAColorComponent(b);
             break;
         case 16:
@@ -4088,8 +4044,8 @@
             mInternalFormat = GL_RGB5;
             mFormat = GL_BGR_EXT;
-            mType = GL_UNSIGNED_BYTE; /* TODO" ??? */
-            mR = VBoxVHWAColorComponent (r);
-            mG = VBoxVHWAColorComponent (g);
-            mB = VBoxVHWAColorComponent (b);
+            mType = GL_UNSIGNED_BYTE; /** @todo ??? */
+            mR = VBoxVHWAColorComponent(r);
+            mG = VBoxVHWAColorComponent(g);
+            mB = VBoxVHWAColorComponent(b);
             break;
         case 8:
@@ -4100,5 +4056,5 @@
             mFormat = GL_RED;//GL_RGB;
             mType = GL_UNSIGNED_BYTE;
-            mR = VBoxVHWAColorComponent (0xff);
+            mR = VBoxVHWAColorComponent(0xff);
             break;
         case 1:
@@ -4109,5 +4065,5 @@
             mFormat = GL_COLOR_INDEX;
             mType = GL_BITMAP;
-            mR = VBoxVHWAColorComponent (0x1);
+            mR = VBoxVHWAColorComponent(0x1);
             break;
         default:
@@ -4121,9 +4077,9 @@
 }
 
-bool VBoxVHWAColorFormat::equals (const VBoxVHWAColorFormat & other) const
-{
-    if(fourcc())
+bool VBoxVHWAColorFormat::equals(const VBoxVHWAColorFormat &other) const
+{
+    if (fourcc())
         return fourcc() == other.fourcc();
-    if(other.fourcc())
+    if (other.fourcc())
         return false;
 
@@ -4133,21 +4089,17 @@
 VBoxVHWAColorComponent::VBoxVHWAColorComponent (uint32_t aMask)
 {
-    unsigned f = ASMBitFirstSetU32 (aMask);
-    if(f)
+    unsigned f = ASMBitFirstSetU32(aMask);
+    if (f)
     {
         mOffset = f - 1;
-        f = ASMBitFirstSetU32 (~(aMask >> mOffset));
-        if(f)
-        {
+        f = ASMBitFirstSetU32(~(aMask >> mOffset));
+        if (f)
             mcBits = f - 1;
-        }
         else
-        {
             mcBits = 32 - mOffset;
-        }
-
-        Assert (mcBits);
+
+        Assert(mcBits);
         mMask = (((uint32_t)0xffffffff) >> (32 - mcBits)) << mOffset;
-        Assert (mMask == aMask);
+        Assert(mMask == aMask);
 
         mRange = (mMask >> mOffset) + 1;
@@ -4162,31 +4114,31 @@
 }
 
-void VBoxVHWAColorFormat::pixel2Normalized (uint32_t pix, float *r, float *g, float *b) const
-{
-    *r = mR.colorValNorm (pix);
-    *g = mG.colorValNorm (pix);
-    *b = mB.colorValNorm (pix);
-}
-
-VBoxQGLOverlay::VBoxQGLOverlay ()
-    : mpOverlayWgt (NULL),
-      mpViewport (NULL),
-      mGlOn (false),
-      mOverlayWidgetVisible (false),
-      mOverlayVisible (false),
-      mGlCurrent (false),
-      mProcessingCommands (false),
-      mNeedOverlayRepaint (false),
-      mNeedSetVisible (false),
-      mCmdPipe (),
-      mSettings (),
-      mpSession(),
-      mpShareWgt (NULL),
-      m_id(0)
+void VBoxVHWAColorFormat::pixel2Normalized(uint32_t pix, float *r, float *g, float *b) const
+{
+    *r = mR.colorValNorm(pix);
+    *g = mG.colorValNorm(pix);
+    *b = mB.colorValNorm(pix);
+}
+
+VBoxQGLOverlay::VBoxQGLOverlay()
+    : mpOverlayWgt(NULL)
+    , mpViewport(NULL)
+    , mGlOn(false)
+    , mOverlayWidgetVisible(false)
+    , mOverlayVisible(false)
+    , mGlCurrent(false)
+    , mProcessingCommands(false)
+    , mNeedOverlayRepaint(false)
+    , mNeedSetVisible(false)
+    , mCmdPipe()
+    , mSettings()
+    , mpSession()
+    , mpShareWgt(NULL)
+    , m_id(0)
 {
     /* postpone the gl widget initialization to avoid conflict with 3D on Mac */
 }
 
-void VBoxQGLOverlay::init(QWidget *pViewport, QObject *pPostEventObject,  CSession * aSession, uint32_t id)
+void VBoxQGLOverlay::init(QWidget *pViewport, QObject *pPostEventObject, CSession *aSession, uint32_t id)
 {
     mpViewport = pViewport;
@@ -4200,10 +4152,10 @@
 {
 public:
-    VBoxGLShareWgt() :
-        QGLWidget(new VBoxGLContext(VBoxVHWAImage::vboxGLFormat()))
+    VBoxGLShareWgt()
+        : QGLWidget(new VBoxGLContext(VBoxVHWAImage::vboxGLFormat()))
     {
         /* work-around to disable done current needed to old ATI drivers on Linux */
-        VBoxGLContext *pc = (VBoxGLContext*)context();
-        pc->allowDoneCurrent (false);
+        VBoxGLContext *pc = (VBoxGLContext *)context();
+        pc->allowDoneCurrent(false);
     }
 
@@ -4217,5 +4169,5 @@
 void VBoxQGLOverlay::initGl()
 {
-    if(mpOverlayWgt)
+    if (mpOverlayWgt)
     {
         Assert(mpShareWgt);
@@ -4234,7 +4186,7 @@
 
     mOverlayWidgetVisible = true; /* to ensure it is set hidden with vboxShowOverlay */
-    vboxShowOverlay (false);
-
-    mpOverlayWgt->setMouseTracking (true);
+    vboxShowOverlay(false);
+
+    mpOverlayWgt->setMouseTracking(true);
 }
 
@@ -4273,7 +4225,7 @@
 }
 
-static DECLCALLBACK(void) vbvaVHWAHHCommandFreeCmd(void * pContext)
-{
-    free(pContext);
+static DECLCALLBACK(void) vbvaVHWAHHCommandFreeCmd(void *pvContext)
+{
+    free(pvContext);
 }
 
@@ -4285,10 +4237,9 @@
     if (RT_SUCCESS(rc))
     {
-        for (VHWACommandList::const_iterator sIt = list.begin();
-                    sIt != list.end(); ++ sIt)
+        for (VHWACommandList::const_iterator sIt = list.begin(); sIt != list.end(); ++ sIt)
         {
             VBOXVHWACMD *pCmd = (*sIt);
             VBOXVHWA_HH_CALLBACK_SET(pCmd, vbvaVHWAHHCommandFreeCmd, pCmd);
-            mCmdPipe.postCmd(VBOXVHWA_PIPECMD_VHWA, pCmd);
+            mCmdPipe.postCmd(VBOXVHWA_PIPECMD_VHWA, pCmd, pCmd->enmCmd, false /*fGuestCmd*/);
         }
     }
@@ -4296,8 +4247,10 @@
 }
 
-int VBoxQGLOverlay::onVHWACommand(struct VBOXVHWACMD RT_UNTRUSTED_VOLATILE_GUEST *pCmd)
-{
-    Log(("VHWA Command >>> %#p, %d\n", pCmd, pCmd->enmCmd));
-    switch(pCmd->enmCmd)
+int VBoxQGLOverlay::onVHWACommand(struct VBOXVHWACMD RT_UNTRUSTED_VOLATILE_GUEST *pCmd,
+                                  int /*VBOXVHWACMD_TYPE*/ enmCmdInt, bool fGuestCmd)
+{
+    VBOXVHWACMD_TYPE const enmCmd = (VBOXVHWACMD_TYPE)enmCmdInt;
+    Log(("VHWA Command >>> %#p, %d\n", pCmd, enmCmd));
+    switch (enmCmd)
     {
         case VBOXVHWACMD_TYPE_SURF_FLIP:
@@ -4307,57 +4260,70 @@
         case VBOXVHWACMD_TYPE_HH_CONSTRUCT:
         {
+            pCmd->Flags &= ~VBOXVHWACMD_FLAG_HG_ASYNCH;
+            ASSERT_GUEST_STMT_RETURN(!fGuestCmd, pCmd->rc = VERR_ACCESS_DENIED, VINF_SUCCESS);
             VBOXVHWACMD_HH_CONSTRUCT *pBody = VBOXVHWACMD_BODY_HOST_HEAP(pCmd, VBOXVHWACMD_HH_CONSTRUCT);
+            pCmd->rc = vhwaConstruct(pBody);
+            Log(("VHWA Command <<< Sync %#p, %d\n", pCmd, enmCmd));
+            return VINF_SUCCESS;
+        }
+
+        case VBOXVHWACMD_TYPE_HH_RESET:
+        {
             pCmd->Flags &= ~VBOXVHWACMD_FLAG_HG_ASYNCH;
-            pCmd->rc = vhwaConstruct(pBody);
-            Log(("VHWA Command <<< Sync %#p, %d\n", pCmd, pCmd->enmCmd));
-            return VINF_SUCCESS;
-        }
-        case VBOXVHWACMD_TYPE_HH_RESET:
-        {
+            ASSERT_GUEST_STMT_RETURN(!fGuestCmd, pCmd->rc = VERR_ACCESS_DENIED, VINF_SUCCESS);
             /* we do not post a reset command to the gui thread since this may lead to a deadlock
              * when reset is initiated by the gui thread*/
-            pCmd->Flags &= ~VBOXVHWACMD_FLAG_HG_ASYNCH;
             pCmd->rc = reset();
-            Log(("VHWA Command <<< Sync %#p, %d\n", pCmd, pCmd->enmCmd));
+            Log(("VHWA Command <<< Sync %#p, %d\n", pCmd, enmCmd));
             return VINF_SUCCESS;
         }
+
         case VBOXVHWACMD_TYPE_HH_ENABLE:
             pCmd->Flags &= ~VBOXVHWACMD_FLAG_HG_ASYNCH;
+            ASSERT_GUEST_STMT_RETURN(!fGuestCmd, pCmd->rc = VERR_ACCESS_DENIED, VINF_SUCCESS);
             pCmd->rc = VINF_SUCCESS;
-            Log(("VHWA Command <<< Sync %#p, %d\n", pCmd, pCmd->enmCmd));
+            Log(("VHWA Command <<< Sync %#p, %d\n", pCmd, enmCmd));
             return VINF_SUCCESS;
+
         case VBOXVHWACMD_TYPE_HH_DISABLE:
             pCmd->Flags &= ~VBOXVHWACMD_FLAG_HG_ASYNCH;
+            ASSERT_GUEST_STMT_RETURN(!fGuestCmd, pCmd->rc = VERR_ACCESS_DENIED, VINF_SUCCESS);
             pCmd->rc = VINF_SUCCESS;
-            Log(("VHWA Command <<< Sync %#p, %d\n", pCmd, pCmd->enmCmd));
+            Log(("VHWA Command <<< Sync %#p, %d\n", pCmd, enmCmd));
             return VINF_SUCCESS;
+
         case VBOXVHWACMD_TYPE_HH_SAVESTATE_SAVEBEGIN:
+            pCmd->Flags &= ~VBOXVHWACMD_FLAG_HG_ASYNCH;
+            ASSERT_GUEST_STMT_RETURN(!fGuestCmd, pCmd->rc = VERR_ACCESS_DENIED, VINF_SUCCESS);
             mCmdPipe.disable();
+            pCmd->rc = VINF_SUCCESS;
+            Log(("VHWA Command <<< Sync %#p, %d\n", pCmd, enmCmd));
+            return VINF_SUCCESS;
+
+        case VBOXVHWACMD_TYPE_HH_SAVESTATE_SAVEEND:
+            ASSERT_GUEST_STMT_RETURN(!fGuestCmd, pCmd->rc = VERR_ACCESS_DENIED, VINF_SUCCESS);
             pCmd->Flags &= ~VBOXVHWACMD_FLAG_HG_ASYNCH;
+            mCmdPipe.enable();
             pCmd->rc = VINF_SUCCESS;
-            Log(("VHWA Command <<< Sync %#p, %d\n", pCmd, pCmd->enmCmd));
+            Log(("VHWA Command <<< Sync %#p, %d\n", pCmd, enmCmd));
             return VINF_SUCCESS;
-        case VBOXVHWACMD_TYPE_HH_SAVESTATE_SAVEEND:
-            mCmdPipe.enable();
+
+        case VBOXVHWACMD_TYPE_HH_SAVESTATE_SAVEPERFORM:
+        {
             pCmd->Flags &= ~VBOXVHWACMD_FLAG_HG_ASYNCH;
-            pCmd->rc = VINF_SUCCESS;
-            Log(("VHWA Command <<< Sync %#p, %d\n", pCmd, pCmd->enmCmd));
-            return VINF_SUCCESS;
-        case VBOXVHWACMD_TYPE_HH_SAVESTATE_SAVEPERFORM:
-        {
+            ASSERT_GUEST_STMT_RETURN(!fGuestCmd, pCmd->rc = VERR_ACCESS_DENIED, VINF_SUCCESS);
             VBOXVHWACMD_HH_SAVESTATE_SAVEPERFORM *pSave = VBOXVHWACMD_BODY_HOST_HEAP(pCmd, VBOXVHWACMD_HH_SAVESTATE_SAVEPERFORM);
             PSSMHANDLE pSSM = pSave->pSSM;
             int rc = SSMR3PutU32(pSSM, VBOXQGL_STATE_VERSION); AssertRC(rc);
             if (RT_SUCCESS(rc))
-            {
                 vhwaSaveExec(pSSM);
-            }
+            pCmd->rc = rc;
+            Log(("VHWA Command <<< Sync %#p, %d\n", pCmd, enmCmd));
+            return VINF_SUCCESS;
+        }
+        case VBOXVHWACMD_TYPE_HH_SAVESTATE_LOADPERFORM:
+        {
             pCmd->Flags &= ~VBOXVHWACMD_FLAG_HG_ASYNCH;
-            pCmd->rc = rc;
-            Log(("VHWA Command <<< Sync %#p, %d\n", pCmd, pCmd->enmCmd));
-            return VINF_SUCCESS;
-        }
-        case VBOXVHWACMD_TYPE_HH_SAVESTATE_LOADPERFORM:
-        {
+            ASSERT_GUEST_STMT_RETURN(!fGuestCmd, pCmd->rc = VERR_ACCESS_DENIED, VINF_SUCCESS);
             VBOXVHWACMD_HH_SAVESTATE_LOADPERFORM *pLoad = VBOXVHWACMD_BODY_HOST_HEAP(pCmd, VBOXVHWACMD_HH_SAVESTATE_LOADPERFORM);
             PSSMHANDLE pSSM = pLoad->pSSM;
@@ -4366,5 +4332,6 @@
             if (RT_SUCCESS(rc))
             {
-                rc = vhwaLoadExec(pSSM, u32Version); AssertRC(rc);
+                rc = vhwaLoadExec(pSSM, u32Version);
+                AssertRC(rc);
             }
             else
@@ -4376,9 +4343,9 @@
                     rc = VINF_SUCCESS;
             }
-            pCmd->Flags &= ~VBOXVHWACMD_FLAG_HG_ASYNCH;
             pCmd->rc = rc;
-            Log(("VHWA Command <<< Sync %#p, %d\n", pCmd, pCmd->enmCmd));
+            Log(("VHWA Command <<< Sync %#p, %d\n", pCmd, enmCmd));
             return VINF_SUCCESS;
         }
+
         case VBOXVHWACMD_TYPE_QUERY_INFO1:
         {
@@ -4392,20 +4359,21 @@
             /* do NOT break!! make it proceed asynchronously */
         }
+
         default:
             break;
     }
 
-    Log(("VHWA Command --- Going Async %#p, %d\n", pCmd, pCmd->enmCmd));
+    Log(("VHWA Command --- Going Async %#p, %d\n", pCmd, enmCmd));
     /* indicate that we process and complete the command asynchronously */
     pCmd->Flags |= VBOXVHWACMD_FLAG_HG_ASYNCH;
 
-    mCmdPipe.postCmd(VBOXVHWA_PIPECMD_VHWA, (void *)pCmd);
+    mCmdPipe.postCmd(VBOXVHWA_PIPECMD_VHWA, (void *)pCmd, enmCmd, fGuestCmd);
     return VINF_CALLBACK_RETURN;
 
 }
 
-void VBoxQGLOverlay::onVHWACommandEvent(QEvent * pEvent)
-{
-    VBoxVHWACommandProcessEvent *pVhwaEvent = (VBoxVHWACommandProcessEvent*)pEvent;
+void VBoxQGLOverlay::onVHWACommandEvent(QEvent *pEvent)
+{
+    VBoxVHWACommandProcessEvent *pVhwaEvent = (VBoxVHWACommandProcessEvent *)pEvent;
     /* sanity actually */
     pVhwaEvent->setProcessed();
@@ -4427,6 +4395,5 @@
 }
 
-bool VBoxQGLOverlay::onNotifyUpdate(ULONG uX, ULONG uY,
-                                    ULONG uW, ULONG uH)
+bool VBoxQGLOverlay::onNotifyUpdate(ULONG uX, ULONG uY, ULONG uW, ULONG uH)
 {
     /* Prepare corresponding viewport part: */
@@ -4439,8 +4406,8 @@
     {
         /* Calculate corresponding scale-factors: */
-        const double xScaleFactor = mSizeInfo.visualState() == UIVisualStateType_Scale ?
-                                    (double)scaledSize.width()  / mSizeInfo.width()  : dScaleFactor;
-        const double yScaleFactor = mSizeInfo.visualState() == UIVisualStateType_Scale ?
-                                    (double)scaledSize.height() / mSizeInfo.height() : dScaleFactor;
+        const double xScaleFactor = mSizeInfo.visualState() == UIVisualStateType_Scale
+                                  ? (double)scaledSize.width()  / mSizeInfo.width()  : dScaleFactor;
+        const double yScaleFactor = mSizeInfo.visualState() == UIVisualStateType_Scale
+                                  ? (double)scaledSize.height() / mSizeInfo.height() : dScaleFactor;
         /* Adjust corresponding viewport part: */
         rect.moveTo((int)floor((double)rect.x() * xScaleFactor) - 1,
@@ -4466,10 +4433,10 @@
      * so no not check for m_fUnused here,
      * mOverlay will store the required info for us */
-    mCmdPipe.postCmd(VBOXVHWA_PIPECMD_PAINT, &rect);
+    mCmdPipe.postCmd(VBOXVHWA_PIPECMD_PAINT, &rect, -1, false);
 
     return true;
 }
 
-void VBoxQGLOverlay::onResizeEventPostprocess (const VBoxFBSizeInfo &re, const QPoint & topLeft)
+void VBoxQGLOverlay::onResizeEventPostprocess(const VBoxFBSizeInfo &re, const QPoint &topLeft)
 {
     mSizeInfo = re;
@@ -4494,9 +4461,8 @@
     if (!mOnResizeCmdList.empty())
     {
-        for (VHWACommandList::const_iterator it = mOnResizeCmdList.begin();
-             it != mOnResizeCmdList.end(); ++ it)
-        {
-            VBOXVHWACMD * pCmd = (*it);
-            vboxDoVHWACmdExec(pCmd);
+        for (VHWACommandList::const_iterator it = mOnResizeCmdList.begin(); it != mOnResizeCmdList.end(); ++ it)
+        {
+            VBOXVHWACMD *pCmd = (*it);
+            vboxDoVHWACmdExec(pCmd, pCmd->enmCmd, false);
             free(pCmd);
         }
@@ -4510,44 +4476,43 @@
 void VBoxQGLOverlay::repaintMain()
 {
-    if(mMainDirtyRect.isClear())
+    if (mMainDirtyRect.isClear())
         return;
 
     const QRect &rect = mMainDirtyRect.rect();
-    if(mOverlayWidgetVisible)
-    {
-        if(mOverlayViewport.contains(rect))
+    if (mOverlayWidgetVisible)
+        if (mOverlayViewport.contains(rect))
             return;
-    }
-
-    mpViewport->repaint (rect.x() - mContentsTopLeft.x(),
-            rect.y() - mContentsTopLeft.y(),
-            rect.width(), rect.height());
+
+    mpViewport->repaint(rect.x() - mContentsTopLeft.x(),
+                        rect.y() - mContentsTopLeft.y(),
+                        rect.width(),
+                        rect.height());
 
     mMainDirtyRect.clear();
 }
 
-void VBoxQGLOverlay::vboxDoVHWACmd(void RT_UNTRUSTED_VOLATILE_GUEST *cmd)
-{
-    vboxDoVHWACmdExec(cmd);
+void VBoxQGLOverlay::vboxDoVHWACmd(void RT_UNTRUSTED_VOLATILE_GUEST *pvCmd, int /*VBOXVHWACMD_TYPE*/ enmCmd, bool fGuestCmd)
+{
+    vboxDoVHWACmdExec(pvCmd, enmCmd, fGuestCmd);
 
     CDisplay display = mpSession->GetConsole().GetDisplay();
-    Assert (!display.isNull());
-
-    Log(("VHWA Command <<< Async %#p, %d\n", cmd, ((VBOXVHWACMD *)cmd)->enmCmd));
-
-    display.CompleteVHWACommand((BYTE*)cmd);
+    Assert(!display.isNull());
+
+    Log(("VHWA Command <<< Async %#p, %d\n", pvCmd, enmCmd));
+
+    display.CompleteVHWACommand((BYTE *)pvCmd);
 }
 
 bool VBoxQGLOverlay::vboxSynchGl()
 {
-    VBoxVHWASurfaceBase * pVGA = mOverlayImage.vgaSurface();
-    if(pVGA
-            && mSizeInfo.pixelFormat() == pVGA->pixelFormat().toVBoxPixelFormat()
-            && mSizeInfo.VRAM() == pVGA->address()
-            && mSizeInfo.bitsPerPixel() == pVGA->bitsPerPixel()
-            && mSizeInfo.bytesPerLine() == pVGA->bytesPerLine()
-            && mSizeInfo.width() == pVGA->width()
-            && mSizeInfo.height() == pVGA->height()
-            )
+    VBoxVHWASurfaceBase *pVGA = mOverlayImage.vgaSurface();
+    if (   pVGA
+        && mSizeInfo.pixelFormat()  == pVGA->pixelFormat().toVBoxPixelFormat()
+        && mSizeInfo.VRAM()         == pVGA->address()
+        && mSizeInfo.bitsPerPixel() == pVGA->bitsPerPixel()
+        && mSizeInfo.bytesPerLine() == pVGA->bytesPerLine()
+        && mSizeInfo.width()        == pVGA->width()
+        && mSizeInfo.height()       == pVGA->height()
+       )
     {
         return false;
@@ -4561,10 +4526,10 @@
 void VBoxQGLOverlay::vboxSetGlOn(bool on)
 {
-    if(on == mGlOn)
+    if (on == mGlOn)
         return;
 
     mGlOn = on;
 
-    if(on)
+    if (on)
     {
         /* need to ensure we have gl functions initialized */
@@ -4590,5 +4555,5 @@
 void VBoxQGLOverlay::vboxDoCheckUpdateViewport()
 {
-    if(!mOverlayVisible)
+    if (!mOverlayVisible)
     {
         vboxShowOverlay(false);
@@ -4601,11 +4566,9 @@
     QRect overVp = fbVp.intersected(mOverlayViewport);
 
-    if(overVp.isEmpty())
-    {
+    if (overVp.isEmpty())
         vboxShowOverlay(false);
-    }
     else
     {
-        if(overVp != mOverlayImage.vboxViewport())
+        if (overVp != mOverlayImage.vboxViewport())
         {
             makeCurrent();
@@ -4627,20 +4590,18 @@
 void VBoxQGLOverlay::vboxShowOverlay(bool show)
 {
-    if(mOverlayWidgetVisible != show)
+    if (mOverlayWidgetVisible != show)
     {
         mpOverlayWgt->setVisible(show);
         mOverlayWidgetVisible = show;
         mGlCurrent = false;
-        if(!show)
-        {
+        if (!show)
             mMainDirtyRect.add(mOverlayImage.vboxViewport());
-        }
-    }
-}
-
-void VBoxQGLOverlay::vboxCheckUpdateOverlay(const QRect & rect)
+    }
+}
+
+void VBoxQGLOverlay::vboxCheckUpdateOverlay(const QRect &rect)
 {
     QRect overRect(mpOverlayWgt->pos(), mpOverlayWgt->size());
-    if(overRect.x() != rect.x() || overRect.y() != rect.y())
+    if (overRect.x() != rect.x() || overRect.y() != rect.y())
     {
 #if defined(RT_OS_WINDOWS)
@@ -4653,5 +4614,5 @@
     }
 
-    if(overRect.width() != rect.width() || overRect.height() != rect.height())
+    if (overRect.width() != rect.width() || overRect.height() != rect.height())
     {
 #if defined(RT_OS_WINDOWS)
@@ -4665,8 +4626,8 @@
 }
 
-void VBoxQGLOverlay::addMainDirtyRect(const QRect & aRect)
+void VBoxQGLOverlay::addMainDirtyRect(const QRect &aRect)
 {
     mMainDirtyRect.add(aRect);
-    if(mGlOn)
+    if (mGlOn)
     {
         mOverlayImage.vboxDoUpdateRect(&aRect);
@@ -4678,19 +4639,17 @@
 {
     int rc = mOverlayImage.vhwaSurfaceUnlock(pCmd);
-    VBoxVHWASurfaceBase * pVGA = mOverlayImage.vgaSurface();
-    const VBoxVHWADirtyRect & rect = pVGA->getDirtyRect();
+    VBoxVHWASurfaceBase *pVGA = mOverlayImage.vgaSurface();
+    const VBoxVHWADirtyRect &rect = pVGA->getDirtyRect();
     mNeedOverlayRepaint = true;
-    if(!rect.isClear())
-    {
+    if (!rect.isClear())
         mMainDirtyRect.add(rect);
-    }
     return rc;
 }
 
-void VBoxQGLOverlay::vboxDoVHWACmdExec(void RT_UNTRUSTED_VOLATILE_GUEST *cmd)
-{
-    struct VBOXVHWACMD RT_UNTRUSTED_VOLATILE_GUEST *pCmd = (struct VBOXVHWACMD RT_UNTRUSTED_VOLATILE_GUEST *)cmd;
-    VBOXVHWACMD_TYPE enmCmd = pCmd->enmCmd;
-    RT_UNTRUSTED_NONVOLATILE_COPY_FENCE();
+void VBoxQGLOverlay::vboxDoVHWACmdExec(void RT_UNTRUSTED_VOLATILE_GUEST *pvCmd, int /*VBOXVHWACMD_TYPE*/ enmCmdInt, bool fGuestCmd)
+{
+    struct VBOXVHWACMD RT_UNTRUSTED_VOLATILE_GUEST *pCmd = (struct VBOXVHWACMD RT_UNTRUSTED_VOLATILE_GUEST *)pvCmd;
+    VBOXVHWACMD_TYPE enmCmd = (VBOXVHWACMD_TYPE)enmCmdInt;
+
     switch (enmCmd)
     {
@@ -4703,5 +4662,7 @@
             pCmd->rc = mOverlayImage.vhwaSurfaceCanCreate(pBody);
             Assert(!mGlOn == !mOverlayImage.hasSurfaces());
-        } break;
+            break;
+        }
+
         case VBOXVHWACMD_TYPE_SURF_CREATE:
         {
@@ -4712,5 +4673,5 @@
             vboxSetGlOn(true);
             pCmd->rc = mOverlayImage.vhwaSurfaceCreate(pBody);
-            if(!mOverlayImage.hasSurfaces())
+            if (!mOverlayImage.hasSurfaces())
             {
                 vboxSetGlOn(false);
@@ -4719,5 +4680,5 @@
             {
                 mOverlayVisible = mOverlayImage.hasVisibleOverlays();
-                if(mOverlayVisible)
+                if (mOverlayVisible)
                 {
                     mOverlayViewport = mOverlayImage.overlaysRectUnion();
@@ -4728,5 +4689,7 @@
 
             Assert(!mGlOn == !mOverlayImage.hasSurfaces());
-        } break;
+            break;
+        }
+
         case VBOXVHWACMD_TYPE_SURF_DESTROY:
         {
@@ -4736,5 +4699,5 @@
             makeCurrent();
             pCmd->rc = mOverlayImage.vhwaSurfaceDestroy(pBody);
-            if(!mOverlayImage.hasSurfaces())
+            if (!mOverlayImage.hasSurfaces())
             {
                 vboxSetGlOn(false);
@@ -4743,5 +4706,5 @@
             {
                 mOverlayVisible = mOverlayImage.hasVisibleOverlays();
-                if(mOverlayVisible)
+                if (mOverlayVisible)
                 {
                     mOverlayViewport = mOverlayImage.overlaysRectUnion();
@@ -4751,5 +4714,7 @@
             }
             Assert(!mGlOn == !mOverlayImage.hasSurfaces());
-        } break;
+            break;
+        }
+
         case VBOXVHWACMD_TYPE_SURF_LOCK:
         {
@@ -4760,5 +4725,7 @@
             pCmd->rc = mOverlayImage.vhwaSurfaceLock(pBody);
             Assert(!mGlOn == !mOverlayImage.hasSurfaces());
-        } break;
+            break;
+        }
+
         case VBOXVHWACMD_TYPE_SURF_UNLOCK:
         {
@@ -4770,5 +4737,7 @@
             Assert(!mGlOn == !mOverlayImage.hasSurfaces());
             /* mNeedOverlayRepaint is set inside the vhwaSurfaceUnlock */
-        } break;
+            break;
+        }
+
         case VBOXVHWACMD_TYPE_SURF_BLT:
         {
@@ -4780,5 +4749,7 @@
             mNeedOverlayRepaint = true;
             Assert(!mGlOn == !mOverlayImage.hasSurfaces());
-        } break;
+            break;
+        }
+
         case VBOXVHWACMD_TYPE_SURF_FLIP:
         {
@@ -4790,5 +4761,7 @@
             mNeedOverlayRepaint = true;
             Assert(!mGlOn == !mOverlayImage.hasSurfaces());
-        } break;
+            break;
+        }
+
         case VBOXVHWACMD_TYPE_SURF_OVERLAY_UPDATE:
         {
@@ -4799,5 +4772,5 @@
             pCmd->rc = mOverlayImage.vhwaSurfaceOverlayUpdate(pBody);
             mOverlayVisible = mOverlayImage.hasVisibleOverlays();
-            if(mOverlayVisible)
+            if (mOverlayVisible)
             {
                 mOverlayViewport = mOverlayImage.overlaysRectUnion();
@@ -4806,5 +4779,7 @@
             mNeedOverlayRepaint = true;
             Assert(!mGlOn == !mOverlayImage.hasSurfaces());
-        } break;
+            break;
+        }
+
         case VBOXVHWACMD_TYPE_SURF_OVERLAY_SETPOSITION:
         {
@@ -4815,5 +4790,5 @@
             pCmd->rc = mOverlayImage.vhwaSurfaceOverlaySetPosition(pBody);
             mOverlayVisible = mOverlayImage.hasVisibleOverlays();
-            if(mOverlayVisible)
+            if (mOverlayVisible)
             {
                 mOverlayViewport = mOverlayImage.overlaysRectUnion();
@@ -4822,5 +4797,7 @@
             mNeedOverlayRepaint = true;
             Assert(!mGlOn == !mOverlayImage.hasSurfaces());
-        } break;
+            break;
+        }
+
 #ifdef VBOX_WITH_WDDM
         case VBOXVHWACMD_TYPE_SURF_COLORFILL:
@@ -4833,5 +4810,6 @@
             mNeedOverlayRepaint = true;
             Assert(!mGlOn == !mOverlayImage.hasSurfaces());
-        } break;
+            break;
+        }
 #endif
         case VBOXVHWACMD_TYPE_SURF_COLORKEY_SET:
@@ -4846,5 +4824,7 @@
             mNeedOverlayRepaint = true;
             Assert(!mGlOn == !mOverlayImage.hasSurfaces());
-        } break;
+            break;
+        }
+
         case VBOXVHWACMD_TYPE_QUERY_INFO1:
         {
@@ -4855,5 +4835,7 @@
             pCmd->rc = mOverlayImage.vhwaQueryInfo1(pBody);
             Assert(!mGlOn == !mOverlayImage.hasSurfaces());
-        } break;
+            break;
+        }
+
         case VBOXVHWACMD_TYPE_QUERY_INFO2:
         {
@@ -4864,5 +4846,7 @@
             pCmd->rc = mOverlayImage.vhwaQueryInfo2(pBody);
             Assert(!mGlOn == !mOverlayImage.hasSurfaces());
-        } break;
+            break;
+        }
+
         case VBOXVHWACMD_TYPE_ENABLE:
             Assert(!mGlOn == !mOverlayImage.hasSurfaces());
@@ -4871,14 +4855,19 @@
             pCmd->rc = VINF_SUCCESS;
             break;
+
         case VBOXVHWACMD_TYPE_DISABLE:
             pCmd->rc = VINF_SUCCESS;
             break;
+
         case VBOXVHWACMD_TYPE_HH_CONSTRUCT:
         {
+            ASSERT_GUEST_STMT_RETURN_VOID(!fGuestCmd, pCmd->rc = VERR_ACCESS_DENIED);
             VBOXVHWACMD_HH_CONSTRUCT *pBody = VBOXVHWACMD_BODY_HOST_HEAP(pCmd, VBOXVHWACMD_HH_CONSTRUCT);
             Assert(!mGlOn == !mOverlayImage.hasSurfaces());
             pCmd->rc = vhwaConstruct(pBody);
             Assert(!mGlOn == !mOverlayImage.hasSurfaces());
-        } break;
+            break;
+        }
+
 #ifdef VBOX_WITH_WDDM
         case VBOXVHWACMD_TYPE_SURF_GETINFO:
@@ -4888,6 +4877,8 @@
             pCmd->rc = mOverlayImage.vhwaSurfaceGetInfo(pBody);
             Assert(!mGlOn == !mOverlayImage.hasSurfaces());
-        } break;
-#endif
+            break;
+        }
+#endif
+
         default:
             AssertFailed();
@@ -4908,9 +4899,9 @@
 {
     Assert(uPass == SSM_PASS_FINAL); NOREF(uPass);
-    VBoxQGLOverlay * fb = (VBoxQGLOverlay*)pvUser;
+    VBoxQGLOverlay *fb = (VBoxQGLOverlay *)pvUser;
     return fb->vhwaLoadExec(pSSM, u32Version);
 }
 
-int VBoxQGLOverlay::vhwaLoadExec(struct SSMHANDLE * pSSM, uint32_t u32Version)
+int VBoxQGLOverlay::vhwaLoadExec(struct SSMHANDLE *pSSM, uint32_t u32Version)
 {
     int rc = VBoxVHWAImage::vhwaLoadExec(&mOnResizeCmdList, pSSM, u32Version);
@@ -4927,5 +4918,5 @@
 }
 
-void VBoxQGLOverlay::vhwaSaveExec(struct SSMHANDLE * pSSM)
+void VBoxQGLOverlay::vhwaSaveExec(struct SSMHANDLE *pSSM)
 {
     mOverlayImage.vhwaSaveExec(pSSM);
@@ -4942,21 +4933,20 @@
     char * pszName = nameFuf;
     sprintf(pszName, "%s%d", VBOXQGL_STATE_NAMEBASE, intsId);
-    int rc = SSMR3RegisterExternal(
-            pUVM,                   /* The VM handle*/
-            pszName,                /* Data unit name. */
-            intsId,                 /* The instance identifier of the data unit.
-                                     * This must together with the name be unique. */
-            VBOXQGL_STATE_VERSION,   /* Data layout version number. */
-            128,             /* The approximate amount of data in the unit.
-                              * Only for progress indicators. */
-            NULL, NULL, NULL, /* pfnLiveXxx */
-            NULL,            /* Prepare save callback, optional. */
-            NULL, //vboxQGLOverlaySaveExec, /* Execute save callback, optional. */
-            NULL,            /* Done save callback, optional. */
-            NULL,            /* Prepare load callback, optional. */
-            vboxQGLOverlayLoadExec, /* Execute load callback, optional. */
-            NULL,            /* Done load callback, optional. */
-            this             /* User argument. */
-            );
+    int rc = SSMR3RegisterExternal(pUVM,                    /* The VM handle*/
+                                   pszName,                 /* Data unit name. */
+                                   intsId,                  /* The instance identifier of the data unit.
+                                                             * This must together with the name be unique. */
+                                   VBOXQGL_STATE_VERSION,   /* Data layout version number. */
+                                   128,                     /* The approximate amount of data in the unit.
+                                                             * Only for progress indicators. */
+                                   NULL, NULL, NULL,        /* pfnLiveXxx */
+                                   NULL,                    /* Prepare save callback, optional. */
+                                   NULL, //vboxQGLOverlaySaveExec, /* Execute save callback, optional. */
+                                   NULL,                    /* Done save callback, optional. */
+                                   NULL,                    /* Prepare load callback, optional. */
+                                   vboxQGLOverlayLoadExec,  /* Execute load callback, optional. */
+                                   NULL,                    /* Done load callback, optional. */
+                                   this                     /* User argument. */
+                                   );
     AssertRC(rc);
     if (RT_SUCCESS(rc))
@@ -4972,5 +4962,5 @@
 {
 #ifndef DEBUG_misha
-    if(!g_bVBoxVHWAChecked)
+    if (!g_bVBoxVHWAChecked)
 #endif
     {
@@ -5000,8 +4990,10 @@
             addMainDirtyRect(pCmd->rect());
             break;
+
 #ifdef VBOX_WITH_VIDEOHWACCEL
         case VBOXVHWA_PIPECMD_VHWA:
-            vboxDoVHWACmd(pCmd->vhwaCmd());
+            vboxDoVHWACmd(pCmd->vhwaCmdPtr(), pCmd->vhwaCmdType(), pCmd->vhwaIsGuestCmd());
             break;
+
         case VBOXVHWA_PIPECMD_FUNC:
         {
@@ -5016,9 +5008,9 @@
 }
 
-VBoxVHWACommandElementProcessor::VBoxVHWACommandElementProcessor() :
-    m_pNotifyObject(NULL),
-    mpCurCmd(NULL),
-    mbResetting(false),
-    mcDisabled(0)
+VBoxVHWACommandElementProcessor::VBoxVHWACommandElementProcessor()
+    : m_pNotifyObject(NULL)
+    , mpCurCmd(NULL)
+    , mbResetting(false)
+    , mcDisabled(0)
 {
     int rc = RTCritSectInit(&mCritSect);
@@ -5045,5 +5037,6 @@
 }
 
-void VBoxVHWACommandElementProcessor::postCmd(VBOXVHWA_PIPECMD_TYPE aType, void *pvData)
+void VBoxVHWACommandElementProcessor::postCmd(VBOXVHWA_PIPECMD_TYPE aType, void *pvData,
+                                              int /*VBOXVHWACMD_TYPE*/ enmCmd, bool fGuestCmd)
 {
     QObject *pNotifyObject = NULL;
@@ -5054,6 +5047,6 @@
     RTCritSectEnter(&mCritSect);
 
-    VBoxVHWACommandElement * pCmd = m_pCmdEntryCache->alloc();
-    if(!pCmd)
+    VBoxVHWACommandElement *pCmd = m_pCmdEntryCache->alloc();
+    if (!pCmd)
     {
         VBOXQGLLOG(("!!!no more free elements!!!\n"));
@@ -5065,5 +5058,5 @@
 #endif
     }
-    pCmd->setData(aType, pvData);
+    pCmd->setData(aType, pvData, enmCmd, fGuestCmd);
 
     /* 2. if can add to current*/
@@ -5081,5 +5074,5 @@
     {
         VBoxVHWACommandProcessEvent *pCurrentEvent = new VBoxVHWACommandProcessEvent();
-        QApplication::postEvent (pNotifyObject, pCurrentEvent);
+        QApplication::postEvent(pNotifyObject, pCurrentEvent);
         m_NotifyObjectRefs.dec();
     }
@@ -5108,5 +5101,5 @@
     {
         /* NULL can not be references */
-        Assert (!m_NotifyObjectRefs.refs());
+        Assert(!m_NotifyObjectRefs.refs());
     }
 
@@ -5135,5 +5128,5 @@
     {
         /* cEventsNeeded can only be != 0 if pNotifyObject is valid */
-        Assert (pNotifyObject);
+        Assert(pNotifyObject);
         for (int i = 0; i < cEventsNeeded; ++i)
         {
@@ -5147,5 +5140,5 @@
 void VBoxVHWACommandElementProcessor::doneCmd()
 {
-    VBoxVHWACommandElement * pEl;
+    VBoxVHWACommandElement *pEl;
     RTCritSectEnter(&mCritSect);
     pEl = mpCurCmd;
@@ -5158,7 +5151,7 @@
 }
 
-VBoxVHWACommandElement * VBoxVHWACommandElementProcessor::getCmd()
-{
-    VBoxVHWACommandElement * pEl = NULL;
+VBoxVHWACommandElement *VBoxVHWACommandElementProcessor::getCmd()
+{
+    VBoxVHWACommandElement *pEl = NULL;
     RTCritSectEnter(&mCritSect);
 
@@ -5173,5 +5166,5 @@
     if (mcDisabled)
     {
-        QObject * pNotifyObject = NULL;
+        QObject *pNotifyObject = NULL;
 
         if (!RTListIsEmpty(&mCommandList))
@@ -5211,13 +5204,11 @@
 void VBoxVHWACommandElementProcessor::reset(CDisplay *pDisplay)
 {
-    VBoxVHWACommandElement *pCur, *pNext;
-
     RTCritSectEnter(&mCritSect);
 
     mbResetting = true;
 
-    if(mpCurCmd)
-    {
-        for(;;)
+    if (mpCurCmd)
+    {
+        for (;;)
         {
             RTCritSectLeave(&mCritSect);
@@ -5225,5 +5216,5 @@
             RTCritSectEnter(&mCritSect);
             /* it is assumed no one sends any new commands while reset is in progress */
-            if(!mpCurCmd)
+            if (!mpCurCmd)
             {
                 break;
@@ -5234,28 +5225,31 @@
     RTCritSectLeave(&mCritSect);
 
+    VBoxVHWACommandElement *pCur, *pNext;
     RTListForEachSafeCpp(&mCommandList, pCur, pNext, VBoxVHWACommandElement, ListNode)
     {
-        switch(pCur->type())
+        switch (pCur->type())
         {
 #ifdef VBOX_WITH_VIDEOHWACCEL
-        case VBOXVHWA_PIPECMD_VHWA:
-            {
-                struct VBOXVHWACMD RT_UNTRUSTED_VOLATILE_GUEST *pCmd = pCur->vhwaCmd();
-                pCmd->rc = VERR_INVALID_STATE;
-                Log(("VHWA Command <<< Async RESET %#p, %d\n", pCmd, pCmd->enmCmd));
-                pDisplay->CompleteVHWACommand((BYTE *)pCmd);
-            }
-            break;
-        case VBOXVHWA_PIPECMD_FUNC:
-            /* should not happen, don't handle this for now */
-            AssertFailed();
-            break;
-#endif
-        case VBOXVHWA_PIPECMD_PAINT:
-            break;
-        default:
-            /* should not happen, don't handle this for now */
-            AssertFailed();
-            break;
+            case VBOXVHWA_PIPECMD_VHWA:
+                {
+                    struct VBOXVHWACMD RT_UNTRUSTED_VOLATILE_GUEST *pCmd = pCur->vhwaCmdPtr();
+                    pCmd->rc = VERR_INVALID_STATE;
+                    Log(("VHWA Command <<< Async RESET %#p, %d\n", pCmd, pCmd->enmCmd));
+                    pDisplay->CompleteVHWACommand((BYTE *)pCmd);
+                }
+                break;
+
+            case VBOXVHWA_PIPECMD_FUNC:
+                /* should not happen, don't handle this for now */
+                AssertFailed();
+                break;
+#endif
+            case VBOXVHWA_PIPECMD_PAINT:
+                break;
+
+            default:
+                /* should not happen, don't handle this for now */
+                AssertFailed();
+                break;
         }
 
@@ -5271,114 +5265,108 @@
 }
 
-#define VBOXVHWACOMMANDELEMENTLISTBEGIN_MAGIC 0x89abcdef
-#define VBOXVHWACOMMANDELEMENTLISTEND_MAGIC   0xfedcba98
-
-int VBoxVHWACommandElementProcessor::loadExec (struct SSMHANDLE * pSSM, uint32_t u32Version, void *pvVRAM)
+#define VBOXVHWACOMMANDELEMENTLISTBEGIN_MAGIC UINT32_C(0x89abcdef)
+#define VBOXVHWACOMMANDELEMENTLISTEND_MAGIC   UINT32_C(0xfedcba98)
+
+int VBoxVHWACommandElementProcessor::loadExec(struct SSMHANDLE *pSSM, uint32_t u32Version, void *pvVRAM)
 {
     uint32_t u32;
+
+    Q_UNUSED(u32Version);
+
+    int rc = SSMR3GetU32(pSSM, &u32);
+    AssertRCReturn(rc, rc);
+    AssertReturn(u32 == VBOXVHWACOMMANDELEMENTLISTBEGIN_MAGIC, VERR_INVALID_MAGIC);
+
+    SSMR3GetU32(pSSM, &u32);
     bool b;
+    rc = SSMR3GetBool(pSSM, &b);
+    AssertRCReturn(rc, rc);
+
+//    m_NotifyObjectRefs = VBoxVHWARefCounter(u32);
+    bool fContinue = true;
+    do
+    {
+        rc = SSMR3GetU32(pSSM, &u32);
+        AssertRCReturn(rc, rc);
+
+        bool fNewEvent;
+        switch (u32)
+        {
+            case VBOXVHWA_PIPECMD_PAINT:
+            {
+                int x,y,w,h;
+                rc = SSMR3GetS32(pSSM, &x);
+                rc = SSMR3GetS32(pSSM, &y);
+                rc = SSMR3GetS32(pSSM, &w);
+                rc = SSMR3GetS32(pSSM, &h);
+                rc = SSMR3GetBool(pSSM, &fNewEvent);
+                AssertRCReturn(rc, rc);
+
+                QRect r = QRect(x, y, w, h);
+                postCmd(VBOXVHWA_PIPECMD_PAINT, &r, -1, false);
+                break;
+            }
+
+            case VBOXVHWA_PIPECMD_VHWA:
+            {
+                uint32_t offCmd;
+                rc = SSMR3GetU32(pSSM, &offCmd);
+                rc = SSMR3GetBool(pSSM, &fNewEvent);
+                AssertRCReturn(rc, rc);
+
+                VBOXVHWACMD *pCmd = (VBOXVHWACMD *)(((uint8_t *)pvVRAM) + offCmd);
+                postCmd(VBOXVHWA_PIPECMD_VHWA, pCmd, pCmd->enmCmd, true);
+                break;
+            }
+
+            case VBOXVHWACOMMANDELEMENTLISTEND_MAGIC:
+                fContinue = false;
+                break;
+
+            default:
+                AssertLogRelMsgFailed(("u32=%#x\n", u32));
+                break;
+        }
+
+    } while (fContinue && RT_SUCCESS(rc));
+
+    return rc;
+}
+
+void VBoxVHWACommandElementProcessor::saveExec(struct SSMHANDLE *pSSM, void *pvVRAM)
+{
     int rc;
 
-    Q_UNUSED(u32Version);
-
-    rc = SSMR3GetU32(pSSM, &u32); AssertRC(rc);
-    if (RT_SUCCESS(rc))
-    {
-        Assert(u32 == VBOXVHWACOMMANDELEMENTLISTBEGIN_MAGIC);
-        if (u32 == VBOXVHWACOMMANDELEMENTLISTBEGIN_MAGIC)
-        {
-            rc = SSMR3GetU32(pSSM, &u32);
-            rc = SSMR3GetBool(pSSM, &b);         AssertRC(rc);
-        //    m_NotifyObjectRefs = VBoxVHWARefCounter(u32);
-            bool bContinue = true;
-            do
-            {
-                rc = SSMR3GetU32(pSSM, &u32);         AssertRC(rc);
-                if (RT_SUCCESS(rc))
-                {
-                    bool bNewEvent;
-                    switch (u32)
-                    {
-                        case VBOXVHWA_PIPECMD_PAINT:
-                        {
-                            int x,y,w,h;
-                            rc = SSMR3GetS32(pSSM, &x);         AssertRC(rc);
-                            rc = SSMR3GetS32(pSSM, &y);         AssertRC(rc);
-                            rc = SSMR3GetS32(pSSM, &w);         AssertRC(rc);
-                            rc = SSMR3GetS32(pSSM, &h);         AssertRC(rc);
-
-                            rc = SSMR3GetBool(pSSM, &bNewEvent);         AssertRC(rc);
-
-                            if (RT_SUCCESS(rc))
-                            {
-                                QRect r = QRect(x, y, w, h);
-                                postCmd(VBOXVHWA_PIPECMD_PAINT, &r);
-                            }
-                            break;
-                        }
-                        case VBOXVHWA_PIPECMD_VHWA:
-                        {
-                            uint32_t offCmd;
-                            rc = SSMR3GetU32(pSSM, &offCmd);         AssertRC(rc);
-
-                            rc = SSMR3GetBool(pSSM, &bNewEvent);         AssertRC(rc);
-
-                            if (RT_SUCCESS(rc))
-                            {
-                                postCmd(VBOXVHWA_PIPECMD_VHWA, (VBOXVHWACMD*)(((uint8_t*)pvVRAM) + offCmd));
-                            }
-                            break;
-                        }
-                        case VBOXVHWACOMMANDELEMENTLISTEND_MAGIC:
-                        {
-                            bContinue = false;
-                            break;
-                        }
-                        default:
-                            AssertFailed();
-                            break;
-                    }
-
-                }
-
-            } while(bContinue && RT_SUCCESS(rc));
-        }
-        else
-        {
-            rc = VERR_INVALID_MAGIC;
-        }
-    }
-
-    return rc;
-}
-
-void VBoxVHWACommandElementProcessor::saveExec (struct SSMHANDLE * pSSM, void *pvVRAM)
-{
-    int rc;
-
-    rc = SSMR3PutU32(pSSM, VBOXVHWACOMMANDELEMENTLISTBEGIN_MAGIC);         AssertRC(rc);
-    rc = SSMR3PutU32(pSSM, m_NotifyObjectRefs.refs());         AssertRC(rc);
-    rc = SSMR3PutBool(pSSM, true);         AssertRC(rc);
+    rc = SSMR3PutU32(pSSM, VBOXVHWACOMMANDELEMENTLISTBEGIN_MAGIC);
+    rc = SSMR3PutU32(pSSM, m_NotifyObjectRefs.refs());
+    rc = SSMR3PutBool(pSSM, true);
+    AssertRC(rc);
 
     VBoxVHWACommandElement *pCur;
     RTListForEachCpp(&mCommandList, pCur, VBoxVHWACommandElement, ListNode)
     {
-        rc = SSMR3PutU32(pSSM, pCur->type());         AssertRC(rc);
 
         switch (pCur->type())
         {
             case VBOXVHWA_PIPECMD_PAINT:
-                rc = SSMR3PutS32(pSSM, pCur->rect().x());         AssertRC(rc);
-                rc = SSMR3PutS32(pSSM, pCur->rect().y());         AssertRC(rc);
-                rc = SSMR3PutS32(pSSM, pCur->rect().width());         AssertRC(rc);
-                rc = SSMR3PutS32(pSSM, pCur->rect().height());         AssertRC(rc);
-                rc = SSMR3PutBool(pSSM, true);         AssertRC(rc);
+                rc = SSMR3PutU32(pSSM, pCur->type());
+                rc = SSMR3PutS32(pSSM, pCur->rect().x());
+                rc = SSMR3PutS32(pSSM, pCur->rect().y());
+                rc = SSMR3PutS32(pSSM, pCur->rect().width());
+                rc = SSMR3PutS32(pSSM, pCur->rect().height());
+                rc = SSMR3PutBool(pSSM, true);
+                AssertRC(rc);
                 break;
+
             case VBOXVHWA_PIPECMD_VHWA:
-            {
-                rc = SSMR3PutU32(pSSM, (uint32_t)((uintptr_t)((uint8_t*)pCur->vhwaCmd() - (uint8_t*)pvVRAM)));         AssertRC(rc);
-                rc = SSMR3PutBool(pSSM, true);         AssertRC(rc);
+                if (pCur->vhwaIsGuestCmd())
+                {
+                    rc = SSMR3PutU32(pSSM, pCur->type());
+                    rc = SSMR3PutU32(pSSM, (uint32_t)(uintptr_t)pCur->vhwaCmdPtr() - (uintptr_t)pvVRAM);
+                    rc = SSMR3PutBool(pSSM, true);
+                    AssertRC(rc);
+                }
                 break;
-            }
+
             default:
                 AssertFailed();
@@ -5387,5 +5375,6 @@
     }
 
-    rc = SSMR3PutU32(pSSM, VBOXVHWACOMMANDELEMENTLISTEND_MAGIC);         AssertRC(rc);
+    rc = SSMR3PutU32(pSSM, VBOXVHWACOMMANDELEMENTLISTEND_MAGIC);
+    AssertRC(rc);
 }
 
@@ -5394,7 +5383,7 @@
     RTCritSectEnter(&mCritSect);
 
-    if(mpCurCmd)
-    {
-        for(;;)
+    if (mpCurCmd)
+    {
+        for (;;)
         {
             RTCritSectLeave(&mCritSect);
@@ -5402,5 +5391,5 @@
             RTCritSectEnter(&mCritSect);
             /* it is assumed no one sends any new commands while reset is in progress */
-            if(!mpCurCmd)
+            if (!mpCurCmd)
             {
                 break;
@@ -5432,7 +5421,7 @@
 
 /* static */
-uint32_t VBoxVHWATextureImage::calcBytesPerLine(const VBoxVHWAColorFormat & format, int width)
-{
-    uint32_t pitch = (format.bitsPerPixel() * width + 7)/8;
+uint32_t VBoxVHWATextureImage::calcBytesPerLine(const VBoxVHWAColorFormat &format, int width)
+{
+    uint32_t pitch = (format.bitsPerPixel() * width + 7) / 8;
     switch (format.fourcc())
     {
@@ -5442,4 +5431,5 @@
             pitch = (pitch + 7) & ~7;
             break;
+
         default:
             pitch = (pitch + 3) & ~3;
@@ -5450,5 +5440,5 @@
 
 /* static */
-uint32_t VBoxVHWATextureImage::calcMemSize(const VBoxVHWAColorFormat & format, int width, int height)
+uint32_t VBoxVHWATextureImage::calcMemSize(const VBoxVHWAColorFormat &format, int width, int height)
 {
     uint32_t pitch = calcBytesPerLine(format, width);
@@ -5458,23 +5448,23 @@
             /* we have 3 separate planes here
              * Y - pitch x height
-             * U - pitch/2 x height/2
-             * V - pitch/2 x height/2
+             * U - pitch / 2 x height / 2
+             * V - pitch / 2 x height / 2
              * */
             return 3 * pitch * height / 2;
-            break;
+
         default:
             return pitch * height;
-            break;
-    }
-}
-
-VBoxVHWATextureImage::VBoxVHWATextureImage(const QRect &size, const VBoxVHWAColorFormat &format, class VBoxVHWAGlProgramMngr * aMgr, VBOXVHWAIMG_TYPE flags) :
-        mVisibleDisplay(0),
-        mpProgram(0),
-        mProgramMngr(aMgr),
-        mpDst(NULL),
-        mpDstCKey(NULL),
-        mpSrcCKey(NULL),
-        mbNotIntersected(false)
+    }
+}
+
+VBoxVHWATextureImage::VBoxVHWATextureImage(const QRect &size, const VBoxVHWAColorFormat &format,
+                                           class VBoxVHWAGlProgramMngr * aMgr, VBOXVHWAIMG_TYPE flags)
+    : mVisibleDisplay(0)
+    , mpProgram(0)
+    , mProgramMngr(aMgr)
+    , mpDst(NULL)
+    , mpDstCKey(NULL)
+    , mpSrcCKey(NULL)
+    , mbNotIntersected(false)
 {
     uint32_t pitch = calcBytesPerLine(format, size.width());
@@ -5482,20 +5472,18 @@
     mpTex[0] = vboxVHWATextureCreate(NULL, size, format, pitch, flags);
     mColorFormat = format;
-    if(mColorFormat.fourcc() == FOURCC_YV12)
-    {
-        QRect rect(size.x()/2,size.y()/2,size.width()/2,size.height()/2);
-        mpTex[1] = vboxVHWATextureCreate(NULL, rect, format, pitch/2, flags);
-        mpTex[2] = vboxVHWATextureCreate(NULL, rect, format, pitch/2, flags);
+    if (mColorFormat.fourcc() == FOURCC_YV12)
+    {
+        QRect rect(size.x() / 2,size.y() / 2,size.width() / 2,size.height() / 2);
+        mpTex[1] = vboxVHWATextureCreate(NULL, rect, format, pitch / 2, flags);
+        mpTex[2] = vboxVHWATextureCreate(NULL, rect, format, pitch / 2, flags);
         mcTex = 3;
     }
     else
-    {
         mcTex = 1;
-    }
 }
 
 void VBoxVHWATextureImage::deleteDisplayList()
 {
-    if(mVisibleDisplay)
+    if (mVisibleDisplay)
     {
         glDeleteLists(mVisibleDisplay, 1);
@@ -5510,39 +5498,33 @@
 }
 
-void VBoxVHWATextureImage::draw(VBoxVHWATextureImage *pDst, const QRect * pDstRect, const QRect * pSrcRect)
+void VBoxVHWATextureImage::draw(VBoxVHWATextureImage *pDst, const QRect *pDstRect, const QRect *pSrcRect)
 {
     int tx1, ty1, tx2, ty2;
     pSrcRect->getCoords(&tx1, &ty1, &tx2, &ty2);
+
     int bx1, by1, bx2, by2;
     pDstRect->getCoords(&bx1, &by1, &bx2, &by2);
+
     tx2++; ty2++;bx2++; by2++;
 
     glBegin(GL_QUADS);
     uint32_t c = texCoord(GL_TEXTURE0, tx1, ty1);
-    if(pDst)
-    {
+    if (pDst)
         pDst->texCoord(GL_TEXTURE0 + c, bx1, by1);
-    }
     glVertex2i(bx1, by1);
 
     texCoord(GL_TEXTURE0, tx1, ty2);
-    if(pDst)
-    {
+    if (pDst)
         pDst->texCoord(GL_TEXTURE0 + c, bx1, by2);
-    }
     glVertex2i(bx1, by2);
 
     texCoord(GL_TEXTURE0, tx2, ty2);
-    if(pDst)
-    {
+    if (pDst)
         pDst->texCoord(GL_TEXTURE0 + c, bx2, by2);
-    }
     glVertex2i(bx2, by2);
 
     texCoord(GL_TEXTURE0, tx2, ty1);
-    if(pDst)
-    {
+    if (pDst)
         pDst->texCoord(GL_TEXTURE0 + c, bx2, by1);
-    }
     glVertex2i(bx2, by1);
 
@@ -5552,5 +5534,5 @@
 void VBoxVHWATextureImage::internalSetDstCKey(const VBoxVHWAColorKey * pDstCKey)
 {
-    if(pDstCKey)
+    if (pDstCKey)
     {
         mDstCKey = *pDstCKey;
@@ -5565,5 +5547,5 @@
 void VBoxVHWATextureImage::internalSetSrcCKey(const VBoxVHWAColorKey * pSrcCKey)
 {
-    if(pSrcCKey)
+    if (pSrcCKey)
     {
         mSrcCKey = *pSrcCKey;
@@ -5577,22 +5559,18 @@
 
 int VBoxVHWATextureImage::initDisplay(VBoxVHWATextureImage *pDst,
-        const QRect * pDstRect, const QRect * pSrcRect,
-        const VBoxVHWAColorKey * pDstCKey, const VBoxVHWAColorKey * pSrcCKey, bool bNotIntersected)
-{
-    if(!mVisibleDisplay
-            || mpDst != pDst
-            || *pDstRect != mDstRect
-            || *pSrcRect != mSrcRect
-            || !!(pDstCKey) != !!(mpDstCKey)
-            || !!(pSrcCKey) != !!(mpSrcCKey)
-            || mbNotIntersected != bNotIntersected
-            || mpProgram != calcProgram(pDst, pDstCKey, pSrcCKey, bNotIntersected))
-    {
-        return createSetDisplay(pDst, pDstRect, pSrcRect,
-                pDstCKey, pSrcCKey, bNotIntersected);
-
-    }
-    else if((pDstCKey && mpDstCKey && *pDstCKey != *mpDstCKey)
-            || (pSrcCKey && mpSrcCKey && *pSrcCKey != *mpSrcCKey))
+                                      const QRect *pDstRect, const QRect *pSrcRect,
+                                      const VBoxVHWAColorKey *pDstCKey, const VBoxVHWAColorKey *pSrcCKey, bool bNotIntersected)
+{
+    if (  !mVisibleDisplay
+        || mpDst != pDst
+        || *pDstRect != mDstRect
+        || *pSrcRect != mSrcRect
+        || !!(pDstCKey) != !!(mpDstCKey)
+        || !!(pSrcCKey) != !!(mpSrcCKey)
+        || mbNotIntersected != bNotIntersected
+        || mpProgram != calcProgram(pDst, pDstCKey, pSrcCKey, bNotIntersected))
+        return createSetDisplay(pDst, pDstRect, pSrcRect, pDstCKey, pSrcCKey, bNotIntersected);
+    if (   (pDstCKey && mpDstCKey && *pDstCKey != *mpDstCKey)
+        || (pSrcCKey && mpSrcCKey && *pSrcCKey != *mpSrcCKey))
     {
         Assert(mpProgram);
@@ -5605,17 +5583,15 @@
 void VBoxVHWATextureImage::bind(VBoxVHWATextureImage * pPrimary)
 {
-    for(uint32_t i = 1; i < mcTex; i++)
+    for (uint32_t i = 1; i < mcTex; i++)
     {
         vboxglActiveTexture(GL_TEXTURE0 + i);
         mpTex[i]->bind();
     }
-    if(pPrimary)
-    {
-        for(uint32_t i = 0; i < pPrimary->mcTex; i++)
+    if (pPrimary)
+        for (uint32_t i = 0; i < pPrimary->mcTex; i++)
         {
             vboxglActiveTexture(GL_TEXTURE0 + i + mcTex);
             pPrimary->mpTex[i]->bind();
         }
-    }
 
     vboxglActiveTexture(GL_TEXTURE0);
@@ -5623,13 +5599,14 @@
 }
 
-uint32_t VBoxVHWATextureImage::calcProgramType(VBoxVHWATextureImage *pDst, const VBoxVHWAColorKey * pDstCKey, const VBoxVHWAColorKey * pSrcCKey, bool bNotIntersected)
+uint32_t VBoxVHWATextureImage::calcProgramType(VBoxVHWATextureImage *pDst, const VBoxVHWAColorKey *pDstCKey,
+                                               const VBoxVHWAColorKey *pSrcCKey, bool bNotIntersected)
 {
     uint32_t type = 0;
 
-    if(pDstCKey != NULL)
+    if (pDstCKey != NULL)
         type |= VBOXVHWA_PROGRAM_DSTCOLORKEY;
-    if(pSrcCKey)
+    if (pSrcCKey)
         type |= VBOXVHWA_PROGRAM_SRCCOLORKEY;
-    if((pDstCKey || pSrcCKey) && bNotIntersected)
+    if ((pDstCKey || pSrcCKey) && bNotIntersected)
         type |= VBOXVHWA_PROGRAM_COLORKEYNODISCARD;
 
@@ -5638,5 +5615,6 @@
 }
 
-class VBoxVHWAGlProgramVHWA * VBoxVHWATextureImage::calcProgram(VBoxVHWATextureImage *pDst, const VBoxVHWAColorKey * pDstCKey, const VBoxVHWAColorKey * pSrcCKey, bool bNotIntersected)
+class VBoxVHWAGlProgramVHWA *VBoxVHWATextureImage::calcProgram(VBoxVHWATextureImage *pDst, const VBoxVHWAColorKey *pDstCKey,
+                                                               const VBoxVHWAColorKey *pSrcCKey, bool bNotIntersected)
 {
     uint32_t type = calcProgramType(pDst, pDstCKey, pSrcCKey, bNotIntersected);
@@ -5645,12 +5623,11 @@
 }
 
-int VBoxVHWATextureImage::createSetDisplay(VBoxVHWATextureImage *pDst, const QRect * pDstRect, const QRect * pSrcRect,
-        const VBoxVHWAColorKey * pDstCKey, const VBoxVHWAColorKey * pSrcCKey, bool bNotIntersected)
+int VBoxVHWATextureImage::createSetDisplay(VBoxVHWATextureImage *pDst, const QRect *pDstRect, const QRect *pSrcRect,
+                                           const VBoxVHWAColorKey *pDstCKey, const VBoxVHWAColorKey * pSrcCKey,
+                                           bool bNotIntersected)
 {
     deleteDisplay();
-    int rc = createDisplay(pDst, pDstRect, pSrcRect,
-            pDstCKey, pSrcCKey, bNotIntersected,
-            &mVisibleDisplay, &mpProgram);
-    if(RT_FAILURE(rc))
+    int rc = createDisplay(pDst, pDstRect, pSrcRect, pDstCKey, pSrcCKey, bNotIntersected, &mVisibleDisplay, &mpProgram);
+    if (RT_FAILURE(rc))
     {
         mVisibleDisplay = 0;
@@ -5672,7 +5649,7 @@
 
 
-int VBoxVHWATextureImage::createDisplayList(VBoxVHWATextureImage *pDst, const QRect * pDstRect, const QRect * pSrcRect,
-        const VBoxVHWAColorKey * pDstCKey, const VBoxVHWAColorKey * pSrcCKey, bool bNotIntersected,
-        GLuint *pDisplay)
+int VBoxVHWATextureImage::createDisplayList(VBoxVHWATextureImage *pDst, const QRect *pDstRect, const QRect *pSrcRect,
+                                            const VBoxVHWAColorKey *pDstCKey, const VBoxVHWAColorKey *pSrcCKey,
+                                            bool bNotIntersected, GLuint *pDisplay)
 {
     Q_UNUSED(pDstCKey);
@@ -5683,8 +5660,8 @@
     GLuint display = glGenLists(1);
     GLenum err = glGetError();
-    if(err == GL_NO_ERROR)
+    if (err == GL_NO_ERROR)
     {
         Assert(display);
-        if(!display)
+        if (!display)
         {
             /* well, it seems it should not return 0 on success according to the spec,
@@ -5692,5 +5669,5 @@
             display = glGenLists(1);
             err = glGetError();
-            if(err == GL_NO_ERROR)
+            if (err == GL_NO_ERROR)
             {
                 Assert(display);
@@ -5704,5 +5681,5 @@
         }
 
-        if(display)
+        if (display)
         {
             glNewList(display, GL_COMPILE);
@@ -5724,22 +5701,19 @@
 }
 
-void VBoxVHWATextureImage::updateCKeys(VBoxVHWATextureImage * pDst, class VBoxVHWAGlProgramVHWA * pProgram, const VBoxVHWAColorKey * pDstCKey, const VBoxVHWAColorKey * pSrcCKey)
-{
-    if(pProgram)
+void VBoxVHWATextureImage::updateCKeys(VBoxVHWATextureImage *pDst, class VBoxVHWAGlProgramVHWA *pProgram,
+                                       const VBoxVHWAColorKey *pDstCKey, const VBoxVHWAColorKey *pSrcCKey)
+{
+    if (pProgram)
     {
         pProgram->start();
-        if(pSrcCKey)
-        {
+        if (pSrcCKey)
             VBoxVHWATextureImage::setCKey(pProgram, &pixelFormat(), pSrcCKey, false);
-        }
-        if(pDstCKey)
-        {
+        if (pDstCKey)
             VBoxVHWATextureImage::setCKey(pProgram, &pDst->pixelFormat(), pDstCKey, true);
-        }
         pProgram->stop();
     }
 }
 
-void VBoxVHWATextureImage::updateSetCKeys(const VBoxVHWAColorKey * pDstCKey, const VBoxVHWAColorKey * pSrcCKey)
+void VBoxVHWATextureImage::updateSetCKeys(const VBoxVHWAColorKey *pDstCKey, const VBoxVHWAColorKey *pSrcCKey)
 {
     updateCKeys(mpDst, mpProgram, pDstCKey, pSrcCKey);
@@ -5748,9 +5722,9 @@
 }
 
-int VBoxVHWATextureImage::createDisplay(VBoxVHWATextureImage *pDst, const QRect * pDstRect, const QRect * pSrcRect,
-        const VBoxVHWAColorKey * pDstCKey, const VBoxVHWAColorKey * pSrcCKey, bool bNotIntersected,
-        GLuint *pDisplay, class VBoxVHWAGlProgramVHWA ** ppProgram)
-{
-    VBoxVHWAGlProgramVHWA * pProgram = NULL;
+int VBoxVHWATextureImage::createDisplay(VBoxVHWATextureImage *pDst, const QRect *pDstRect, const QRect *pSrcRect,
+                                        const VBoxVHWAColorKey *pDstCKey, const VBoxVHWAColorKey *pSrcCKey, bool bNotIntersected,
+                                        GLuint *pDisplay, class VBoxVHWAGlProgramVHWA **ppProgram)
+{
+    VBoxVHWAGlProgramVHWA *pProgram = NULL;
     if (!pDst)
     {
@@ -5769,8 +5743,6 @@
 
     GLuint displ;
-    int rc = createDisplayList(pDst, pDstRect, pSrcRect,
-            pDstCKey, pSrcCKey, bNotIntersected,
-            &displ);
-    if(RT_SUCCESS(rc))
+    int rc = createDisplayList(pDst, pDstRect, pSrcRect, pDstCKey, pSrcCKey, bNotIntersected, &displ);
+    if (RT_SUCCESS(rc))
     {
         *pDisplay = displ;
@@ -5781,14 +5753,14 @@
 }
 
-void VBoxVHWATextureImage::display(VBoxVHWATextureImage *pDst, const QRect * pDstRect, const QRect * pSrcRect,
-        const VBoxVHWAColorKey * pDstCKey, const VBoxVHWAColorKey * pSrcCKey, bool bNotIntersected)
-{
-    VBoxVHWAGlProgramVHWA * pProgram = calcProgram(pDst, pDstCKey, pSrcCKey, bNotIntersected);
-    if(pProgram)
+void VBoxVHWATextureImage::display(VBoxVHWATextureImage *pDst, const QRect *pDstRect, const QRect *pSrcRect,
+                                   const VBoxVHWAColorKey *pDstCKey, const VBoxVHWAColorKey *pSrcCKey, bool bNotIntersected)
+{
+    VBoxVHWAGlProgramVHWA *pProgram = calcProgram(pDst, pDstCKey, pSrcCKey, bNotIntersected);
+    if (pProgram)
         pProgram->start();
 
     runDisplay(pDst, pDstRect, pSrcRect);
 
-    if(pProgram)
+    if (pProgram)
         pProgram->stop();
 }
@@ -5798,18 +5770,16 @@
 #ifdef DEBUG_misha
     if (mpDst)
-    {
         dbgDump();
-    }
 
     static bool bDisplayOn = true;
 #endif
     Assert(mVisibleDisplay);
-    if(mVisibleDisplay
+    if (   mVisibleDisplay
 #ifdef DEBUG_misha
-            && bDisplayOn
-#endif
-            )
-    {
-        if(mpProgram)
+        && bDisplayOn
+#endif
+        )
+    {
+        if (mpProgram)
             mpProgram->start();
 
@@ -5818,5 +5788,5 @@
                 );
 
-        if(mpProgram)
+        if (mpProgram)
             mpProgram->stop();
     }
@@ -5832,15 +5802,14 @@
 {
     for (uint32_t i = 0; i < mcTex; ++i)
-    {
         mpTex[i]->dbgDump();
-    }
-}
-#endif
-
-int VBoxVHWATextureImage::setCKey (VBoxVHWAGlProgramVHWA * pProgram, const VBoxVHWAColorFormat * pFormat, const VBoxVHWAColorKey * pCKey, bool bDst)
+}
+#endif
+
+int VBoxVHWATextureImage::setCKey(VBoxVHWAGlProgramVHWA *pProgram, const VBoxVHWAColorFormat *pFormat,
+                                  const VBoxVHWAColorKey *pCKey, bool bDst)
 {
     float r,g,b;
-    pFormat->pixel2Normalized (pCKey->lower(), &r, &g, &b);
-    int rcL = bDst ? pProgram->setDstCKeyLowerRange (r, g, b) : pProgram->setSrcCKeyLowerRange (r, g, b);
+    pFormat->pixel2Normalized(pCKey->lower(), &r, &g, &b);
+    int rcL = bDst ? pProgram->setDstCKeyLowerRange(r, g, b) : pProgram->setSrcCKeyLowerRange(r, g, b);
     Assert(RT_SUCCESS(rcL));
 
@@ -5873,5 +5842,5 @@
 }
 
-int VBoxVHWASettings::calcIntersection (int c1, const uint32_t *a1, int c2, const uint32_t *a2, int cOut, uint32_t *aOut)
+int VBoxVHWASettings::calcIntersection(int c1, const uint32_t *a1, int c2, const uint32_t *a2, int cOut, uint32_t *aOut)
 {
     /* fourcc arrays are not big, so linear search is enough,
@@ -5884,7 +5853,7 @@
         {
             uint32_t cur2 = a2[j];
-            if(cur1 == cur2)
+            if (cur1 == cur2)
             {
-                if(cOut > cMatch && aOut)
+                if (cOut > cMatch && aOut)
                     aOut[cMatch] = cur1;
                 ++cMatch;
Index: /trunk/src/VBox/Frontends/VirtualBox/src/VBoxFBOverlay.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/VBoxFBOverlay.h	(revision 71650)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/VBoxFBOverlay.h	(revision 71651)
@@ -1220,8 +1220,10 @@
 {
 public:
-    void setVHWACmd(struct VBOXVHWACMD RT_UNTRUSTED_VOLATILE_GUEST *pCmd)
+    void setVHWACmd(struct VBOXVHWACMD RT_UNTRUSTED_VOLATILE_GUEST *pCmd, int enmCmd, bool fGuestCmd)
     {
         mType = VBOXVHWA_PIPECMD_VHWA;
-        u.mpCmd = pCmd;
+        u.s.mpCmd = pCmd;
+        u.s.menmCmd = enmCmd;
+        u.s.mfGuestCmd = fGuestCmd;
     }
 
@@ -1238,13 +1240,13 @@
     }
 
-    void setData(VBOXVHWA_PIPECMD_TYPE aType, void *pvData)
-    {
-        switch(aType)
+    void setData(VBOXVHWA_PIPECMD_TYPE aType, void *pvData, int /*VBOXVHWACMD_TYPE*/ enmCmd, bool fGuestCmd = false)
+    {
+        switch (aType)
         {
         case VBOXVHWA_PIPECMD_PAINT:
-            setPaintCmd(*((QRect*)pvData));
+            setPaintCmd(*((QRect *)pvData));
             break;
         case VBOXVHWA_PIPECMD_VHWA:
-            setVHWACmd((struct VBOXVHWACMD *)pvData);
+            setVHWACmd((struct VBOXVHWACMD *)pvData, enmCmd, fGuestCmd);
             break;
         case VBOXVHWA_PIPECMD_FUNC:
@@ -1252,5 +1254,6 @@
             break;
         default:
-            Assert(0);
+            AssertFailed();
+            mType = (VBOXVHWA_PIPECMD_TYPE)0;
             break;
         }
@@ -1259,5 +1262,7 @@
     VBOXVHWA_PIPECMD_TYPE type() const {return mType;}
     const QRect & rect() const {return mRect;}
-    struct VBOXVHWACMD RT_UNTRUSTED_VOLATILE_GUEST *vhwaCmd() const {return u.mpCmd;}
+    struct VBOXVHWACMD RT_UNTRUSTED_VOLATILE_GUEST *vhwaCmdPtr() const      { return u.s.mpCmd; }
+    int /*VBOXVHWACMD_TYPE*/                        vhwaCmdType() const     { return u.s.menmCmd; }
+    bool                                            vhwaIsGuestCmd() const  { return u.s.mfGuestCmd; }
     const VBOXVHWAFUNCCALLBACKINFO & func() const {return u.mFuncCallback; }
 
@@ -1267,7 +1272,12 @@
     union
     {
-        struct VBOXVHWACMD RT_UNTRUSTED_VOLATILE_GUEST *mpCmd;
+        struct
+        {
+            struct VBOXVHWACMD RT_UNTRUSTED_VOLATILE_GUEST *mpCmd;
+            int /*VBOXVHWACMD_TYPE*/                        menmCmd;
+            bool                                            mfGuestCmd;
+        } s;
         VBOXVHWAFUNCCALLBACKINFO mFuncCallback;
-    }u;
+    } u;
     QRect                 mRect;
 };
@@ -1321,5 +1331,5 @@
     void init(QObject *pNotifyObject);
     ~VBoxVHWACommandElementProcessor();
-    void postCmd(VBOXVHWA_PIPECMD_TYPE aType, void *pvData);
+    void postCmd(VBOXVHWA_PIPECMD_TYPE aType, void *pvData, int /*VBOXVHWACMD_TYPE*/ enmCmdInt, bool fGuestCmd);
     VBoxVHWACommandElement *getCmd();
     void doneCmd();
@@ -1709,5 +1719,6 @@
     void updateAttachment(QWidget *pViewport, QObject *pPostEventObject);
 
-    int onVHWACommand (struct VBOXVHWACMD RT_UNTRUSTED_VOLATILE_GUEST *pCommand);
+    int onVHWACommand(struct VBOXVHWACMD RT_UNTRUSTED_VOLATILE_GUEST *pCommand,
+                      int /*VBOXVHWACMD_TYPE*/ enmCmdInt, bool fGuestCmd);
 
     void onVHWACommandEvent (QEvent * pEvent);
@@ -1799,8 +1810,8 @@
     bool vboxGetGlOn() { return mGlOn; }
     bool vboxSynchGl();
-    void vboxDoVHWACmdExec(void RT_UNTRUSTED_VOLATILE_GUEST *cmd);
+    void vboxDoVHWACmdExec(void RT_UNTRUSTED_VOLATILE_GUEST *pvCmd, int /*VBOXVHWACMD_TYPE*/ enmCmdInt, bool fGuestCmd);
     void vboxShowOverlay (bool show);
     void vboxDoCheckUpdateViewport();
-    void vboxDoVHWACmd (void RT_UNTRUSTED_VOLATILE_GUEST *cmd);
+    void vboxDoVHWACmd(void RT_UNTRUSTED_VOLATILE_GUEST *pvCmd, int /*VBOXVHWACMD_TYPE*/ enmCmd, bool fGuestCmd);
     void addMainDirtyRect (const QRect & aRect);
     void vboxCheckUpdateOverlay (const QRect & rect);
Index: /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIFrameBuffer.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIFrameBuffer.cpp	(revision 71650)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIFrameBuffer.cpp	(revision 71651)
@@ -245,5 +245,5 @@
 
     /** EMT callback which is not used in current implementation. */
-    STDMETHOD(ProcessVHWACommand)(BYTE *pCommand);
+    STDMETHOD(ProcessVHWACommand)(BYTE *pCommand, LONG enmCmd, BOOL fGuestCmd);
 
     /** EMT callback: Notifies frame-buffer about 3D backend event.
@@ -420,7 +420,6 @@
     }
 
-    STDMETHOD(ProcessVHWACommand)(BYTE *pCommand)
-    {
-        int rc;
+    STDMETHOD(ProcessVHWACommand)(BYTE *pCommand, LONG enmCmd, BOOL fGuestCmd)
+    {
         UIFrameBufferPrivate::lock();
         /* Make sure frame-buffer is used: */
@@ -433,11 +432,12 @@
             return E_ACCESSDENIED;
         }
-        rc = mOverlay.onVHWACommand((struct VBOXVHWACMD RT_UNTRUSTED_VOLATILE_GUEST *)pCommand);
+
+        int rc = mOverlay.onVHWACommand((struct VBOXVHWACMD RT_UNTRUSTED_VOLATILE_GUEST *)pCommand, enmCmd, fGuestCmd != FALSE);
         UIFrameBufferPrivate::unlock();
         if (rc == VINF_CALLBACK_RETURN)
             return S_OK;
-        else if (RT_SUCCESS(rc))
+        if (RT_SUCCESS(rc))
             return S_FALSE;
-        else if (rc == VERR_INVALID_STATE)
+        if (rc == VERR_INVALID_STATE)
             return E_ACCESSDENIED;
         return E_FAIL;
@@ -1004,7 +1004,7 @@
 }
 
-STDMETHODIMP UIFrameBufferPrivate::ProcessVHWACommand(BYTE *pCommand)
-{
-    Q_UNUSED(pCommand);
+STDMETHODIMP UIFrameBufferPrivate::ProcessVHWACommand(BYTE *pCommand, LONG enmCmd, BOOL fGuestCmd)
+{
+    RT_NOREF(pCommand, enmCmd, fGuestCmd);
     return E_NOTIMPL;
 }
Index: /trunk/src/VBox/Main/idl/VirtualBox.xidl
===================================================================
--- /trunk/src/VBox/Main/idl/VirtualBox.xidl	(revision 71650)
+++ /trunk/src/VBox/Main/idl/VirtualBox.xidl	(revision 71651)
@@ -17015,5 +17015,5 @@
   <interface
     name="IFramebuffer" extends="$unknown"
-    uuid="8b82295f-415f-1aa1-17fd-9fbbac8edf44"
+    uuid="1e8d3f27-b45c-48ae-8b36-d35e83d207aa"
     wsmap="managed"
     >
@@ -17233,4 +17233,10 @@
       <param name="command" type="octet" mod="ptr" dir="in">
         <desc>Pointer to VBOXVHWACMD containing the command to execute.</desc>
+      </param>
+      <param name="enmCmd" type="long" dir="in">
+        <desc>The validated VBOXVHWACMD::enmCmd value from the command.</desc>
+      </param>
+      <param name="fromGuest" type="boolean" dir="in">
+        <desc>Set when the command origins from the guest, clear if host.</desc>
       </param>
     </method>
Index: /trunk/src/VBox/Main/src-client/DisplayImpl.cpp
===================================================================
--- /trunk/src/VBox/Main/src-client/DisplayImpl.cpp	(revision 71650)
+++ /trunk/src/VBox/Main/src-client/DisplayImpl.cpp	(revision 71651)
@@ -3546,6 +3546,5 @@
         return VERR_NOT_IMPLEMENTED; /* Implementation is not available. */
 
-    RT_NOREF(enmCmd, fGuestCmd);
-    HRESULT hr = pFramebuffer->ProcessVHWACommand((BYTE *)pCommand);
+    HRESULT hr = pFramebuffer->ProcessVHWACommand((BYTE *)pCommand, enmCmd, fGuestCmd);
     if (hr == S_FALSE)
         return VINF_SUCCESS;
