X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=PPI%2FEvents.cc;h=7aa02989e50ed191fcd3a4f02da811d99c86d058;hb=d5a72d0b3f6fee56dba6de1c54cafb448ebe3457;hp=5ca0ee9827ee77e7eb89c9ddecb7a71e69ea5af0;hpb=f73fa16ed5abdce272ac77f8b8b9ef2b9922c266;p=senf.git diff --git a/PPI/Events.cc b/PPI/Events.cc index 5ca0ee9..7aa0298 100644 --- a/PPI/Events.cc +++ b/PPI/Events.cc @@ -1,8 +1,8 @@ // $Id$ // -// Copyright (C) 2007 -// Fraunhofer Institute for Open Communication Systems (FOKUS) -// Competence Center NETwork research (NET), St. Augustin, GERMANY +// Copyright (C) 2007 +// Fraunhofer Institute for Open Communication Systems (FOKUS) +// Competence Center NETwork research (NET), St. Augustin, GERMANY // Stefan Bund // // This program is free software; you can redistribute it and/or modify @@ -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////////////////////////////////////////