From a1f0b01afc960e152b142fdb41b7a7f9032d5bfa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Date: Thu, 21 Jul 2011 16:22:30 +0200 Subject: [PATCH] Split virt_viewer_activate() and virt_viewer_set_domain() --- src/virt-viewer.c | 32 +++++++++++++++++++++----------- 1 file changed, 21 insertions(+), 11 deletions(-) diff --git a/src/virt-viewer.c b/src/virt-viewer.c index 1859cda..8ea14cd 100644 --- a/src/virt-viewer.c +++ b/src/virt-viewer.c @@ -1214,20 +1214,15 @@ virt_viewer_channel_open(VirtViewerSession *session G_GNUC_UNUSED, #endif static int -virt_viewer_activate(VirtViewer *viewer, - virDomainPtr dom) +virt_viewer_set_domain(VirtViewer *viewer, + virDomainPtr dom) { - int fd = -1; - int ret = -1; - - if (viewer->active) - goto cleanup; - virt_viewer_trace(viewer, "Guest %s is running, determining display\n", viewer->domkey); + if (viewer->session == NULL) { if (!virt_viewer_extract_connect_info(viewer, dom)) - goto cleanup; + return -1; if (viewer->gport) viewer->pretty_address = g_strdup_printf("%s:%s", viewer->ghost, viewer->gport); @@ -1235,6 +1230,18 @@ virt_viewer_activate(VirtViewer *viewer, viewer->pretty_address = g_strdup_printf("%s:%s", viewer->host, viewer->unixsock); } + return 0; +} + +static int +virt_viewer_activate(VirtViewer *viewer) +{ + int fd = -1; + int ret = -1; + + if (viewer->active) + goto cleanup; + #if defined(HAVE_SOCKETPAIR) && defined(HAVE_FORK) if (viewer->transport && g_strcasecmp(viewer->transport, "ssh") == 0 && @@ -1464,7 +1471,8 @@ virt_viewer_domain_event(virConnectPtr conn G_GNUC_UNUSED, break; case VIR_DOMAIN_EVENT_STARTED: - virt_viewer_activate(viewer, dom); + virt_viewer_set_domain(viewer, dom); + virt_viewer_activate(viewer); break; } @@ -1507,7 +1515,9 @@ virt_viewer_initial_connect(VirtViewer *viewer) if (info.state == VIR_DOMAIN_SHUTOFF) { virt_viewer_set_status(viewer, "Waiting for guest domain to start"); } else { - ret = virt_viewer_activate(viewer, dom); + ret = virt_viewer_set_domain(viewer, dom); + if (ret >= 0) + ret = virt_viewer_activate(viewer); if (ret < 0) { if (viewer->waitvm) { virt_viewer_set_status(viewer, "Waiting for guest domain to start server");