--- src/virt-viewer-display.c | 12 ++++++++++++ src/virt-viewer-display.h | 7 +++++-- src/virt-viewer-session.c | 30 ++++++++++++++++++++++++++++++ src/virt-viewer-session.h | 7 +++++-- 4 files changed, 52 insertions(+), 4 deletions(-) diff --git a/src/virt-viewer-display.c b/src/virt-viewer-display.c index 5b2cdc1..ec4fe52 100644 --- a/src/virt-viewer-display.c +++ b/src/virt-viewer-display.c @@ -567,6 +567,18 @@ gboolean virt_viewer_display_get_auto_resize(VirtViewerDisplay *self) return self->priv->auto_resize; } +void virt_viewer_display_release_cursor(VirtViewerDisplay *self) +{ + VirtViewerDisplayClass *klass; + + g_return_if_fail(VIRT_VIEWER_IS_DISPLAY(self)); + + klass = VIRT_VIEWER_DISPLAY_GET_CLASS(self); + g_return_if_fail(klass->release_cursor != NULL); + + klass->release_cursor(self); +} + /* * Local variables: * c-indent-level: 4 diff --git a/src/virt-viewer-display.h b/src/virt-viewer-display.h index 17a3390..07db5fd 100644 --- a/src/virt-viewer-display.h +++ b/src/virt-viewer-display.h @@ -70,9 +70,10 @@ struct _VirtViewerDisplayClass { GtkBinClass parent_class; /* virtual methods */ - void (*send_keys)(VirtViewerDisplay* display, + void (*send_keys)(VirtViewerDisplay *display, const guint *keyvals, int nkeyvals); - GdkPixbuf *(*get_pixbuf)(VirtViewerDisplay* display); + GdkPixbuf *(*get_pixbuf)(VirtViewerDisplay *display); + void (*release_cursor)(VirtViewerDisplay *display); /* signals */ void (*display_pointer_grab)(VirtViewerDisplay *display); @@ -109,6 +110,8 @@ void virt_viewer_display_set_show_hint(VirtViewerDisplay *display, gint hint); VirtViewerSession* virt_viewer_display_get_session(VirtViewerDisplay *display); void virt_viewer_display_set_auto_resize(VirtViewerDisplay *display, gboolean auto_resize); gboolean virt_viewer_display_get_auto_resize(VirtViewerDisplay *display); +void virt_viewer_display_release_cursor(VirtViewerDisplay *display); + G_END_DECLS #endif /* _VIRT_VIEWER_DISPLAY_H */ diff --git a/src/virt-viewer-session.c b/src/virt-viewer-session.c index 7551567..c0d6e65 100644 --- a/src/virt-viewer-session.c +++ b/src/virt-viewer-session.c @@ -378,6 +378,36 @@ void virt_viewer_session_usb_device_selection(VirtViewerSession *self, klass->usb_device_selection(self, parent); } +void virt_viewer_session_smartcard_insert(VirtViewerSession *self) +{ + VirtViewerSessionClass *klass; + + g_return_if_fail(VIRT_VIEWER_IS_SESSION(self)); + + klass = VIRT_VIEWER_SESSION_GET_CLASS(self); + if (klass->smartcard_insert == NULL) { + g_debug("No session smartcard support"); + return; + } + + klass->smartcard_insert(self); +} + +void virt_viewer_session_smartcard_remove(VirtViewerSession *self) +{ + VirtViewerSessionClass *klass; + + g_return_if_fail(VIRT_VIEWER_IS_SESSION(self)); + + klass = VIRT_VIEWER_SESSION_GET_CLASS(self); + if (klass->smartcard_remove == NULL) { + g_debug("No session smartcard support"); + return; + } + + klass->smartcard_remove(self); +} + /* * Local variables: * c-indent-level: 4 diff --git a/src/virt-viewer-session.h b/src/virt-viewer-session.h index 59a7c61..c20f23d 100644 --- a/src/virt-viewer-session.h +++ b/src/virt-viewer-session.h @@ -70,6 +70,8 @@ struct _VirtViewerSessionClass { gboolean (* channel_open_fd) (VirtViewerSession* session, VirtViewerSessionChannel *channel, int fd); gboolean (* has_usb) (VirtViewerSession* session); void (* usb_device_selection) (VirtViewerSession* session, GtkWindow *parent); + void (* smartcard_insert) (VirtViewerSession* session); + void (* smartcard_remove) (VirtViewerSession* session); /* signals */ void (*session_connected)(VirtViewerSession *session); @@ -113,8 +115,9 @@ void virt_viewer_session_set_auto_usbredir(VirtViewerSession* session, gboolean gboolean virt_viewer_session_get_auto_usbredir(VirtViewerSession* session); gboolean virt_viewer_session_has_usb(VirtViewerSession *self); -void virt_viewer_session_usb_device_selection(VirtViewerSession *self, - GtkWindow *parent); +void virt_viewer_session_usb_device_selection(VirtViewerSession *self, GtkWindow *parent); +void virt_viewer_session_smartcard_insert(VirtViewerSession *self); +void virt_viewer_session_smartcard_remove(VirtViewerSession *self); G_END_DECLS -- 1.7.7.6