Index: /trunk/src/VBox/Frontends/VirtualBox/src/globals/UIMessageCenter.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/globals/UIMessageCenter.cpp	(revision 46812)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/globals/UIMessageCenter.cpp	(revision 46813)
@@ -1988,4 +1988,15 @@
               tr("Failed to disable the remote desktop server for the virtual machine <b>%1</b>.").arg(strMachineName),
           formatErrorInfo(server));
+}
+
+void UIMessageCenter::cannotToggleVideoCapture(const CMachine &machine, bool fEnable)
+{
+    /* Get machine-name preserving error-info: */
+    QString strMachineName(CMachine(machine).GetName());
+    error(0, MessageType_Error,
+          fEnable ?
+              tr("Failed to enable the video capture for the virtual machine <b>%1</b>.").arg(strMachineName) :
+              tr("Failed to disable the video capture for the virtual machine <b>%1</b>.").arg(strMachineName),
+          formatErrorInfo(machine));
 }
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/globals/UIMessageCenter.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/globals/UIMessageCenter.h	(revision 46812)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/globals/UIMessageCenter.h	(revision 46813)
@@ -299,4 +299,5 @@
     void cannotDetachUSBDevice(const CVirtualBoxErrorInfo &errorInfo, const QString &strDevice, const QString &strMachineName) const;
     void cannotToggleVRDEServer(const CVRDEServer &server, const QString &strMachineName, bool fEnable);
+    void cannotToggleVideoCapture(const CMachine &machine, bool fEnable);
     void remindAboutGuestAdditionsAreNotActive() const;
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineLogic.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineLogic.cpp	(revision 46812)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineLogic.cpp	(revision 46813)
@@ -1946,24 +1946,39 @@
         return;
 
+    /* Access machine: */
+    CMachine machine = session().GetMachine();
+    AssertMsg(!machine.isNull(), ("Machine should NOT be null!\n"));
+    if (machine.isNull())
+        return;
+
     /* Make sure something had changed: */
-    CMachine machine = session().GetMachine();
     if (machine.GetVideoCaptureEnabled() == static_cast<BOOL>(fEnabled))
         return;
 
+    /* Update Video Capture state: */
+    AssertMsg(machine.isOk(), ("Machine should be OK!\n"));
+    machine.SetVideoCaptureEnabled(fEnabled);
+    /* Machine is not OK? */
+    if (!machine.isOk())
+    {
+        /* Notify about the error: */
+        msgCenter().cannotToggleVideoCapture(machine, fEnabled);
+        /* Make sure action is updated! */
+        uisession()->updateStatusVideoCapture();
+    }
     /* Machine is OK? */
-    if (machine.isOk())
-    {
-        /* Update Video Capture state: */
-        machine.SetVideoCaptureEnabled(fEnabled);
-        /* Machine still OK? */
-        if (machine.isOk())
-        {
-            /* Save machine-settings: */
-            machine.SaveSettings();
-        }
-    }
-    /* Machine had failed on one of steps? */
-    if (!machine.isOk())
-        msgCenter().cannotSaveMachineSettings(machine);
+    else
+    {
+        /* Save machine-settings: */
+        machine.SaveSettings();
+        /* Machine is not OK? */
+        if (!machine.isOk())
+        {
+            /* Notify about the error: */
+            msgCenter().cannotSaveMachineSettings(machine);
+            /* Make sure action is updated! */
+            uisession()->updateStatusVideoCapture();
+        }
+    }
 }
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UISession.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UISession.h	(revision 46812)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UISession.h	(revision 46813)
@@ -168,6 +168,7 @@
     void setFrameBuffer(ulong uScreenId, UIFrameBuffer* pFrameBuffer);
 
-    /* Temporary API: VRDE stuff: */
+    /* Temporary API: */
     void updateStatusVRDE() { sltVRDEChange(); }
+    void updateStatusVideoCapture() { sltVideoCaptureChange(); }
 
 signals:
