[PATCH v2 spice-streaming-agent 1/3] gst-plugin: Initialize X connection also when ximagesrc is used

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



In order to get graphic devices info a connection to X server
is required, make sure we get it also when ximagesrc capture
is used ( XLIB_CAPTURE=0 ).

Signed-off-by: Snir Sheriber <ssheribe@xxxxxxxxxx>
---

Changes from v1:
-remove unnecessary check
-make *dpy const
-added two minor follow up patches (not really necessary)



---
 src/gst-plugin.cpp | 16 +++++-----------
 1 file changed, 5 insertions(+), 11 deletions(-)

diff --git a/src/gst-plugin.cpp b/src/gst-plugin.cpp
index 3edf9f5..80b56ae 100644
--- a/src/gst-plugin.cpp
+++ b/src/gst-plugin.cpp
@@ -84,9 +84,9 @@ private:
     GstElement *get_encoder_plugin(const GstreamerEncoderSettings &settings, GstCapsUPtr &sink_caps);
     GstElement *get_capture_plugin(const GstreamerEncoderSettings &settings);
     void pipeline_init(const GstreamerEncoderSettings &settings);
+    Display *const dpy;
 #if XLIB_CAPTURE
     void xlib_capture();
-    Display *dpy;
     XImage *image = nullptr;
 #endif
     GstObjectUPtr<GstElement> pipeline, capture, sink;
@@ -251,13 +251,6 @@ void GstreamerFrameCapture::pipeline_init(const GstreamerEncoderSettings &settin
         throw std::runtime_error("Linking gstreamer's elements failed");
     }
 
-#if XLIB_CAPTURE
-    dpy = XOpenDisplay(nullptr);
-    if (!dpy) {
-        throw std::runtime_error("Unable to initialize X11");
-    }
-#endif
-
     gst_element_set_state(pipeline.get(), GST_STATE_PLAYING);
 
 #if !XLIB_CAPTURE
@@ -290,8 +283,11 @@ void GstreamerFrameCapture::pipeline_init(const GstreamerEncoderSettings &settin
 }
 
 GstreamerFrameCapture::GstreamerFrameCapture(const GstreamerEncoderSettings &settings):
-    settings(settings)
+    dpy(XOpenDisplay(nullptr)),settings(settings)
 {
+    if (!dpy) {
+        throw std::runtime_error("Unable to initialize X11");
+    }
     pipeline_init(settings);
 }
 
@@ -313,9 +309,7 @@ GstreamerFrameCapture::~GstreamerFrameCapture()
 {
     free_sample();
     gst_element_set_state(pipeline.get(), GST_STATE_NULL);
-#if XLIB_CAPTURE
     XCloseDisplay(dpy);
-#endif
 }
 
 void GstreamerFrameCapture::Reset()
-- 
2.20.1

_______________________________________________
Spice-devel mailing list
Spice-devel@xxxxxxxxxxxxxxxxxxxxx
https://lists.freedesktop.org/mailman/listinfo/spice-devel




[Index of Archives]     [Linux Virtualization]     [Linux Virtualization]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]     [Monitors]