public void dispatchEvent(CCEventObject e) { lock(this) { NSEvent evt = e.evt; Action<NSEvent> selector = e.selector; // Dispatch events if( _dispatchEvents ) { _locked = true; selector(evt); _locked = false; } // FIRST: Remove possible delegates utNode<tListDeletedEntry> dEntry, tTmp; dEntry = _delegatesToBeRemoved.head; while(dEntry != null){ tTmp = dEntry.next; removeDelegate(dEntry.obj.aDelegate, dEntry.obj.listToBeDeleted); _delegatesToBeRemoved.DL_DELETE(dEntry); dEntry = tTmp; } // LATER: Add possible delegates utNode<tListAddedEntry> entry, tmp; entry = _delegatesToBeAdded.head; while(entry != null){ tmp = entry.next; addDelegate(entry.obj.aDelegate, entry.obj.priority, entry.obj.listToBeAdded); _delegatesToBeAdded.DL_DELETE(entry); entry = tmp; } } }