//--------------------------------------------------------------------- void DefaultWorkQueueBase::addRequestHandler(uint16 channel, RequestHandler* rh) { OGRE_LOCK_RW_MUTEX_WRITE(mRequestHandlerMutex); RequestHandlerListByChannel::iterator i = mRequestHandlers.find(channel); if (i == mRequestHandlers.end()) i = mRequestHandlers.insert(RequestHandlerListByChannel::value_type(channel, RequestHandlerList())).first; RequestHandlerList& handlers = i->second; if (std::find(handlers.begin(), handlers.end(), rh) == handlers.end()) handlers.push_back(rh); }
//--------------------------------------------------------------------- void DefaultWorkQueueBase::addRequestHandler(uint16 channel, RequestHandler* rh) { OGRE_LOCK_RW_MUTEX_WRITE(mRequestHandlerMutex); RequestHandlerListByChannel::iterator i = mRequestHandlers.find(channel); if (i == mRequestHandlers.end()) i = mRequestHandlers.insert(RequestHandlerListByChannel::value_type(channel, RequestHandlerList())).first; RequestHandlerList& handlers = i->second; bool duplicate = false; for (RequestHandlerList::iterator j = handlers.begin(); j != handlers.end(); ++j) { if ((*j)->getHandler() == rh) { duplicate = true; break; } } if (!duplicate) handlers.push_back(RequestHandlerHolderPtr(OGRE_NEW RequestHandlerHolder(rh))); }