{
int fd = sn->getFD();
ASSERT(notifiers.find(fd) == notifiers.end());
- notifiers[fd]=sn;
+ ASSERT(new_notifiers.find(fd) == new_notifiers.end());
+ new_notifiers[fd]=sn;
}
void eMainloop::removeSocketNotifier(eSocketNotifier *sn)
{
- for (std::map<int,eSocketNotifier*>::iterator i = notifiers.find(sn->getFD());
- i != notifiers.end();
- ++i)
- if (i->second == sn)
- return notifiers.erase(i);
+ int fd = sn->getFD();
+ std::map<int,eSocketNotifier*>::iterator i(notifiers.find(fd));
+ if (i != notifiers.end())
+ return notifiers.erase(i);
+ i = new_notifiers.find(fd);
+ if (i != new_notifiers.end())
+ return new_notifiers.erase(i);
eFatal("removed socket notifier which is not present");
}
poll_timeout = user_timeout;
return_reason = 1;
}
-
+
+ for (std::map<int, eSocketNotifier*>::iterator it(new_notifiers.begin()); it != new_notifiers.end();)
+ {
+ notifiers[it->first]=it->second;
+ new_notifiers.erase(it++);
+ }
+
int nativecount=notifiers.size(),
fdcount=nativecount,
ret=0;
PyObject *res=0;
if (app_quit_now)
- {
- Py_INCREF(Py_None);
- return Py_None;
- }
+ Py_RETURN_NONE;
int user_timeout = (timeout == Py_None) ? 0 : PyInt_AsLong(timeout);