[Spice-devel] [PATCH spice-streaming-server 2/3] Wait to have some client before initialising capture

Frediano Ziglio fziglio at redhat.com
Wed Nov 8 15:02:36 UTC 2017


This saves some resources if no client are connected.
Also will allow to get a better capture engine taking into account
client supported codecs.

Signed-off-by: Frediano Ziglio <fziglio at redhat.com>
---
 src/spice-streaming-agent.cpp | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/src/spice-streaming-agent.cpp b/src/spice-streaming-agent.cpp
index 4122eee..ff43804 100644
--- a/src/spice-streaming-agent.cpp
+++ b/src/spice-streaming-agent.cpp
@@ -345,10 +345,6 @@ static void cursor_changes(Display *display, int event_base)
 static void
 do_capture(const char *streamport, FILE *f_log)
 {
-    std::unique_ptr<FrameCapture> capture(agent.GetBestFrameCapture());
-    if (!capture)
-        throw std::runtime_error("cannot find a suitable capture system");
-
     streamfd = open(streamport, O_RDWR);
     if (streamfd < 0)
         // TODO was syslog(LOG_ERR, "Failed to open %s: %s\n", streamport, strerror(errno));
@@ -368,9 +364,16 @@ do_capture(const char *streamport, FILE *f_log)
             }
         }
 
+        if (quit)
+            return;
+
         syslog(LOG_INFO, "streaming starts now\n");
         uint64_t time_last = 0;
 
+        std::unique_ptr<FrameCapture> capture(agent.GetBestFrameCapture());
+        if (!capture)
+            throw std::runtime_error("cannot find a suitable capture system");
+
         while (!quit && streaming_requested) {
             if (++frame_count % 100 == 0) {
                 syslog(LOG_DEBUG, "SENT %d frames\n", frame_count);
@@ -417,9 +420,6 @@ do_capture(const char *streamport, FILE *f_log)
                 syslog(LOG_ERR, "FAILED to read command\n");
                 return;
             }
-            if (!streaming_requested) {
-                capture->Reset();
-            }
         }
     }
 }
-- 
2.13.6



More information about the Spice-devel mailing list