[Spice-devel] [PATCH spice-gtk v2 2/5] DisplayChannel: Fix introspection method bindings

Matthew Francis mjay.francis at gmail.com
Tue Sep 19 14:33:58 UTC 2017


Signed-off-by: Matthew Francis <mjay.francis at gmail.com>
---
 doc/reference/spice-gtk-sections.txt |  5 ++
 src/channel-display.c                | 92 +++++++++++++++++++++++++++++++++++-
 src/channel-display.h                | 22 +++++++--
 src/map-file                         |  5 ++
 src/spice-glib-sym-file              |  5 ++
 src/spice-widget-egl.c               |  2 +-
 src/spice-widget.c                   | 14 +++---
 tools/spicy.c                        |  8 ++--
 8 files changed, 135 insertions(+), 18 deletions(-)

diff --git a/doc/reference/spice-gtk-sections.txt b/doc/reference/spice-gtk-sections.txt
index c4f416f..ffaf00e 100644
--- a/doc/reference/spice-gtk-sections.txt
+++ b/doc/reference/spice-gtk-sections.txt
@@ -165,10 +165,15 @@ SpiceDisplayPrimary
 SpiceGlScanout
 <SUBSECTION>
 spice_display_get_gl_scanout
+spice_display_channel_get_gl_scanout
 spice_display_gl_draw_done
+spice_display_channel_gl_draw_done
 spice_display_get_primary
+spice_display_channel_get_primary
 spice_display_change_preferred_compression
+spice_display_channel_change_preferred_compression
 spice_display_change_preferred_video_codec_type
+spice_display_channel_change_preferred_video_codec_type
 spice_gl_scanout_free
 <SUBSECTION Standard>
 SPICE_DISPLAY_CHANNEL
diff --git a/src/channel-display.c b/src/channel-display.c
index 4c570ea..75d2e32 100644
--- a/src/channel-display.c
+++ b/src/channel-display.c
@@ -227,7 +227,7 @@ static void spice_display_get_property(GObject    *object,
         break;
     }
     case PROP_GL_SCANOUT: {
-        g_value_set_static_boxed(value, spice_display_get_gl_scanout(channel));
+        g_value_set_static_boxed(value, spice_display_channel_get_gl_scanout(channel));
         break;
     }
     default:
@@ -472,10 +472,31 @@ static void spice_display_channel_class_init(SpiceDisplayChannelClass *klass)
  *
  * Returns: %TRUE if the primary surface was found and its details
  * collected in @primary.
