> On 20 Feb 2018, at 17:49, Frediano Ziglio <[email protected]> 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 <[email protected]>
> ---
> 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
> [email protected]
> https://lists.freedesktop.org/mailman/listinfo/spice-devel
_______________________________________________
Spice-devel mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/spice-devel