private RESULT ChannelEndCallback(IntPtr channelraw, CHANNELCONTROL_TYPE controltype, CHANNELCONTROL_CALLBACK_TYPE type, IntPtr commanddata1, IntPtr commanddata2)
 {
     if (type == CHANNELCONTROL_CALLBACK_TYPE.END)
     {
         // this must be thread safe
         var currentSynchronizationContext = TaskScheduler.FromCurrentSynchronizationContext();
         var uiTask = Task.Factory.StartNew(() => {
             var action = this.playNextFileAction;
             if (action != null)
             {
                 action();
             }
         }, CancellationToken.None, TaskCreationOptions.None, currentSynchronizationContext);
     }
     return FMOD.RESULT.OK;
 }
Beispiel #2
0
        /// <summary>
        /// Main handler for playback-end callback.
        /// </summary>
        /// <param name="channelraw"></param>
        /// <param name="controltype"></param>
        /// <param name="type"></param>
        /// <param name="commanddata1"></param>
        /// <param name="commanddata2"></param>
        /// <returns></returns>
        protected RESULT DispatchEndCallback(
            IntPtr channelraw,
            CHANNELCONTROL_TYPE controltype,
            CHANNELCONTROL_CALLBACK_TYPE type,
            IntPtr commanddata1,
            IntPtr commanddata2)
        {
            // There are several callback types
            if (type == CHANNELCONTROL_CALLBACK_TYPE.END)
            {
                if (allChannels.ContainsKey(channelraw))
                {
                    MediaObject sndobj = allChannels[channelraw];
                    return(sndobj.EndCallbackHandler());
                }
            }

            return(RESULT.OK);
        }
 private RESULT ChannelEndCallback(IntPtr channelcontrol, CHANNELCONTROL_TYPE controltype, CHANNELCONTROL_CALLBACK_TYPE callbacktype, IntPtr commanddata1, IntPtr commanddata2)
 {
     if (callbacktype == CHANNELCONTROL_CALLBACK_TYPE.END)
     {
         // this must be thread safe
         var currentSynchronizationContext = TaskScheduler.FromCurrentSynchronizationContext();
         var uiTask = Task.Factory.StartNew(() => {
             var action = this.playNextFileAction;
             if (action != null)
             {
                 action();
             }
         }, CancellationToken.None, TaskCreationOptions.None, currentSynchronizationContext);
     }
     return(FMOD.RESULT.OK);
 }