mirror of
https://gitlab.uni-freiburg.de/opensourcevdi/virt-viewer
synced 2026-01-08 21:14:16 +00:00
src: convert VirtViewerSessionVnc to G_DECLARE_FINAL_TYPE
This removes the use of a private data struct. Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
This commit is contained in:
parent
1985713f78
commit
4973411ed8
@ -34,14 +34,15 @@
|
||||
#include <glib/gi18n.h>
|
||||
#include <libxml/uri.h>
|
||||
|
||||
struct _VirtViewerSessionVncPrivate {
|
||||
struct _VirtViewerSessionVnc {
|
||||
VirtViewerSession parent;
|
||||
GtkWindow *main_window;
|
||||
/* XXX we should really just have a VncConnection */
|
||||
VncDisplay *vnc;
|
||||
gboolean auth_dialog_cancelled;
|
||||
};
|
||||
|
||||
G_DEFINE_TYPE_WITH_PRIVATE(VirtViewerSessionVnc, virt_viewer_session_vnc, VIRT_VIEWER_TYPE_SESSION)
|
||||
G_DEFINE_TYPE(VirtViewerSessionVnc, virt_viewer_session_vnc, VIRT_VIEWER_TYPE_SESSION)
|
||||
|
||||
static void virt_viewer_session_vnc_close(VirtViewerSession* session);
|
||||
static gboolean virt_viewer_session_vnc_open_fd(VirtViewerSession* session, int fd);
|
||||
@ -54,14 +55,14 @@ static gboolean virt_viewer_session_vnc_channel_open_fd(VirtViewerSession* sessi
|
||||
static void
|
||||
virt_viewer_session_vnc_finalize(GObject *obj)
|
||||
{
|
||||
VirtViewerSessionVnc *vnc = VIRT_VIEWER_SESSION_VNC(obj);
|
||||
VirtViewerSessionVnc *self = VIRT_VIEWER_SESSION_VNC(obj);
|
||||
|
||||
if (vnc->priv->vnc) {
|
||||
vnc_display_close(vnc->priv->vnc);
|
||||
g_object_unref(vnc->priv->vnc);
|
||||
if (self->vnc) {
|
||||
vnc_display_close(self->vnc);
|
||||
g_object_unref(self->vnc);
|
||||
}
|
||||
if (vnc->priv->main_window)
|
||||
g_object_unref(vnc->priv->main_window);
|
||||
if (self->main_window)
|
||||
g_object_unref(self->main_window);
|
||||
|
||||
G_OBJECT_CLASS(virt_viewer_session_vnc_parent_class)->finalize(obj);
|
||||
}
|
||||
@ -91,38 +92,37 @@ virt_viewer_session_vnc_class_init(VirtViewerSessionVncClass *klass)
|
||||
static void
|
||||
virt_viewer_session_vnc_init(VirtViewerSessionVnc *self G_GNUC_UNUSED)
|
||||
{
|
||||
self->priv = virt_viewer_session_vnc_get_instance_private(self);
|
||||
}
|
||||
|
||||
static void
|
||||
virt_viewer_session_vnc_connected(VncDisplay *vnc G_GNUC_UNUSED,
|
||||
VirtViewerSessionVnc *session)
|
||||
VirtViewerSessionVnc *self)
|
||||
{
|
||||
GtkWidget *display = virt_viewer_display_vnc_new(session, session->priv->vnc);
|
||||
VirtViewerApp *app = virt_viewer_session_get_app(VIRT_VIEWER_SESSION(session));
|
||||
GtkWidget *display = virt_viewer_display_vnc_new(self, self->vnc);
|
||||
VirtViewerApp *app = virt_viewer_session_get_app(VIRT_VIEWER_SESSION(self));
|
||||
|
||||
session->priv->auth_dialog_cancelled = FALSE;
|
||||
self->auth_dialog_cancelled = FALSE;
|
||||
|
||||
virt_viewer_window_set_display(virt_viewer_app_get_main_window(app),
|
||||
VIRT_VIEWER_DISPLAY(display));
|
||||
|
||||
g_signal_emit_by_name(session, "session-connected");
|
||||
virt_viewer_session_add_display(VIRT_VIEWER_SESSION(session),
|
||||
g_signal_emit_by_name(self, "session-connected");
|
||||
virt_viewer_session_add_display(VIRT_VIEWER_SESSION(self),
|
||||
VIRT_VIEWER_DISPLAY(display));
|
||||
}
|
||||
|
||||
static void
|
||||
virt_viewer_session_vnc_disconnected(VncDisplay *vnc G_GNUC_UNUSED,
|
||||
VirtViewerSessionVnc *session)
|
||||
VirtViewerSessionVnc *self)
|
||||
{
|
||||
GtkWidget *display;
|
||||
if (session->priv->auth_dialog_cancelled)
|
||||
if (self->auth_dialog_cancelled)
|
||||
return;
|
||||
|
||||
virt_viewer_session_clear_displays(VIRT_VIEWER_SESSION(session));
|
||||
display = virt_viewer_display_vnc_new(session, session->priv->vnc);
|
||||
virt_viewer_session_clear_displays(VIRT_VIEWER_SESSION(self));
|
||||
display = virt_viewer_display_vnc_new(self, self->vnc);
|
||||
g_debug("Disconnected");
|
||||
g_signal_emit_by_name(session, "session-disconnected", NULL);
|
||||
g_signal_emit_by_name(self, "session-disconnected", NULL);
|
||||
virt_viewer_display_set_enabled(VIRT_VIEWER_DISPLAY(display), FALSE);
|
||||
virt_viewer_display_set_show_hint(VIRT_VIEWER_DISPLAY(display),
|
||||
VIRT_VIEWER_DISPLAY_SHOW_HINT_READY, FALSE);
|
||||
@ -188,9 +188,9 @@ virt_viewer_session_vnc_open_fd(VirtViewerSession* session,
|
||||
VirtViewerSessionVnc *self = VIRT_VIEWER_SESSION_VNC(session);
|
||||
|
||||
g_return_val_if_fail(self != NULL, FALSE);
|
||||
g_return_val_if_fail(self->priv->vnc != NULL, FALSE);
|
||||
g_return_val_if_fail(self->vnc != NULL, FALSE);
|
||||
|
||||
return vnc_display_open_fd(self->priv->vnc, fd);
|
||||
return vnc_display_open_fd(self->vnc, fd);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
@ -211,9 +211,9 @@ virt_viewer_session_vnc_open_host(VirtViewerSession* session,
|
||||
VirtViewerSessionVnc *self = VIRT_VIEWER_SESSION_VNC(session);
|
||||
|
||||
g_return_val_if_fail(self != NULL, FALSE);
|
||||
g_return_val_if_fail(self->priv->vnc != NULL, FALSE);
|
||||
g_return_val_if_fail(self->vnc != NULL, FALSE);
|
||||
|
||||
return vnc_display_open_host(self->priv->vnc, host, port);
|
||||
return vnc_display_open_host(self->vnc, host, port);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
@ -229,7 +229,7 @@ virt_viewer_session_vnc_open_uri(VirtViewerSession* session,
|
||||
gboolean ret;
|
||||
|
||||
g_return_val_if_fail(self != NULL, FALSE);
|
||||
g_return_val_if_fail(self->priv->vnc != NULL, FALSE);
|
||||
g_return_val_if_fail(self->vnc != NULL, FALSE);
|
||||
|
||||
if (file) {
|
||||
g_return_val_if_fail(virt_viewer_file_is_set(file, "port"), FALSE);
|
||||
@ -261,7 +261,7 @@ virt_viewer_session_vnc_open_uri(VirtViewerSession* session,
|
||||
xmlFreeURI(uri);
|
||||
}
|
||||
|
||||
ret = vnc_display_open_host(self->priv->vnc,
|
||||
ret = vnc_display_open_host(self->vnc,
|
||||
hoststr,
|
||||
portstr);
|
||||
g_free(portstr);
|
||||
@ -296,7 +296,7 @@ virt_viewer_session_vnc_auth_credential(GtkWidget *src G_GNUC_UNUSED,
|
||||
break;
|
||||
default:
|
||||
g_debug("Unsupported credential type %d", g_value_get_enum(cred));
|
||||
vnc_display_close(self->priv->vnc);
|
||||
vnc_display_close(self->vnc);
|
||||
goto cleanup;
|
||||
}
|
||||
}
|
||||
@ -318,14 +318,14 @@ virt_viewer_session_vnc_auth_credential(GtkWidget *src G_GNUC_UNUSED,
|
||||
}
|
||||
|
||||
if (wantUsername || wantPassword) {
|
||||
gboolean ret = virt_viewer_auth_collect_credentials(self->priv->main_window,
|
||||
gboolean ret = virt_viewer_auth_collect_credentials(self->main_window,
|
||||
"VNC", NULL,
|
||||
wantUsername ? &username : NULL,
|
||||
wantPassword ? &password : NULL);
|
||||
|
||||
if (!ret) {
|
||||
vnc_display_close(self->priv->vnc);
|
||||
self->priv->auth_dialog_cancelled = TRUE;
|
||||
vnc_display_close(self->vnc);
|
||||
self->auth_dialog_cancelled = TRUE;
|
||||
g_signal_emit_by_name(self, "session-cancelled");
|
||||
goto cleanup;
|
||||
}
|
||||
@ -336,33 +336,33 @@ virt_viewer_session_vnc_auth_credential(GtkWidget *src G_GNUC_UNUSED,
|
||||
switch (g_value_get_enum(cred)) {
|
||||
case VNC_DISPLAY_CREDENTIAL_USERNAME:
|
||||
if (!username ||
|
||||
vnc_display_set_credential(self->priv->vnc,
|
||||
vnc_display_set_credential(self->vnc,
|
||||
g_value_get_enum(cred),
|
||||
username)) {
|
||||
g_debug("Failed to set credential type %d", g_value_get_enum(cred));
|
||||
vnc_display_close(self->priv->vnc);
|
||||
vnc_display_close(self->vnc);
|
||||
}
|
||||
break;
|
||||
case VNC_DISPLAY_CREDENTIAL_PASSWORD:
|
||||
if (!password ||
|
||||
vnc_display_set_credential(self->priv->vnc,
|
||||
vnc_display_set_credential(self->vnc,
|
||||
g_value_get_enum(cred),
|
||||
password)) {
|
||||
g_debug("Failed to set credential type %d", g_value_get_enum(cred));
|
||||
vnc_display_close(self->priv->vnc);
|
||||
vnc_display_close(self->vnc);
|
||||
}
|
||||
break;
|
||||
case VNC_DISPLAY_CREDENTIAL_CLIENTNAME:
|
||||
if (vnc_display_set_credential(self->priv->vnc,
|
||||
if (vnc_display_set_credential(self->vnc,
|
||||
g_value_get_enum(cred),
|
||||
"libvirt")) {
|
||||
g_debug("Failed to set credential type %d", g_value_get_enum(cred));
|
||||
vnc_display_close(self->priv->vnc);
|
||||
vnc_display_close(self->vnc);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
g_debug("Unsupported credential type %d", g_value_get_enum(cred));
|
||||
vnc_display_close(self->priv->vnc);
|
||||
vnc_display_close(self->vnc);
|
||||
}
|
||||
}
|
||||
|
||||
@ -379,35 +379,35 @@ virt_viewer_session_vnc_close(VirtViewerSession* session)
|
||||
|
||||
g_return_if_fail(self != NULL);
|
||||
|
||||
g_debug("close vnc=%p", self->priv->vnc);
|
||||
if (self->priv->vnc != NULL) {
|
||||
g_debug("close vnc=%p", self->vnc);
|
||||
if (self->vnc != NULL) {
|
||||
virt_viewer_session_clear_displays(session);
|
||||
vnc_display_close(self->priv->vnc);
|
||||
g_object_unref(self->priv->vnc);
|
||||
vnc_display_close(self->vnc);
|
||||
g_object_unref(self->vnc);
|
||||
}
|
||||
|
||||
self->priv->vnc = VNC_DISPLAY(vnc_display_new());
|
||||
g_object_ref_sink(self->priv->vnc);
|
||||
self->vnc = VNC_DISPLAY(vnc_display_new());
|
||||
g_object_ref_sink(self->vnc);
|
||||
|
||||
g_signal_connect(self->priv->vnc, "vnc-connected",
|
||||
g_signal_connect(self->vnc, "vnc-connected",
|
||||
G_CALLBACK(virt_viewer_session_vnc_connected), session);
|
||||
g_signal_connect(self->priv->vnc, "vnc-initialized",
|
||||
g_signal_connect(self->vnc, "vnc-initialized",
|
||||
G_CALLBACK(virt_viewer_session_vnc_initialized), session);
|
||||
g_signal_connect(self->priv->vnc, "vnc-disconnected",
|
||||
g_signal_connect(self->vnc, "vnc-disconnected",
|
||||
G_CALLBACK(virt_viewer_session_vnc_disconnected), session);
|
||||
g_signal_connect(self->priv->vnc, "vnc-error",
|
||||
g_signal_connect(self->vnc, "vnc-error",
|
||||
G_CALLBACK(virt_viewer_session_vnc_error), session);
|
||||
|
||||
g_signal_connect(self->priv->vnc, "vnc-bell",
|
||||
g_signal_connect(self->vnc, "vnc-bell",
|
||||
G_CALLBACK(virt_viewer_session_vnc_bell), session);
|
||||
g_signal_connect(self->priv->vnc, "vnc-auth-failure",
|
||||
g_signal_connect(self->vnc, "vnc-auth-failure",
|
||||
G_CALLBACK(virt_viewer_session_vnc_auth_failure), session);
|
||||
g_signal_connect(self->priv->vnc, "vnc-auth-unsupported",
|
||||
g_signal_connect(self->vnc, "vnc-auth-unsupported",
|
||||
G_CALLBACK(virt_viewer_session_vnc_auth_unsupported), session);
|
||||
g_signal_connect(self->priv->vnc, "vnc-server-cut-text",
|
||||
g_signal_connect(self->vnc, "vnc-server-cut-text",
|
||||
G_CALLBACK(virt_viewer_session_vnc_cut_text), session);
|
||||
|
||||
g_signal_connect(self->priv->vnc, "vnc-auth-credential",
|
||||
g_signal_connect(self->vnc, "vnc-auth-credential",
|
||||
G_CALLBACK(virt_viewer_session_vnc_auth_credential), session);
|
||||
|
||||
}
|
||||
@ -415,39 +415,39 @@ virt_viewer_session_vnc_close(VirtViewerSession* session)
|
||||
VirtViewerSession *
|
||||
virt_viewer_session_vnc_new(VirtViewerApp *app, GtkWindow *main_window)
|
||||
{
|
||||
VirtViewerSessionVnc *session;
|
||||
VirtViewerSessionVnc *self;
|
||||
|
||||
session = g_object_new(VIRT_VIEWER_TYPE_SESSION_VNC, "app", app, NULL);
|
||||
self = g_object_new(VIRT_VIEWER_TYPE_SESSION_VNC, "app", app, NULL);
|
||||
|
||||
session->priv->vnc = VNC_DISPLAY(vnc_display_new());
|
||||
g_object_ref_sink(session->priv->vnc);
|
||||
session->priv->main_window = g_object_ref(main_window);
|
||||
self->vnc = VNC_DISPLAY(vnc_display_new());
|
||||
g_object_ref_sink(self->vnc);
|
||||
self->main_window = g_object_ref(main_window);
|
||||
|
||||
vnc_display_set_shared_flag(session->priv->vnc,
|
||||
vnc_display_set_shared_flag(self->vnc,
|
||||
virt_viewer_app_get_shared(app));
|
||||
|
||||
g_signal_connect(session->priv->vnc, "vnc-connected",
|
||||
G_CALLBACK(virt_viewer_session_vnc_connected), session);
|
||||
g_signal_connect(session->priv->vnc, "vnc-initialized",
|
||||
G_CALLBACK(virt_viewer_session_vnc_initialized), session);
|
||||
g_signal_connect(session->priv->vnc, "vnc-disconnected",
|
||||
G_CALLBACK(virt_viewer_session_vnc_disconnected), session);
|
||||
g_signal_connect(session->priv->vnc, "vnc-error",
|
||||
G_CALLBACK(virt_viewer_session_vnc_error), session);
|
||||
g_signal_connect(self->vnc, "vnc-connected",
|
||||
G_CALLBACK(virt_viewer_session_vnc_connected), self);
|
||||
g_signal_connect(self->vnc, "vnc-initialized",
|
||||
G_CALLBACK(virt_viewer_session_vnc_initialized), self);
|
||||
g_signal_connect(self->vnc, "vnc-disconnected",
|
||||
G_CALLBACK(virt_viewer_session_vnc_disconnected), self);
|
||||
g_signal_connect(self->vnc, "vnc-error",
|
||||
G_CALLBACK(virt_viewer_session_vnc_error), self);
|
||||
|
||||
g_signal_connect(session->priv->vnc, "vnc-bell",
|
||||
G_CALLBACK(virt_viewer_session_vnc_bell), session);
|
||||
g_signal_connect(session->priv->vnc, "vnc-auth-failure",
|
||||
G_CALLBACK(virt_viewer_session_vnc_auth_failure), session);
|
||||
g_signal_connect(session->priv->vnc, "vnc-auth-unsupported",
|
||||
G_CALLBACK(virt_viewer_session_vnc_auth_unsupported), session);
|
||||
g_signal_connect(session->priv->vnc, "vnc-server-cut-text",
|
||||
G_CALLBACK(virt_viewer_session_vnc_cut_text), session);
|
||||
g_signal_connect(self->vnc, "vnc-bell",
|
||||
G_CALLBACK(virt_viewer_session_vnc_bell), self);
|
||||
g_signal_connect(self->vnc, "vnc-auth-failure",
|
||||
G_CALLBACK(virt_viewer_session_vnc_auth_failure), self);
|
||||
g_signal_connect(self->vnc, "vnc-auth-unsupported",
|
||||
G_CALLBACK(virt_viewer_session_vnc_auth_unsupported), self);
|
||||
g_signal_connect(self->vnc, "vnc-server-cut-text",
|
||||
G_CALLBACK(virt_viewer_session_vnc_cut_text), self);
|
||||
|
||||
g_signal_connect(session->priv->vnc, "vnc-auth-credential",
|
||||
G_CALLBACK(virt_viewer_session_vnc_auth_credential), session);
|
||||
g_signal_connect(self->vnc, "vnc-auth-credential",
|
||||
G_CALLBACK(virt_viewer_session_vnc_auth_credential), self);
|
||||
|
||||
return VIRT_VIEWER_SESSION(session);
|
||||
return VIRT_VIEWER_SESSION(self);
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
@ -32,35 +32,11 @@
|
||||
G_BEGIN_DECLS
|
||||
|
||||
#define VIRT_VIEWER_TYPE_SESSION_VNC virt_viewer_session_vnc_get_type()
|
||||
|
||||
#define VIRT_VIEWER_SESSION_VNC(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_CAST ((obj), VIRT_VIEWER_TYPE_SESSION_VNC, VirtViewerSessionVnc))
|
||||
|
||||
#define VIRT_VIEWER_SESSION_VNC_CLASS(klass) \
|
||||
(G_TYPE_CHECK_CLASS_CAST ((klass), VIRT_VIEWER_TYPE_SESSION_VNC, VirtViewerSessionVncClass))
|
||||
|
||||
#define VIRT_VIEWER_IS_SESSION_VNC(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_TYPE ((obj), VIRT_VIEWER_TYPE_SESSION_VNC))
|
||||
|
||||
#define VIRT_VIEWER_IS_SESSION_VNC_CLASS(klass) \
|
||||
(G_TYPE_CHECK_CLASS_TYPE ((klass), VIRT_VIEWER_TYPE_SESSION_VNC))
|
||||
|
||||
#define VIRT_VIEWER_SESSION_VNC_GET_CLASS(obj) \
|
||||
(G_TYPE_INSTANCE_GET_CLASS ((obj), VIRT_VIEWER_TYPE_SESSION_VNC, VirtViewerSessionVncClass))
|
||||
|
||||
typedef struct _VirtViewerSessionVnc VirtViewerSessionVnc;
|
||||
typedef struct _VirtViewerSessionVncClass VirtViewerSessionVncClass;
|
||||
typedef struct _VirtViewerSessionVncPrivate VirtViewerSessionVncPrivate;
|
||||
|
||||
struct _VirtViewerSessionVnc {
|
||||
VirtViewerSession parent;
|
||||
|
||||
VirtViewerSessionVncPrivate *priv;
|
||||
};
|
||||
|
||||
struct _VirtViewerSessionVncClass {
|
||||
VirtViewerSessionClass parent_class;
|
||||
};
|
||||
G_DECLARE_FINAL_TYPE(VirtViewerSessionVnc,
|
||||
virt_viewer_session_vnc,
|
||||
VIRT_VIEWER,
|
||||
SESSION_VNC,
|
||||
VirtViewerSession)
|
||||
|
||||
GType virt_viewer_session_vnc_get_type(void);
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user