[Spice-devel] [PATCH spice-streaming-agent] Detect and handle exception creating capture engine
Christophe de Dinechin
christophe.de.dinechin at gmail.com
Tue Feb 20 16:58:41 UTC 2018
> On 20 Feb 2018, at 17:49, Frediano Ziglio <fziglio at redhat.com> wrote:
>
> 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 at redhat.com>
> ---
> 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;
> + }
I noticed that you usually capture std::runtime_error. Why not std::exception? You still get “what”, and that lets you catch bad_alloc too.
> if (capture) {
> return capture;
> }
> --
> 2.14.3
>
> _______________________________________________
> Spice-devel mailing list
> Spice-devel at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/spice-devel
More information about the Spice-devel
mailing list