Jan Vesely <jan.ves...@rutgers.edu> writes: > On Tue, 2018-07-17 at 14:17 -0700, Francisco Jerez wrote: >> Jan Vesely <jan.ves...@rutgers.edu> writes: >> >> > Abort all dependent events. >> > Signed-off-by: Jan Vesely <jan.ves...@rutgers.edu> >> > --- >> > src/gallium/state_trackers/clover/core/event.cpp | 7 ++++++- >> > 1 file changed, 6 insertions(+), 1 deletion(-) >> > >> > diff --git a/src/gallium/state_trackers/clover/core/event.cpp >> > b/src/gallium/state_trackers/clover/core/event.cpp >> > index cd5d786604..ed2b6ebdb8 100644 >> > --- a/src/gallium/state_trackers/clover/core/event.cpp >> > +++ b/src/gallium/state_trackers/clover/core/event.cpp >> > @@ -51,7 +51,12 @@ event::trigger_self() { >> > void >> > event::trigger() { >> > if (wait_count() == 1) >> > - action_ok(*this); >> > + try { >> > + action_ok(*this); >> > + } catch (error &e) { >> > + for (event &ev : abort_self(e.get())) >> > + ev.abort(e.get()); >> > + } >> > >> >> Any reason not to do it like: >> >> > try { >> > if (wait_count() == 1) >> > action_ok(*this); >> > } catch (error &e) { >> > abort(e.get()); >> > } >> >> That seems slightly simpler and it should make sure that the abort >> action of the failing event is executed as well. > > sure. It wasn't clear to me if it's ok to execute both action_ok and > action_fail for the same event. My understanding was that exactly one > of them is called. > > I can even do: > void > -event::trigger() { > +event::trigger() try { > if (wait_count() == 1) > action_ok(*this); > > for (event &ev : trigger_self()) > ev.trigger(); > +} catch (error &e) { > + abort(e.get()) > }
Yeah, that should work too. > > > Jan > >> >> Thanks. >> >> > for (event &ev : trigger_self()) >> > ev.trigger(); >> > -- >> > 2.16.4 > > -- > Jan Vesely <jan.ves...@rutgers.edu>
signature.asc
Description: PGP signature
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev