----- Original Message ----- > Signed-off-by: Matthew Francis <mjay.francis@xxxxxxxxx> Reviewed-by: Marc-André Lureau <marcandre.lureau@xxxxxxxxxx> > --- > 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 > > _______________________________________________ > Spice-devel mailing list > Spice-devel@xxxxxxxxxxxxxxxxxxxxx > https://lists.freedesktop.org/mailman/listinfo/spice-devel > _______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/spice-devel