public void RemovingCallbackTwiceIsAnError() { UnmanagedCallbackManager manager = new UnmanagedCallbackManager(); int cookie = manager.NewCookie(); manager.AddDelegate(() => {}, cookie); manager.RemoveDelegate(cookie); manager.RemoveDelegate(cookie); }
public Operation EnumerateSinkInputs(SinkInputCallback cb) { int cookie = cbManager.NewCookie(); Action <IntPtr, NativeSinkInputInfo, int, IntPtr> wrapped_cb = (IntPtr c, NativeSinkInputInfo info, int eol, IntPtr userdata) => { if (eol == 0) { cb(new SinkInput(info, this), eol); } else { cbManager.RemoveDelegate(cookie); } }; cbManager.AddDelegate(wrapped_cb, cookie); return(new Operation(pa_context_get_sink_input_info_list(context, wrapped_cb, IntPtr.Zero))); }
public void RemovingCallbackDecreasesPendingCount() { UnmanagedCallbackManager manager = new UnmanagedCallbackManager(); int cookie = manager.NewCookie(); manager.AddDelegate(() => {}, cookie); int oldCallbackCount = manager.PendingCallbackCount; manager.RemoveDelegate(cookie); Assert.Less(manager.PendingCallbackCount, oldCallbackCount); }