Index: /trunk/src/VBox/Frontends/VirtualBox/src/manager/details/UIDetailsElements.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/manager/details/UIDetailsElements.cpp	(revision 89712)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/manager/details/UIDetailsElements.cpp	(revision 89713)
@@ -35,8 +35,5 @@
 
 /* COM includes: */
-#include "COMEnums.h"
 #include "CAudioAdapter.h"
-#include "CCloudMachine.h"
-#include "CMachine.h"
 #include "CMedium.h"
 #include "CMediumAttachment.h"
@@ -55,14 +52,47 @@
 UIDetailsUpdateTask::UIDetailsUpdateTask(const CMachine &comMachine)
     : UITask(UITask::Type_DetailsPopulation)
-{
-    /* Store machine as property: */
-    setProperty("machine", QVariant::fromValue(comMachine));
+    , m_comMachine(comMachine)
+{
 }
 
 UIDetailsUpdateTask::UIDetailsUpdateTask(const CCloudMachine &comCloudMachine)
     : UITask(UITask::Type_DetailsPopulation)
-{
-    /* Store cloud machine as property: */
-    setProperty("cloudMachine", QVariant::fromValue(comCloudMachine));
+    , m_comCloudMachine(comCloudMachine)
+{
+}
+
+CMachine UIDetailsUpdateTask::machine() const
+{
+    /* Acquire copy under a proper lock: */
+    m_machineMutex.lock();
+    const CMachine comMachine = m_comMachine;
+    m_machineMutex.unlock();
+    return comMachine;
+}
+
+CCloudMachine UIDetailsUpdateTask::cloudMachine() const
+{
+    /* Acquire copy under a proper lock: */
+    m_machineMutex.lock();
+    const CCloudMachine comCloudMachine = m_comCloudMachine;
+    m_machineMutex.unlock();
+    return comCloudMachine;
+}
+
+UITextTable UIDetailsUpdateTask::table() const
+{
+    /* Acquire copy under a proper lock: */
+    m_tableMutex.lock();
+    const UITextTable guiTable = m_guiTable;
+    m_tableMutex.unlock();
+    return guiTable;
+}
+
+void UIDetailsUpdateTask::setTable(const UITextTable &guiTable)
+{
+    /* Assign under a proper lock: */
+    m_tableMutex.lock();
+    m_guiTable = guiTable;
+    m_tableMutex.unlock();
 }
 
@@ -111,5 +141,5 @@
 
     /* Assign new text if changed: */
-    const UITextTable newText = pTask->property("table").value<UITextTable>();
+    const UITextTable newText = qobject_cast<UIDetailsUpdateTask*>(pTask)->table();
     if (text() != newText)
         setText(newText);
@@ -234,11 +264,10 @@
 {
     /* Acquire corresponding machine: */
-    CMachine comMachine = property("machine").value<CMachine>();
-    if (comMachine.isNull())
-        return;
-
-    /* Generate details table: */
-    UITextTable table = UIDetailsGenerator::generateMachineInformationGeneral(comMachine, m_fOptions);
-    setProperty("table", QVariant::fromValue(table));
+    CMachine comMachine = machine();
+    if (comMachine.isNull())
+        return;
+
+    /* Generate details table: */
+    setTable(UIDetailsGenerator::generateMachineInformationGeneral(comMachine, m_fOptions));
 }
 
@@ -246,11 +275,10 @@
 {
     /* Acquire corresponding machine: */
-    CCloudMachine comCloudMachine = property("cloudMachine").value<CCloudMachine>();
+    CCloudMachine comCloudMachine = cloudMachine();
     if (comCloudMachine.isNull())
         return;
 
     /* Generate details table: */
-    UITextTable table = UIDetailsGenerator::generateMachineInformationGeneral(comCloudMachine, m_fOptions);
-    setProperty("table", QVariant::fromValue(table));
+    setTable(UIDetailsGenerator::generateMachineInformationGeneral(comCloudMachine, m_fOptions));
 }
 
@@ -266,11 +294,10 @@
 {
     /* Acquire corresponding machine: */
-    CMachine comMachine = property("machine").value<CMachine>();
-    if (comMachine.isNull())
-        return;
-
-    /* Generate details table: */
-    UITextTable table = UIDetailsGenerator::generateMachineInformationSystem(comMachine, m_fOptions);
-    setProperty("table", QVariant::fromValue(table));
+    CMachine comMachine = machine();
+    if (comMachine.isNull())
+        return;
+
+    /* Generate details table: */
+    setTable(UIDetailsGenerator::generateMachineInformationSystem(comMachine, m_fOptions));
 }
 
@@ -284,11 +311,10 @@
 {
     /* Acquire corresponding machine: */
-    CMachine comMachine = property("machine").value<CMachine>();
-    if (comMachine.isNull())
-        return;
-
-    /* Generate details table: */
-    UITextTable table = UIDetailsGenerator::generateMachineInformationDisplay(comMachine, m_fOptions);
-    setProperty("table", QVariant::fromValue(table));
+    CMachine comMachine = machine();
+    if (comMachine.isNull())
+        return;
+
+    /* Generate details table: */
+    setTable(UIDetailsGenerator::generateMachineInformationDisplay(comMachine, m_fOptions));
 }
 
@@ -302,11 +328,10 @@
 {
     /* Acquire corresponding machine: */
-    CMachine comMachine = property("machine").value<CMachine>();
-    if (comMachine.isNull())
-        return;
-
-    /* Generate details table: */
-    UITextTable table = UIDetailsGenerator::generateMachineInformationStorage(comMachine, m_fOptions);
-    setProperty("table", QVariant::fromValue(table));
+    CMachine comMachine = machine();
+    if (comMachine.isNull())
+        return;
+
+    /* Generate details table: */
+    setTable(UIDetailsGenerator::generateMachineInformationStorage(comMachine, m_fOptions));
 }
 
@@ -320,11 +345,10 @@
 {
     /* Acquire corresponding machine: */
-    CMachine comMachine = property("machine").value<CMachine>();
-    if (comMachine.isNull())
-        return;
-
-    /* Generate details table: */
-    UITextTable table = UIDetailsGenerator::generateMachineInformationAudio(comMachine, m_fOptions);
-    setProperty("table", QVariant::fromValue(table));
+    CMachine comMachine = machine();
+    if (comMachine.isNull())
+        return;
+
+    /* Generate details table: */
+    setTable(UIDetailsGenerator::generateMachineInformationAudio(comMachine, m_fOptions));
 }
 
@@ -337,11 +361,10 @@
 {
     /* Acquire corresponding machine: */
-    CMachine comMachine = property("machine").value<CMachine>();
-    if (comMachine.isNull())
-        return;
-
-    /* Generate details table: */
-    UITextTable table = UIDetailsGenerator::generateMachineInformationNetwork(comMachine, m_fOptions);
-    setProperty("table", QVariant::fromValue(table));
+    CMachine comMachine = machine();
+    if (comMachine.isNull())
+        return;
+
+    /* Generate details table: */
+    setTable(UIDetailsGenerator::generateMachineInformationNetwork(comMachine, m_fOptions));
 }
 
@@ -354,11 +377,10 @@
 {
     /* Acquire corresponding machine: */
-    CMachine comMachine = property("machine").value<CMachine>();
-    if (comMachine.isNull())
-        return;
-
-    /* Generate details table: */
-    UITextTable table = UIDetailsGenerator::generateMachineInformationSerial(comMachine, m_fOptions);
-    setProperty("table", QVariant::fromValue(table));
+    CMachine comMachine = machine();
+    if (comMachine.isNull())
+        return;
+
+    /* Generate details table: */
+    setTable(UIDetailsGenerator::generateMachineInformationSerial(comMachine, m_fOptions));
 }
 
@@ -371,11 +393,10 @@
 {
     /* Acquire corresponding machine: */
-    CMachine comMachine = property("machine").value<CMachine>();
-    if (comMachine.isNull())
-        return;
-
-    /* Generate details table: */
-    UITextTable table = UIDetailsGenerator::generateMachineInformationUSB(comMachine, m_fOptions);
-    setProperty("table", QVariant::fromValue(table));
+    CMachine comMachine = machine();
+    if (comMachine.isNull())
+        return;
+
+    /* Generate details table: */
+    setTable(UIDetailsGenerator::generateMachineInformationUSB(comMachine, m_fOptions));
 }
 
@@ -389,11 +410,10 @@
 {
     /* Acquire corresponding machine: */
-    CMachine comMachine = property("machine").value<CMachine>();
-    if (comMachine.isNull())
-        return;
-
-    /* Generate details table: */
-    UITextTable table = UIDetailsGenerator::generateMachineInformationSharedFolders(comMachine, m_fOptions);
-    setProperty("table", QVariant::fromValue(table));
+    CMachine comMachine = machine();
+    if (comMachine.isNull())
+        return;
+
+    /* Generate details table: */
+    setTable(UIDetailsGenerator::generateMachineInformationSharedFolders(comMachine, m_fOptions));
 }
 
@@ -407,11 +427,10 @@
 {
     /* Acquire corresponding machine: */
-    CMachine comMachine = property("machine").value<CMachine>();
-    if (comMachine.isNull())
-        return;
-
-    /* Generate details table: */
-    UITextTable table = UIDetailsGenerator::generateMachineInformationUI(comMachine, m_fOptions);
-    setProperty("table", QVariant::fromValue(table));
+    CMachine comMachine = machine();
+    if (comMachine.isNull())
+        return;
+
+    /* Generate details table: */
+    setTable(UIDetailsGenerator::generateMachineInformationUI(comMachine, m_fOptions));
 }
 
@@ -425,11 +444,10 @@
 {
     /* Acquire corresponding machine: */
-    CMachine comMachine = property("machine").value<CMachine>();
-    if (comMachine.isNull())
-        return;
-
-    /* Generate details table: */
-    UITextTable table = UIDetailsGenerator::generateMachineInformationDescription(comMachine, m_fOptions);
-    setProperty("table", QVariant::fromValue(table));
+    CMachine comMachine = machine();
+    if (comMachine.isNull())
+        return;
+
+    /* Generate details table: */
+    setTable(UIDetailsGenerator::generateMachineInformationDescription(comMachine, m_fOptions));
 }
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/manager/details/UIDetailsElements.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/manager/details/UIDetailsElements.h	(revision 89712)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/manager/details/UIDetailsElements.h	(revision 89713)
@@ -26,4 +26,9 @@
 #include "UITask.h"
 
+/* COM includes: */
+#include "COMEnums.h"
+#include "CCloudMachine.h"
+#include "CMachine.h"
+
 /* Forward declarations: */
 class UIMachinePreview;
@@ -42,4 +47,28 @@
     /** Constructs update task taking @a comCloudMachine as data. */
     UIDetailsUpdateTask(const CCloudMachine &comCloudMachine);
+
+    /** Returns the machine. */
+    CMachine machine() const;
+    /** Returns the cloud machine. */
+    CCloudMachine cloudMachine() const;
+
+    /** Returns the table. */
+    UITextTable table() const;
+    /** Defines the @a guiTable. */
+    void setTable(const UITextTable &guiTable);
+
+private:
+
+    /** Holds the mutex to access m_comMachine and m_comCloudMachine members. */
+    mutable QMutex  m_machineMutex;
+    /** Holds the machine being processed. */
+    CMachine        m_comMachine;
+    /** Holds the cloud machine being processed. */
+    CCloudMachine   m_comCloudMachine;
+
+    /** Holds the mutex to access m_guiTable member. */
+    mutable QMutex  m_tableMutex;
+    /** Holds the machine being filled. */
+    UITextTable     m_guiTable;
 };
 
