public void RemovingCallbackTwiceIsAnError()
        {
            UnmanagedCallbackManager manager = new UnmanagedCallbackManager();

            int cookie = manager.NewCookie();

            manager.AddDelegate(() => {}, cookie);
            manager.RemoveDelegate(cookie);
            manager.RemoveDelegate(cookie);
        }
예제 #2
0
        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);
        }