> 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