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

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

 




> On 20 Feb 2018, at 17:49, Frediano Ziglio <fziglio@xxxxxxxxxx> 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@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;
> +        }

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@xxxxxxxxxxxxxxxxxxxxx
> https://lists.freedesktop.org/mailman/listinfo/spice-devel

_______________________________________________
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]