[PATCH spice-streaming-agent] Detect and handle exception creating capture engine

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

 



Currently exception from a plugin are not handled when creating
a capture engine.
Capture the exception and try to use another plugin instead of
bailing out.
This was tested with an experimental GStreamer plugin.

Signed-off-by: Frediano Ziglio <fziglio@xxxxxxxxxx>
---
 src/concrete-agent.cpp | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/src/concrete-agent.cpp b/src/concrete-agent.cpp
index 0720782..112ef93 100644
--- a/src/concrete-agent.cpp
+++ b/src/concrete-agent.cpp
@@ -113,7 +113,14 @@ FrameCapture *ConcreteAgent::GetBestFrameCapture(const std::set<SpiceVideoCodecT
         // check client supports the codec
         if (codecs.find(plugin.second->VideoCodecType()) == codecs.end())
             continue;
-        FrameCapture *capture = plugin.second->CreateCapture();
+
+        FrameCapture *capture;
+        try {
+            capture = plugin.second->CreateCapture();
+        } catch (const std::runtime_error &err) {
+            syslog(LOG_ERR, "Error getting capture engine: %s", err.what());
+            continue;
+        }
         if (capture) {
             return capture;
         }
-- 
2.14.3

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




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