diff --git a/src/virtManager/connection.py b/src/virtManager/connection.py index 22d986456..b5f1c612c 100644 --- a/src/virtManager/connection.py +++ b/src/virtManager/connection.py @@ -59,7 +59,7 @@ class vmmConnection(gobject.GObject): def get_vm(self, uuid): return self.vms[uuid] - def disconnect(self): + def close(self): if self.vmm == None: return @@ -71,12 +71,14 @@ class vmmConnection(gobject.GObject): return self.hostinfo def connect(self, name, callback): - gobject.GObject.connect(self, name, callback) + handle_id = gobject.GObject.connect(self, name, callback) if name == "vm-added": for uuid in self.vms.keys(): self.emit("vm-added", self.uri, uuid) + return handle_id + def host_memory_size(self): return self.hostinfo[1]*1024 diff --git a/src/virtManager/create.py b/src/virtManager/create.py index 04d156b2e..983083046 100644 --- a/src/virtManager/create.py +++ b/src/virtManager/create.py @@ -79,9 +79,9 @@ class vmmCreate(gobject.GObject): }) self.set_initial_state() - self.connection.connect("vm-added", self.open_vm_console) def show(self): + self.vm_added_handle = self.connection.connect("vm-added", self.open_vm_console) self.topwin.show() def _init_members(self): @@ -99,6 +99,7 @@ class vmmCreate(gobject.GObject): self.startup_memory = 0 self.vcpus = 1 self.vm_uuid = None + self.vm_added_handle = None def set_initial_state(self): notebook = self.window.get_widget("create-pages") @@ -264,6 +265,8 @@ class vmmCreate(gobject.GObject): self.window.get_widget("create-finish").show() def close(self, ignore1=None,ignore2=None): + self.connection.disconnect(int(self.vm_added_handle)) + self.vm_added_handle = None self.topwin.hide() return 1 @@ -536,7 +539,6 @@ class vmmCreate(gobject.GObject): message_box.destroy() def open_vm_console(self,ignore,uri,uuid): - print "********* create.py: got vm-added signal. uuid = %s, self.vm_uuid = %s" % (uuid, self.vm_uuid) if uuid == self.vm_uuid: if (self.virt_method == VM_PARAVIRT): self.emit("action-show-terminal", self.connection.get_uri(), self.vm_uuid) diff --git a/src/virtManager/engine.py b/src/virtManager/engine.py index ca74a4a55..f49ee6161 100644 --- a/src/virtManager/engine.py +++ b/src/virtManager/engine.py @@ -210,6 +210,7 @@ class vmmEngine: self.connections[uri]["windowManager"].show() def show_create(self, uri): + if self.windowCreate == None: self.windowCreate = vmmCreate(self.get_config(), self.get_connection(uri, False)) self.windowCreate.connect("action-show-console", self._do_show_console) diff --git a/src/virtManager/manager.py b/src/virtManager/manager.py index 8f36e1194..a5ef08169 100644 --- a/src/virtManager/manager.py +++ b/src/virtManager/manager.py @@ -144,7 +144,7 @@ class vmmManager(gobject.GObject): win.present() def close(self, src=None, src2=None): - self.connection.disconnect() + self.connection.close() win = self.window.get_widget("vmm-manager") win.hide() return 1