internal AtspiEventHandler GetChildrenChangedDelegate(EventSIO value) { if (!delegates.ContainsKey (value)) delegates [value] = (detail, v1, v2, any, app_root) => EmitChildrenChanged (value, accessible, detail, v1, any); return delegates [value]; }
private void EmitChildrenChanged(EventSIO d, Accessible sender, string detail, int n, object childObject) { bool remove = (detail == "remove"); childrenChangedNestLevel++; Registry.SuspendDBusCalls = true; Accessible child = MarshallAccessible (childObject, remove, true); childEventQueue.Enqueue (() => d (sender, detail, n, child)); Registry.SuspendDBusCalls = false; childrenChangedNestLevel--; if (childrenChangedNestLevel == 0) { while (childEventQueue.Count > 0) childEventQueue.Dequeue ()(); } }