[Spice-devel] [PATCH] streaming: make draw-area visible on MJPEG encoder creation

Kevin Pouget kpouget at redhat.com
Thu Aug 29 12:16:02 UTC 2019


This patch allows the MJPEG encoder to inform the spice-widget that
its video drawing area (draw-area) should be made visible on screen.

This is required to switch from GST video decoding to native MJPEG
decoding, otherwise the gst-area remained on top and the MJPEG video
stream was never shown.

Signed-off-by: Kevin Pouget <kpouget at redhat.com>
---
 src/channel-display-mjpeg.c | 3 +++
 src/spice-widget.c          | 9 ++++++++-
 2 files changed, 11 insertions(+), 1 deletion(-)

diff --git a/src/channel-display-mjpeg.c b/src/channel-display-mjpeg.c
index 647d31b..636a98b 100644
--- a/src/channel-display-mjpeg.c
+++ b/src/channel-display-mjpeg.c
@@ -300,5 +300,8 @@ VideoDecoder* create_mjpeg_decoder(int codec_type, display_stream *stream)
 
     /* All the other fields are initialized to zero by g_new0(). */
 
+    /* makes the draw-area visible */
+    hand_pipeline_to_widget(stream, NULL);
+
     return (VideoDecoder*)decoder;
 }
diff --git a/src/spice-widget.c b/src/spice-widget.c
index a9ba1f1..7c257ff 100644
--- a/src/spice-widget.c
+++ b/src/spice-widget.c
@@ -2780,13 +2780,20 @@ static void gst_size_allocate(GtkWidget *widget, GdkRectangle *a, gpointer data)
 }
 
 /* This callback should pass to the widget a pointer of the pipeline
- * so that we can set pipeline and overlay related calls from here.
+ * so that we can the set GST pipeline and overlay related calls from
+ * here.  If the pipeline pointer is NULL, the drawing area of the
+ * native renderer is set visible.
  */
 static gboolean set_overlay(SpiceChannel *channel, void* pipeline_ptr, SpiceDisplay *display)
 {
 #if defined(GDK_WINDOWING_X11)
     SpiceDisplayPrivate *d = display->priv;
 
+    if (pipeline_ptr == NULL) {
+        gtk_stack_set_visible_child_name(d->stack, "draw-area");
+        return true;
+    }
+
     /* GstVideoOverlay is currently used only under x */
     if (!g_getenv("DISABLE_GSTVIDEOOVERLAY") &&
         GDK_IS_X11_DISPLAY(gdk_display_get_default())) {
-- 
2.21.0



More information about the Spice-devel mailing list