| 248 | } |
| 249 | |
| 250 | void ReplayManager::AsyncInvoke(const rdcstr &tag, ReplayManager::InvokeCallback m) |
| 251 | { |
| 252 | QString qtag; |
| 253 | |
| 254 | if(!tag.empty()) |
| 255 | { |
| 256 | qtag = tag; |
| 257 | |
| 258 | QMutexLocker autolock(&m_RenderLock); |
| 259 | for(int i = 0; i < m_RenderQueue.count();) |
| 260 | { |
| 261 | if(m_RenderQueue[i]->tag == qtag) |
| 262 | { |
| 263 | InvokeHandle *cmd = m_RenderQueue.takeAt(i); |
| 264 | if(cmd->selfdelete) |
| 265 | delete cmd; |
| 266 | } |
| 267 | else |
| 268 | { |
| 269 | i++; |
| 270 | } |
| 271 | } |
| 272 | } |
| 273 | |
| 274 | InvokeHandle *cmd = new InvokeHandle(m, qtag); |
| 275 | cmd->selfdelete = true; |
| 276 | |
| 277 | PushInvoke(cmd); |
| 278 | } |
| 279 | |
| 280 | void ReplayManager::AsyncInvoke(ReplayManager::InvokeCallback m) |
| 281 | { |