public void deleteEvents(EventDeleter deleter) // The deleter that checks whether an event // should be removed. { lock (this) { TclEvent evt, prev; TclEvent servicedEvent = null; // Handle the special case of deletion of a single event that was just // processed by the serviceEvent() method. if (deleter == this) { servicedEvent = this.servicedEvent; if (servicedEvent == null) { throw new TclRuntimeError("servicedEvent was not set by serviceEvent()"); } this.servicedEvent = null; } for (prev = null, evt = firstEvent; evt != null; evt = evt.next) { if (((servicedEvent == null) && (deleter.deleteEvent(evt) == 1)) || (evt == servicedEvent)) { if (evt == firstEvent) { firstEvent = evt.next; } else { prev.next = evt.next; } if (evt.next == null) { lastEvent = prev; } if (evt == markerEvent) { markerEvent = prev; } if (evt == servicedEvent) { servicedEvent = null; break; // Just service this one event in the special case } } else { prev = evt; } } if (servicedEvent != null) { throw new TclRuntimeError("servicedEvent was not removed from the queue"); } } }
public void deleteEvents(EventDeleter deleter) // The deleter that checks whether an event // should be removed. { lock (this) { TclEvent evt, prev; TclEvent servicedEvent = null; // Handle the special case of deletion of a single event that was just // processed by the serviceEvent() method. if (deleter == this) { servicedEvent = this.servicedEvent; if (servicedEvent == null) throw new TclRuntimeError("servicedEvent was not set by serviceEvent()"); this.servicedEvent = null; } for (prev = null, evt = firstEvent; evt != null; evt = evt.next) { if (((servicedEvent == null) && (deleter.deleteEvent(evt) == 1)) || (evt == servicedEvent)) { if (evt == firstEvent) { firstEvent = evt.next; } else { prev.next = evt.next; } if (evt.next == null) { lastEvent = prev; } if (evt == markerEvent) { markerEvent = prev; } if (evt == servicedEvent) { servicedEvent = null; break; // Just service this one event in the special case } } else { prev = evt; } } if (servicedEvent != null) { throw new TclRuntimeError("servicedEvent was not removed from the queue"); } } }