Signed-off-by: Matthew Francis <mjay.francis@xxxxxxxxx> --- 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