summaryrefslogtreecommitdiff
path: root/src/modes.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/modes.cpp')
-rw-r--r--src/modes.cpp16
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;
}