+ *
+ * Deprecated: 0.35: use spice_display_channel_get_primary() instead.
  */
 gboolean spice_display_get_primary(SpiceChannel *channel, guint32 surface_id,
                                    SpiceDisplayPrimary *primary)
 {
+    return spice_display_channel_get_primary(channel, surface_id, primary);
+}
+
+/**
+ * spice_display_channel_get_primary:
+ * @channel: a #SpiceDisplayChannel
+ * @surface_id: a surface id
+ * @primary: a #SpiceDisplayPrimary
+ *
+ * Retrieve primary display surface @surface_id.
+ *
+ * Returns: %TRUE if the primary surface was found and its details
+ * collected in @primary.
+ *
+ * Since: 0.35
+ */
+gboolean spice_display_channel_get_primary(SpiceChannel *channel, guint32 surface_id,
+                                           SpiceDisplayPrimary *primary)
+{
     g_return_val_if_fail(SPICE_IS_DISPLAY_CHANNEL(channel), FALSE);
     g_return_val_if_fail(primary != NULL, FALSE);
 
@@ -508,9 +529,25 @@ gboolean spice_display_get_primary(SpiceChannel *channel, guint32 surface_id,
  * for the @channel.
  *
  * Since: 0.31
+ * Deprecated: 0.35: use spice_display_channel_change_preferred_compression() instead.
  */
 void spice_display_change_preferred_compression(SpiceChannel *channel, gint compression)
 {
+    spice_display_channel_change_preferred_compression(channel, compression);
+}
+
+/**
+ * spice_display_channel_change_preferred_compression:
+ * @channel: a #SpiceDisplayChannel
+ * @compression: a #SpiceImageCompression
+ *
+ * Tells the spice server to change the preferred image compression
+ * for the @channel.
+ *
+ * Since: 0.35
+ */
+void spice_display_channel_change_preferred_compression(SpiceChannel *channel, gint compression)
+{
     SpiceMsgOut *out;
     SpiceMsgcDisplayPreferredCompression pref_comp_msg;
 
@@ -561,9 +598,26 @@ static void spice_display_send_client_preferred_video_codecs(SpiceChannel *chann
  * display channel.
  *
  * Since: 0.34
+ * Deprecated: 0.35: use spice_display_channel_change_preferred_video_codec_type() instead.
  */
 void spice_display_change_preferred_video_codec_type(SpiceChannel *channel, gint codec_type)
 {
+    spice_display_channel_change_preferred_video_codec_type(channel, codec_type);
+}
+
+/**
+ * spice_display_channel_change_preferred_video_codec_type:
+ * @channel: a #SpiceDisplayChannel
+ * @codec_type: a #SpiceVideoCodecType
+ *
+ * Tells the spice server to change the preferred video codec type for
+ * streaming in @channel. Application can set only one preferred video codec per
+ * display channel.
+ *
+ * Since: 0.35
+ */
+void spice_display_channel_change_preferred_video_codec_type(SpiceChannel *channel, gint codec_type)
+{
     GArray *codecs;
 
     g_return_if_fail(SPICE_IS_DISPLAY_CHANNEL(channel));
@@ -595,10 +649,27 @@ void spice_display_change_preferred_video_codec_type(SpiceChannel *channel, gint
  * Returns: the current GL scanout, or %NULL if none or not valid
  *
  * Since: 0.31
+ * Deprecated: 0.35: use spice_display_channel_get_gl_scanout() instead.
  **/
 const SpiceGlScanout *
 spice_display_get_gl_scanout(SpiceDisplayChannel *channel)
 {
+    return spice_display_channel_get_gl_scanout(channel);
+}
+
+/**
+ * spice_display_channel_get_gl_scanout:
+ * @channel: a #SpiceDisplayChannel
+ *
+ * Retrieves the GL scanout if available
+ *
+ * Returns: the current GL scanout, or %NULL if none or not valid
+ *
+ * Since: 0.35
+ **/
+const SpiceGlScanout *
+spice_display_channel_get_gl_scanout(SpiceDisplayChannel *channel)
+{
     g_return_val_if_fail(SPICE_IS_DISPLAY_CHANNEL(channel), NULL);
 
     return channel->priv->scanout.fd != -1 ? &channel->priv->scanout : NULL;
@@ -978,7 +1049,7 @@ static void spice_display_channel_up(SpiceChannel *channel)
     g_coroutine_object_notify(G_OBJECT(channel), "monitors");
 
     if (preferred_compression != SPICE_IMAGE_COMPRESSION_INVALID) {
-        spice_display_change_preferred_compression(channel, preferred_compression);
+        spice_display_channel_change_preferred_compression(channel, preferred_compression);
     }
 }
 
@@ -1896,9 +1967,26 @@ static void display_handle_gl_draw(SpiceChannel *channel, SpiceMsgIn *in)
  * (failing to do so for each gl-draw may result in a frozen display).
  *
  * Since: 0.31
+ * Deprecated: 0.35: use spice_display_channel_gl_draw_done() instead.
  **/
 void spice_display_gl_draw_done(SpiceDisplayChannel *display)
 {
+    spice_display_channel_gl_draw_done(display);
+}
+
+/**
+ * spice_display_channel_gl_draw_done:
+ * @channel: a #SpiceDisplayChannel
+ *
+ * After a SpiceDisplayChannel::gl-draw is emitted, the client should
+ * draw the current display with the current GL scanout, and must
+ * release the GL resource with a call to spice_display_gl_draw_done()
+ * (failing to do so for each gl-draw may result in a frozen display).
+ *
+ * Since: 0.35
+ **/
+void spice_display_channel_gl_draw_done(SpiceDisplayChannel *display)
+{
     SpiceChannel *channel;
     SpiceMsgOut *out;
 
diff --git a/src/channel-display.h b/src/channel-display.h
index fccf228..5b48d2f 100644
--- a/src/channel-display.h
+++ b/src/channel-display.h
@@ -145,17 +145,31 @@ struct _SpiceDisplayChannelClass {
 };
 
 GType	        spice_display_channel_get_type(void);
-gboolean        spice_display_get_primary(SpiceChannel *channel, guint32 surface_id,
-                                          SpiceDisplayPrimary *primary);
+gboolean        spice_display_channel_get_primary(SpiceChannel *channel, guint32 surface_id,
+                                                  SpiceDisplayPrimary *primary);
 
-void spice_display_change_preferred_compression(SpiceChannel *channel, gint compression);
-void spice_display_change_preferred_video_codec_type(SpiceChannel *channel, gint codec_type);
+void spice_display_channel_change_preferred_compression(SpiceChannel *channel, gint compression);
+void spice_display_channel_change_preferred_video_codec_type(SpiceChannel *channel, gint codec_type);
 
 GType           spice_gl_scanout_get_type     (void) G_GNUC_CONST;
 void            spice_gl_scanout_free         (SpiceGlScanout *scanout);
 
+const SpiceGlScanout* spice_display_channel_get_gl_scanout(SpiceDisplayChannel *channel);
+void spice_display_channel_gl_draw_done(SpiceDisplayChannel *channel);
+
+#ifndef SPICE_DISABLE_DEPRECATED
+G_DEPRECATED_FOR(spice_display_channel_change_preferred_compression)
+void spice_display_change_preferred_compression(SpiceChannel *channel, gint compression);
+G_DEPRECATED_FOR(spice_display_channel_change_preferred_video_codec_type)
+void spice_display_change_preferred_video_codec_type(SpiceChannel *channel, gint codec_type);
+G_DEPRECATED_FOR(spice_display_channel_get_gl_scanout)
 const SpiceGlScanout* spice_display_get_gl_scanout(SpiceDisplayChannel *channel);
+G_DEPRECATED_FOR(spice_display_channel_get_primary)
+gboolean spice_display_get_primary(SpiceChannel *channel, guint32 surface_id,
+                                   SpiceDisplayPrimary *primary);
+G_DEPRECATED_FOR(spice_display_channel_gl_draw_done)
 void spice_display_gl_draw_done(SpiceDisplayChannel *channel);
+#endif
 
 G_END_DECLS
 
diff --git a/src/map-file b/src/map-file
index de4f421..8635e92 100644
--- a/src/map-file
+++ b/src/map-file
@@ -23,7 +23,12 @@ spice_cursor_channel_get_type;
 spice_cursor_shape_get_type;
 spice_display_change_preferred_compression;
 spice_display_change_preferred_video_codec_type;
+spice_display_channel_change_preferred_compression;
+spice_display_channel_change_preferred_video_codec_type;
+spice_display_channel_get_gl_scanout;
+spice_display_channel_get_primary;
 spice_display_channel_get_type;
+spice_display_channel_gl_draw_done;
 spice_display_get_gl_scanout;
 spice_display_get_grab_keys;
 spice_display_get_pixbuf;
diff --git a/src/spice-glib-sym-file b/src/spice-glib-sym-file
index 79c75f1..d996dbf 100644
--- a/src/spice-glib-sym-file
+++ b/src/spice-glib-sym-file
@@ -21,7 +21,12 @@ spice_cursor_channel_get_type
 spice_cursor_shape_get_type
 spice_display_change_preferred_compression
 spice_display_change_preferred_video_codec_type
+spice_display_channel_change_preferred_compression
+spice_display_channel_change_preferred_video_codec_type
+spice_display_channel_get_gl_scanout
+spice_display_channel_get_primary
 spice_display_channel_get_type
+spice_display_channel_gl_draw_done
 spice_display_get_gl_scanout
 spice_display_get_primary
 spice_display_gl_draw_done
diff --git a/src/spice-widget-egl.c b/src/spice-widget-egl.c
index b50641c..1e71753 100644
--- a/src/spice-widget-egl.c
+++ b/src/spice-widget-egl.c
@@ -278,7 +278,7 @@ end:
 
     d->egl.context_ready = TRUE;
 
-    if (spice_display_get_gl_scanout(d->display) != NULL) {
+    if (spice_display_channel_get_gl_scanout(d->display) != NULL) {
         DISPLAY_DEBUG(display, "scanout present during egl init, updating widget");
         spice_display_widget_gl_scanout(display);
         spice_display_widget_update_monitor_area(display);
diff --git a/src/spice-widget.c b/src/spice-widget.c
index fb94e94..714ca88 100644
--- a/src/spice-widget.c
+++ b/src/spice-widget.c
@@ -587,7 +587,7 @@ gl_area_render(GtkGLArea *area, GdkGLContext *context, gpointer user_data)
     spice_egl_update_display(display);
     glFlush();
     if (d->egl.call_draw_done) {
-        spice_display_gl_draw_done(d->display);
+        spice_display_channel_gl_draw_done(d->display);
         d->egl.call_draw_done = FALSE;
     }
 
@@ -620,7 +620,7 @@ drawing_area_realize(GtkWidget *area, gpointer user_data)
     SpiceDisplay *display = SPICE_DISPLAY(user_data);
 
     if (GDK_IS_X11_DISPLAY(gdk_display_get_default()) &&
-        spice_display_get_gl_scanout(display->priv->display) != NULL) {
+        spice_display_channel_get_gl_scanout(display->priv->display) != NULL) {
         spice_display_widget_gl_scanout(display);
     }
 #endif
@@ -2523,7 +2523,7 @@ static void update_area(SpiceDisplay *display,
 #if HAVE_EGL
     if (egl_enabled(d)) {
         const SpiceGlScanout *so =
-            spice_display_get_gl_scanout(d->display);
+            spice_display_channel_get_gl_scanout(d->display);
         g_return_if_fail(so != NULL);
         primary = (GdkRectangle) {
             .width = so->width,
@@ -2891,7 +2891,7 @@ void spice_display_widget_gl_scanout(SpiceDisplay *display)
     if (d->egl.context_ready) {
         const SpiceGlScanout *scanout;
 
-        scanout = spice_display_get_gl_scanout(d->display);
+        scanout = spice_display_channel_get_gl_scanout(d->display);
         /* should only be called when the display has a scanout */
         g_return_if_fail(scanout != NULL);
 
@@ -2913,7 +2913,7 @@ static void gl_draw(SpiceDisplay *display,
 
     if (!d->egl.context_ready) {
         DISPLAY_DEBUG(display, "Draw without GL context, skipping");
-        spice_display_gl_draw_done(d->display);
+        spice_display_channel_gl_draw_done(d->display);
         return;
     }
 
@@ -2930,7 +2930,7 @@ static void gl_draw(SpiceDisplay *display,
 #endif
     {
         spice_egl_update_display(display);
-        spice_display_gl_draw_done(d->display);
+        spice_display_channel_gl_draw_done(d->display);
     }
 }
 #endif
@@ -2966,7 +2966,7 @@ static void channel_new(SpiceSession *s, SpiceChannel *channel, gpointer data)
         spice_g_signal_connect_object(channel, "notify::monitors",
                                       G_CALLBACK(spice_display_widget_update_monitor_area),
                                       display, G_CONNECT_AFTER | G_CONNECT_SWAPPED);
-        if (spice_display_get_primary(channel, 0, &primary)) {
+        if (spice_display_channel_get_primary(channel, 0, &primary)) {
             primary_create(channel, primary.format, primary.width, primary.height,
                            primary.stride, primary.shmid, primary.data, display);
             mark(display, primary.marked);
diff --git a/tools/spicy.c b/tools/spicy.c
index d71d996..6ff6c9e 100644
--- a/tools/spicy.c
+++ b/tools/spicy.c
@@ -1009,16 +1009,16 @@ static void compression_cb(GtkRadioAction *action G_GNUC_UNUSED,
                            GtkRadioAction *current,
                            gpointer user_data)
 {
-    spice_display_change_preferred_compression(SPICE_CHANNEL(user_data),
-                                               gtk_radio_action_get_current_value(current));
+    spice_display_channel_change_preferred_compression(SPICE_CHANNEL(user_data),
+                                                       gtk_radio_action_get_current_value(current));
 }
 
 static void video_codec_type_cb(GtkRadioAction *action G_GNUC_UNUSED,
                                 GtkRadioAction *current,
                                 gpointer user_data)
 {
-    spice_display_change_preferred_video_codec_type(SPICE_CHANNEL(user_data),
-                                                    gtk_radio_action_get_current_value(current));
+    spice_display_channel_change_preferred_video_codec_type(SPICE_CHANNEL(user_data),
+                                                            gtk_radio_action_get_current_value(current));
 }
 
 static void
-- 
2.7.4



More information about the Spice-devel mailing list