[virt-tools-list] [PATCH 06/12] Make virt_viewer_activate() a vfunc
Marc-André Lureau
marcandre.lureau at gmail.com
Tue Dec 13 19:35:04 UTC 2011
(so it can be overriden)
---
src/virt-viewer-app.c | 49 +++++++++++++++++++++++++++++++------------------
src/virt-viewer-app.h | 1 +
2 files changed, 32 insertions(+), 18 deletions(-)
diff --git a/src/virt-viewer-app.c b/src/virt-viewer-app.c
index 3bc69f7..97b53c2 100644
--- a/src/virt-viewer-app.c
+++ b/src/virt-viewer-app.c
@@ -679,16 +679,11 @@ virt_viewer_app_channel_open(VirtViewerSession *session G_GNUC_UNUSED,
}
#endif
-int
-virt_viewer_app_activate(VirtViewerApp *self)
+static int
+virt_viewer_app_default_activate(VirtViewerApp *self)
{
- g_return_val_if_fail(VIRT_VIEWER_IS_APP(self), -1);
VirtViewerAppPrivate *priv = self->priv;
int fd = -1;
- int ret = -1;
-
- if (priv->active)
- goto cleanup;
#if defined(HAVE_SOCKETPAIR) && defined(HAVE_FORK)
if (priv->transport &&
@@ -725,25 +720,42 @@ virt_viewer_app_activate(VirtViewerApp *self)
#endif
if (fd >= 0) {
- ret = virt_viewer_session_open_fd(VIRT_VIEWER_SESSION(priv->session), fd);
- } else if (priv->guri) {
+ return virt_viewer_session_open_fd(VIRT_VIEWER_SESSION(priv->session), fd);
+ } else if (priv->guri) {
virt_viewer_app_trace(self, "Opening connection to display at %s\n", priv->guri);
- ret = virt_viewer_session_open_uri(VIRT_VIEWER_SESSION(priv->session), priv->guri);
+ return virt_viewer_session_open_uri(VIRT_VIEWER_SESSION(priv->session), priv->guri);
} else {
virt_viewer_app_trace(self, "Opening direct TCP connection to display at %s:%s\n",
priv->ghost, priv->gport);
- ret = virt_viewer_session_open_host(VIRT_VIEWER_SESSION(priv->session),
- priv->ghost, priv->gport);
+ return virt_viewer_session_open_host(VIRT_VIEWER_SESSION(priv->session),
+ priv->ghost, priv->gport);
}
- virt_viewer_app_show_status(self, _("Connecting to graphic server"));
+ return -1;
+}
- priv->connected = FALSE;
- priv->active = TRUE;
- priv->grabbed = FALSE;
- virt_viewer_app_update_title(self);
+int
+virt_viewer_app_activate(VirtViewerApp *self)
+{
+ VirtViewerAppPrivate *priv;
+ int ret;
+
+ g_return_val_if_fail(VIRT_VIEWER_IS_APP(self), -1);
+
+ priv = self->priv;
+ if (priv->active)
+ return -1;
+
+ ret = VIRT_VIEWER_APP_GET_CLASS(self)->activate(self);
+
+ if (ret != -1) {
+ virt_viewer_app_show_status(self, _("Connecting to graphic server"));
+ priv->connected = FALSE;
+ priv->active = TRUE;
+ priv->grabbed = FALSE;
+ virt_viewer_app_update_title(self);
+ }
- cleanup:
return ret;
}
@@ -1166,6 +1178,7 @@ virt_viewer_app_class_init (VirtViewerAppClass *klass)
klass->start = virt_viewer_app_default_start;
klass->initial_connect = virt_viewer_app_default_initial_connect;
+ klass->activate = virt_viewer_app_default_activate;
klass->deactivated = virt_viewer_app_default_deactivated;
g_object_class_install_property(object_class,
diff --git a/src/virt-viewer-app.h b/src/virt-viewer-app.h
index 93b2b58..7c3f0a7 100644
--- a/src/virt-viewer-app.h
+++ b/src/virt-viewer-app.h
@@ -53,6 +53,7 @@ typedef struct {
/*< private >*/
gboolean (*start) (VirtViewerApp *self);
int (*initial_connect) (VirtViewerApp *self);
+ int (*activate) (VirtViewerApp *self);
void (*deactivated) (VirtViewerApp *self);
} VirtViewerAppClass;
--
1.7.7.3
More information about the virt-tools-list
mailing list