Index: /trunk/src/VBox/Frontends/VirtualBox/src/globals/UIDesktopWidgetWatchdog.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/globals/UIDesktopWidgetWatchdog.cpp	(revision 60630)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/globals/UIDesktopWidgetWatchdog.cpp	(revision 60631)
@@ -131,9 +131,13 @@
     m_cHostScreenCount = cHostScreenCount != -1 ? cHostScreenCount : m_pDesktopWidget->screenCount();
 
-    /* Resize vectors to new host-screen count: */
+    /* Cleanup existing workers first: */
+    foreach (QWidget *pWorker, m_availableGeometryWorkers)
+        pWorker->disconnect();
     qDeleteAll(m_availableGeometryWorkers);
     m_availableGeometryWorkers.clear();
+    m_availableGeometryData.clear();
+
+    /* Resize workers vectors to new host-screen count: */
     m_availableGeometryWorkers.resize(m_cHostScreenCount);
-    m_availableGeometryData.clear();
     m_availableGeometryData.resize(m_cHostScreenCount);
 
@@ -203,7 +207,10 @@
     disconnect(m_pDesktopWidget, SIGNAL(resized(int)), this, SLOT(sltRecalculateHostScreenAvailableGeometry(int)));
 
-    /* Cleanup existing workers: */
+    /* Cleanup existing workers finally: */
+    foreach (QWidget *pWorker, m_availableGeometryWorkers)
+        pWorker->disconnect();
     qDeleteAll(m_availableGeometryWorkers);
     m_availableGeometryWorkers.clear();
+    m_availableGeometryData.clear();
 }
 
