diff options
author | Adam <Adam@anope.org> | 2011-09-05 18:44:43 -0400 |
---|---|---|
committer | Adam <Adam@anope.org> | 2011-09-10 02:06:31 -0400 |
commit | 63cb8ca24c0d4003343340bb8413b7f84de1a6a3 (patch) | |
tree | d71f0cead730065dd8509e284d66b6767e7ebd25 /src/modes.cpp | |
parent | dc5d1fa21c20000b77bf713585333c79121a8df0 (diff) |
Moved signal/thread/mode checking to use signal pipes
Diffstat (limited to 'src/modes.cpp')
-rw-r--r-- | src/modes.cpp | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/src/modes.cpp b/src/modes.cpp index d51622e22..c3e52e036 100644 --- a/src/modes.cpp +++ b/src/modes.cpp @@ -9,6 +9,7 @@ #include "services.h" #include "modules.h" +ModeManager::ModePipe *ModeManager::mpipe = NULL; /* List of pairs of user/channels and their stacker info */ std::list<std::pair<Base *, StackerInfo *> > ModeManager::StackerObjects; @@ -345,6 +346,16 @@ void StackerInfo::AddMode(Mode *mode, bool Set, const Anope::string &Param) list->push_back(std::make_pair(mode, Param)); } +/** Called when there are modes to be set + */ +void ModeManager::ModePipe::OnNotify() +{ + if (!Me || !Me->IsSynced()) + return; + + ModeManager::ProcessModes(); +} + /** Get the stacker info for an item, if one doesnt exist it is created * @param Item The user/channel etc * @return The stacker info @@ -360,6 +371,11 @@ StackerInfo *ModeManager::GetInfo(Base *Item) StackerInfo *s = new StackerInfo(); StackerObjects.push_back(std::make_pair(Item, s)); + + if (mpipe == NULL) + mpipe = new ModePipe(); + mpipe->Notify(); + return s; } |