diff options
author | Cole Robinson <crobinso@redhat.com> | 2020-09-20 21:55:27 -0400 |
---|---|---|
committer | Cole Robinson <crobinso@redhat.com> | 2020-09-21 09:06:18 -0400 |
commit | e58cc956b560773358a56608d6c755e3ca91f0bc (patch) | |
tree | 72b1d15a81886d4de1abd5792c62aeadd568ee82 /virtManager/vmwindow.py | |
parent | c0c704e1fae6d2b3eef744b020854318fb9eb7df (diff) | |
download | virt-manager-e58cc956b560773358a56608d6c755e3ca91f0bc.tar.gz |
vmwindow: vm state-changed update flow changes
* Don't process events when the window isn't showing
* Only update console/details if that tab is actually selected.
Otherwise in some corner cases we can connect to the VM console
while on the details page
Signed-off-by: Cole Robinson <crobinso@redhat.com>
Diffstat (limited to 'virtManager/vmwindow.py')
-rw-r--r-- | virtManager/vmwindow.py | 29 |
1 files changed, 15 insertions, 14 deletions
diff --git a/virtManager/vmwindow.py b/virtManager/vmwindow.py index 84715abc..7783ead4 100644 --- a/virtManager/vmwindow.py +++ b/virtManager/vmwindow.py @@ -251,10 +251,8 @@ class vmmVMWindow(vmmGObjectUI): return self.topwin.hide() - try: - self._console.vmwindow_close_viewer() - except Exception: # pragma: no cover - log.error("Failure when disconnecting from desktop server") + self._console.vmwindow_close() + self._details.vmwindow_close() self.emit("closed") vmmEngine.get_instance().decrement_window_counter() @@ -336,10 +334,8 @@ class vmmVMWindow(vmmGObjectUI): return if is_details: - self._details.vmwindow_show_details() pages.set_current_page(DETAILS_PAGE_DETAILS) elif is_snapshot: - self._snapshots.show_page() pages.set_current_page(DETAILS_PAGE_SNAPSHOTS) else: pages.set_current_page(DETAILS_PAGE_CONSOLE) @@ -438,8 +434,6 @@ class vmmVMWindow(vmmGObjectUI): self.widget("control-snapshots").set_tooltip_text(tooltip) self._refresh_current_page() - self._details.vmwindow_refresh_vm_state() - self._console.vmwindow_refresh_vm_state() ############################# @@ -584,10 +578,15 @@ class vmmVMWindow(vmmGObjectUI): self._details.vmwindow_resources_refreshed() def _refresh_current_page(self, newpage=None): - if not newpage: - newpage = self.widget("details-pages").get_current_page() - if newpage == DETAILS_PAGE_DETAILS: - self._details.vmwindow_page_refresh() + newpage = newpage or self.widget("details-pages").get_current_page() + + is_details = newpage == DETAILS_PAGE_DETAILS + self._details.vmwindow_refresh_vm_state(is_details) + + if newpage == DETAILS_PAGE_CONSOLE: + self._console.vmwindow_refresh_vm_state() + elif newpage == DETAILS_PAGE_SNAPSHOTS: + self._snapshots.vmwindow_refresh_vm_state() ######################### @@ -698,10 +697,12 @@ class vmmVMWindow(vmmGObjectUI): self._refresh_title() def _vm_state_changed_cb(self, src): - self._refresh_vm_state() + if self.is_visible(): + self._refresh_vm_state() def _resources_sampled_cb(self, src): - self._refresh_resources() + if self.is_visible(): + self._refresh_resources() def _console_page_changed_cb(self, src): self._sync_console_page_menu_state() |