X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=PPI%2FEvents.cc;h=7aa02989e50ed191fcd3a4f02da811d99c86d058;hb=d5a72d0b3f6fee56dba6de1c54cafb448ebe3457;hp=9f8ec8057a286b4ce8a51130823ed9db7313bbd9;hpb=a1a6c76a214ad1935032826713cabaf9ac57bf07;p=senf.git diff --git a/PPI/Events.cc b/PPI/Events.cc index 9f8ec80..7aa0298 100644 --- a/PPI/Events.cc +++ b/PPI/Events.cc @@ -43,8 +43,22 @@ prefix_ void senf::ppi::EventDescriptor::notifyUnthrottle() for (; i != i_end; ++i) if ((*i)->throttled()) break; - if (i == i_end) - enabled(true); + if (i != i_end) + return; + throttled_ = false; + enabled(true); +} + +prefix_ void senf::ppi::EventDescriptor::enabled(bool v) +{ + SENF_ASSERT(v_isRegistered() && "Module::registerEvent() call missing"); + if (throttled_ && v) + return; + if (v && ! enabled_) + v_enable(); + else if (! v && enabled_) + v_disable(); + enabled_ = v; } ///////////////////////////////cc.e////////////////////////////////////////