src: convert VirtViewerDisplayVnc 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:
Daniel P. Berrangé 2021-02-10 12:28:55 +00:00
parent 45b03df8b8
commit 99f6cd7f87
2 changed files with 40 additions and 64 deletions

View File

@ -30,11 +30,12 @@
#include <glib/gi18n.h>
struct _VirtViewerDisplayVncPrivate {
struct _VirtViewerDisplayVnc {
VirtViewerDisplay parent;
VncDisplay *vnc;
};
G_DEFINE_TYPE_WITH_PRIVATE(VirtViewerDisplayVnc, virt_viewer_display_vnc, VIRT_VIEWER_TYPE_DISPLAY)
G_DEFINE_TYPE(VirtViewerDisplayVnc, virt_viewer_display_vnc, VIRT_VIEWER_TYPE_DISPLAY)
static void virt_viewer_display_vnc_send_keys(VirtViewerDisplay* display, const guint *keyvals, int nkeyvals);
static GdkPixbuf *virt_viewer_display_vnc_get_pixbuf(VirtViewerDisplay* display);
@ -43,9 +44,9 @@ static void virt_viewer_display_vnc_close(VirtViewerDisplay *display);
static void
virt_viewer_display_vnc_finalize(GObject *obj)
{
VirtViewerDisplayVnc *vnc = VIRT_VIEWER_DISPLAY_VNC(obj);
VirtViewerDisplayVnc *self = VIRT_VIEWER_DISPLAY_VNC(obj);
g_object_unref(vnc->priv->vnc);
g_object_unref(self->vnc);
G_OBJECT_CLASS(virt_viewer_display_vnc_parent_class)->finalize(obj);
}
@ -56,7 +57,7 @@ virt_viewer_display_vnc_release_cursor(VirtViewerDisplay *display)
{
VirtViewerDisplayVnc *self = VIRT_VIEWER_DISPLAY_VNC(display);
vnc_display_force_grab(self->priv->vnc, FALSE);
vnc_display_force_grab(self->vnc, FALSE);
}
static void
@ -76,7 +77,6 @@ virt_viewer_display_vnc_class_init(VirtViewerDisplayVncClass *klass)
static void
virt_viewer_display_vnc_init(VirtViewerDisplayVnc *self G_GNUC_UNUSED)
{
self->priv = virt_viewer_display_vnc_get_instance_private(self);
}
@ -147,9 +147,9 @@ virt_viewer_display_vnc_send_keys(VirtViewerDisplay* display,
g_return_if_fail(self != NULL);
g_return_if_fail(keyvals != NULL);
g_return_if_fail(self->priv->vnc != NULL);
g_return_if_fail(self->vnc != NULL);
vnc_display_send_keys(self->priv->vnc, keyvals, nkeyvals);
vnc_display_send_keys(self->vnc, keyvals, nkeyvals);
}
@ -159,9 +159,9 @@ virt_viewer_display_vnc_get_pixbuf(VirtViewerDisplay* display)
VirtViewerDisplayVnc *self = VIRT_VIEWER_DISPLAY_VNC(display);
g_return_val_if_fail(self != NULL, NULL);
g_return_val_if_fail(self->priv->vnc != NULL, NULL);
g_return_val_if_fail(self->vnc != NULL, NULL);
return vnc_display_get_pixbuf(self->priv->vnc);
return vnc_display_get_pixbuf(self->vnc);
}
@ -210,17 +210,17 @@ GtkWidget *
virt_viewer_display_vnc_new(VirtViewerSessionVnc *session,
VncDisplay *vnc)
{
VirtViewerDisplayVnc *display;
VirtViewerDisplayVnc *self;
VirtViewerApp *app;
display = g_object_new(VIRT_VIEWER_TYPE_DISPLAY_VNC, "session", session, NULL);
self = g_object_new(VIRT_VIEWER_TYPE_DISPLAY_VNC, "session", session, NULL);
g_object_ref(vnc);
display->priv->vnc = vnc;
self->vnc = vnc;
gtk_container_add(GTK_CONTAINER(display), GTK_WIDGET(display->priv->vnc));
vnc_display_set_keyboard_grab(display->priv->vnc, TRUE);
vnc_display_set_pointer_grab(display->priv->vnc, TRUE);
gtk_container_add(GTK_CONTAINER(self), GTK_WIDGET(self->vnc));
vnc_display_set_keyboard_grab(self->vnc, TRUE);
vnc_display_set_pointer_grab(self->vnc, TRUE);
/*
* In auto-resize mode we have things setup so that we always
@ -231,43 +231,43 @@ virt_viewer_display_vnc_new(VirtViewerSessionVnc *session,
* We disable force_size because we want to allow user to
* manually size the widget smaller too
*/
vnc_display_set_force_size(display->priv->vnc, FALSE);
vnc_display_set_scaling(display->priv->vnc, TRUE);
vnc_display_set_force_size(self->vnc, FALSE);
vnc_display_set_scaling(self->vnc, TRUE);
/* When VNC desktop resizes, we have to resize the containing widget */
g_signal_connect(display->priv->vnc, "vnc-desktop-resize",
G_CALLBACK(virt_viewer_display_vnc_resize_desktop), display);
g_signal_connect(self->vnc, "vnc-desktop-resize",
G_CALLBACK(virt_viewer_display_vnc_resize_desktop), self);
g_signal_connect(display->priv->vnc, "vnc-pointer-grab",
G_CALLBACK(virt_viewer_display_vnc_mouse_grab), display);
g_signal_connect(display->priv->vnc, "vnc-pointer-ungrab",
G_CALLBACK(virt_viewer_display_vnc_mouse_ungrab), display);
g_signal_connect(display->priv->vnc, "vnc-keyboard-grab",
G_CALLBACK(virt_viewer_display_vnc_key_grab), display);
g_signal_connect(display->priv->vnc, "vnc-keyboard-ungrab",
G_CALLBACK(virt_viewer_display_vnc_key_ungrab), display);
g_signal_connect(display->priv->vnc, "vnc-initialized",
G_CALLBACK(virt_viewer_display_vnc_initialized), display);
g_signal_connect(self->vnc, "vnc-pointer-grab",
G_CALLBACK(virt_viewer_display_vnc_mouse_grab), self);
g_signal_connect(self->vnc, "vnc-pointer-ungrab",
G_CALLBACK(virt_viewer_display_vnc_mouse_ungrab), self);
g_signal_connect(self->vnc, "vnc-keyboard-grab",
G_CALLBACK(virt_viewer_display_vnc_key_grab), self);
g_signal_connect(self->vnc, "vnc-keyboard-ungrab",
G_CALLBACK(virt_viewer_display_vnc_key_ungrab), self);
g_signal_connect(self->vnc, "vnc-initialized",
G_CALLBACK(virt_viewer_display_vnc_initialized), self);
app = virt_viewer_session_get_app(VIRT_VIEWER_SESSION(session));
virt_viewer_signal_connect_object(app, "notify::enable-accel",
G_CALLBACK(enable_accel_changed), display->priv->vnc, 0);
enable_accel_changed(app, NULL, display->priv->vnc);
G_CALLBACK(enable_accel_changed), self->vnc, 0);
enable_accel_changed(app, NULL, self->vnc);
return GTK_WIDGET(display);
return GTK_WIDGET(self);
}
static void
virt_viewer_display_vnc_close(VirtViewerDisplay *display)
{
VirtViewerDisplayVnc *vnc = VIRT_VIEWER_DISPLAY_VNC(display);
VirtViewerDisplayVnc *self = VIRT_VIEWER_DISPLAY_VNC(display);
/* We're not the real owner, so we shouldn't be letting the container
* destroy the widget. There are still signals that need to be
* propagated to the VirtViewerSession
*/
gtk_container_remove(GTK_CONTAINER(display), GTK_WIDGET(vnc->priv->vnc));
gtk_container_remove(GTK_CONTAINER(display), GTK_WIDGET(self->vnc));
}
/*

View File

@ -33,35 +33,11 @@
G_BEGIN_DECLS
#define VIRT_VIEWER_TYPE_DISPLAY_VNC virt_viewer_display_vnc_get_type()
#define VIRT_VIEWER_DISPLAY_VNC(obj) \
(G_TYPE_CHECK_INSTANCE_CAST ((obj), VIRT_VIEWER_TYPE_DISPLAY_VNC, VirtViewerDisplayVnc))
#define VIRT_VIEWER_DISPLAY_VNC_CLASS(klass) \
(G_TYPE_CHECK_CLASS_CAST ((klass), VIRT_VIEWER_TYPE_DISPLAY_VNC, VirtViewerDisplayVncClass))
#define VIRT_VIEWER_IS_DISPLAY_VNC(obj) \
(G_TYPE_CHECK_INSTANCE_TYPE ((obj), VIRT_VIEWER_TYPE_DISPLAY_VNC))
#define VIRT_VIEWER_IS_DISPLAY_VNC_CLASS(klass) \
(G_TYPE_CHECK_CLASS_TYPE ((klass), VIRT_VIEWER_TYPE_DISPLAY_VNC))
#define VIRT_VIEWER_DISPLAY_VNC_GET_CLASS(obj) \
(G_TYPE_INSTANCE_GET_CLASS ((obj), VIRT_VIEWER_TYPE_DISPLAY_VNC, VirtViewerDisplayVncClass))
typedef struct _VirtViewerDisplayVnc VirtViewerDisplayVnc;
typedef struct _VirtViewerDisplayVncClass VirtViewerDisplayVncClass;
typedef struct _VirtViewerDisplayVncPrivate VirtViewerDisplayVncPrivate;
struct _VirtViewerDisplayVnc {
VirtViewerDisplay parent;
VirtViewerDisplayVncPrivate *priv;
};
struct _VirtViewerDisplayVncClass {
VirtViewerDisplayClass parent_class;
};
G_DECLARE_FINAL_TYPE(VirtViewerDisplayVnc,
virt_viewer_display_vnc,
VIRT_VIEWER,
DISPLAY_VNC,
VirtViewerDisplay);
GType virt_viewer_display_vnc_get_type(void);