Index: trunk/src/VBox/Frontends/VirtualBox/src/globals/UIExtraDataEventHandler.cpp
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/globals/UIExtraDataEventHandler.cpp	(revision 35710)
+++ trunk/src/VBox/Frontends/VirtualBox/src/globals/UIExtraDataEventHandler.cpp	(revision 35722)
@@ -252,5 +252,7 @@
 //    RTPrintf("Self add: %RTthrd\n", RTThreadSelf());
     const CVirtualBox &vbox = vboxGlobal().virtualBox();
-    UIMainEventListenerImpl *pListener = new UIMainEventListenerImpl(this);
+    ComObjPtr<UIMainEventListenerImpl> pListener;
+    pListener.createObject();
+    pListener->init(new UIMainEventListener(), this);
     m_mainEventListener = CEventListener(pListener);
     QVector<KVBoxEventType> events;
Index: trunk/src/VBox/Frontends/VirtualBox/src/globals/UIMainEventListener.cpp
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/globals/UIMainEventListener.cpp	(revision 35710)
+++ trunk/src/VBox/Frontends/VirtualBox/src/globals/UIMainEventListener.cpp	(revision 35722)
@@ -25,6 +25,5 @@
 //#include <iprt/stream.h>
 
-UIMainEventListener::UIMainEventListener(QObject * /* pParent */)
-//  : QObject(pParent) /* Todo: Not sure if pParent should delete this. Especially on Win there is ref counting implemented. */
+UIMainEventListener::UIMainEventListener()
   : QObject()
 {
@@ -42,4 +41,12 @@
 }
 
+HRESULT UIMainEventListener::init(QObject * /* pParent */)
+{
+    return S_OK;
+}
+
+void    UIMainEventListener::uninit()
+{
+}
 
 /**
@@ -50,5 +57,5 @@
 {
     CEvent event(pEvent);
-//    RTPrintf("Event received: %d (%RTthrd)\n", event.GetType(), RTThreadSelf());
+    // printf("Event received: %d\n", event.GetType());
     switch(event.GetType())
     {
Index: trunk/src/VBox/Frontends/VirtualBox/src/globals/UIMainEventListener.h
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/globals/UIMainEventListener.h	(revision 35710)
+++ trunk/src/VBox/Frontends/VirtualBox/src/globals/UIMainEventListener.h	(revision 35722)
@@ -43,5 +43,9 @@
 
 public:
-    UIMainEventListener(QObject *pParent);
+    UIMainEventListener();
+
+
+    HRESULT init(QObject *pParent);
+    void    uninit();
 
     STDMETHOD(HandleEvent)(VBoxEventType_T aType, IEvent *pEvent);
Index: trunk/src/VBox/Frontends/VirtualBox/src/globals/VBoxGlobal.cpp
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/globals/VBoxGlobal.cpp	(revision 35710)
+++ trunk/src/VBox/Frontends/VirtualBox/src/globals/VBoxGlobal.cpp	(revision 35722)
@@ -5249,9 +5249,5 @@
     QApplication::removePostedEvents (this);
 
-#ifdef Q_WS_WIN
-    /* COM for the main thread is shutdown in main() */
-#else
     COMBase::CleanupCOM();
-#endif
 
     mValid = false;
Index: trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIConsoleEventHandler.cpp
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIConsoleEventHandler.cpp	(revision 35710)
+++ trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIConsoleEventHandler.cpp	(revision 35722)
@@ -59,5 +59,7 @@
 
 //    RTPrintf("Self add: %RTthrd\n", RTThreadSelf());
-    UIMainEventListenerImpl *pListener = new UIMainEventListenerImpl(this);
+    ComObjPtr<UIMainEventListenerImpl> pListener;
+    pListener.createObject();
+    pListener->init(new UIMainEventListener(), this);
     m_mainEventListener = CEventListener(pListener);
     QVector<KVBoxEventType> events;
Index: trunk/src/VBox/Frontends/VirtualBox/src/selector/UIVirtualBoxEventHandler.cpp
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/selector/UIVirtualBoxEventHandler.cpp	(revision 35710)
+++ trunk/src/VBox/Frontends/VirtualBox/src/selector/UIVirtualBoxEventHandler.cpp	(revision 35722)
@@ -52,5 +52,7 @@
 //    RTPrintf("Self add: %RTthrd\n", RTThreadSelf());
     const CVirtualBox &vbox = vboxGlobal().virtualBox();
-    UIMainEventListenerImpl *pListener = new UIMainEventListenerImpl(this);
+    ComObjPtr<UIMainEventListenerImpl> pListener;
+    pListener.createObject();
+    pListener->init(new UIMainEventListener(), this);
     m_mainEventListener = CEventListener(pListener);
     QVector<KVBoxEventType> events;
