Escape from infinite loop when exiting.

Index: vboxgtk-0.5.0/vboxgtk/vboxdao_xpcom.py
===================================================================
--- vboxgtk-0.5.0.orig/vboxgtk/vboxdao_xpcom.py	2009-08-22 14:18:47.000000000 +0200
+++ vboxgtk-0.5.0/vboxgtk/vboxdao_xpcom.py	2009-08-22 14:18:39.000000000 +0200
@@ -43,7 +43,10 @@
             time.sleep(0.5)
             # Random VirtualBox API function. Needed to activate the 
             # callback. Will be fixed VirtualBox 3.0:
-            self.vbox.getGuestOSTypes()  
+            if self.vbox:
+                self.vbox.getGuestOSTypes()  
+            else:
+                break
         return 0
         
 
@@ -118,12 +121,12 @@
 
     def start(self):
         self.vbox.registerCallback(self.cb)
-        thread = ListenerThread(self.vbox);
-        thread.daemon = True
-        thread.start()        
+        self.thread = ListenerThread(self.vbox);
+        self.thread.daemon = True
+        self.thread.start()        
 
     def exit(self):
-        return False
+        self.thread.vbox = None
 
     ## Session
 
Index: vboxgtk-0.5.0/vboxgtk/vboxgtk_iface.py
===================================================================
--- vboxgtk-0.5.0.orig/vboxgtk/vboxgtk_iface.py	2009-08-22 14:18:46.000000000 +0200
+++ vboxgtk-0.5.0/vboxgtk/vboxgtk_iface.py	2009-08-22 14:17:20.000000000 +0200
@@ -786,6 +786,8 @@
 
 
 def main():
-    VBoxGtk(vboxdao_xpcom.VBoxDaoXpcom())
+    vboxdao = vboxdao_xpcom.VBoxDaoXpcom()
+    VBoxGtk(vboxdao)
     gtk.gdk.threads_init()
     gtk.main()
+    vboxdao.exit()
