private RESULT ChannelCallback(IntPtr channelraw, CHANNEL_CALLBACKTYPE type, IntPtr commanddata1, IntPtr commanddata2) { if (type == CHANNEL_CALLBACKTYPE.END) { songEndAction(); } return(RESULT.OK); }
private RESULT SyncCallback(IntPtr c, CHANNEL_CALLBACKTYPE type, IntPtr a, IntPtr b) { if (Playing && playingintro && type == CHANNEL_CALLBACKTYPE.END) { system.playSound(CHANNELINDEX.REUSE, loop, false, ref channel); channel.setVolume(volume); playingintro = false; } return(RESULT.OK); }
private RESULT SyncCallback(IntPtr c, CHANNEL_CALLBACKTYPE type, IntPtr a, IntPtr b) { if (type == CHANNEL_CALLBACKTYPE.END) { playCount--; if (playCount < 0) { playCount = 0; } } return(RESULT.OK); }
private static RESULT ChannelEndCallback(IntPtr channelraw, CHANNEL_CALLBACKTYPE type, IntPtr commanddata1, IntPtr commanddata2) { if (type == CHANNEL_CALLBACKTYPE.END) { // this must be thread safe var currentSynchronizationContext = TaskScheduler.FromCurrentSynchronizationContext(); var uiTask = Task.Factory.StartNew(() => { var action = PlayerEngine.Instance.PlayNextFileAction; if (action != null) { action(); } }, CancellationToken.None, TaskCreationOptions.None, currentSynchronizationContext); } return(FMOD.RESULT.OK); }
/// <summary> /// Main handler for playback-end callback. /// </summary> /// <param name="channelraw"></param> /// <param name="type"></param> /// <param name="commanddata1"></param> /// <param name="commanddata2"></param> /// <returns></returns> protected RESULT DispatchEndCallback( IntPtr channelraw, CHANNEL_CALLBACKTYPE type, IntPtr commanddata1, IntPtr commanddata2) { // There are several callback types switch (type) { case CHANNEL_CALLBACKTYPE.END: if (allChannels.ContainsKey(channelraw)) { MediaObject sndobj = allChannels[channelraw]; return(sndobj.EndCallbackHandler()); } break; } return(RESULT.OK); }
private RESULT OnPlaybackEnd(IntPtr channelraw, CHANNEL_CALLBACKTYPE type, int command, uint commanddata1, uint commanddata2) { _channel = null; try { if (_endCallback != null) { // unlock to avoid deadlocks Monitor.Exit(_engine.Lock); _endCallback(this); Monitor.Enter(_engine.Lock); } return(RESULT.OK); } catch (Exception e) { GameLog.Client.Audio.Error(e); return(RESULT.ERR_DSP_NOTFOUND); } }
private static extern RESULT FMOD_Channel_SetCallback(IntPtr channel, CHANNEL_CALLBACKTYPE type, CHANNEL_CALLBACK callback, int command);
public RESULT setCallback(CHANNEL_CALLBACKTYPE type, CHANNEL_CALLBACK callback, int command) { return FMOD_Channel_SetCallback(channelraw, type, callback, command); }
private RESULT SyncCallback(IntPtr c, CHANNEL_CALLBACKTYPE type, IntPtr a, IntPtr b) { if (Playing && playingintro && type == CHANNEL_CALLBACKTYPE.END) { system.playSound(CHANNELINDEX.REUSE, loop, false, ref channel); channel.setVolume(volume); playingintro = false; } return RESULT.OK; }
private static RESULT ChannelEndCallback(IntPtr channelraw, CHANNEL_CALLBACKTYPE type, IntPtr commanddata1, IntPtr commanddata2) { if (type == CHANNEL_CALLBACKTYPE.END) { // this must be thread safe var currentSynchronizationContext = TaskScheduler.FromCurrentSynchronizationContext(); var uiTask = Task.Factory.StartNew(() => { var action = PlayerEngine.Instance.PlayNextFileAction; if (action != null) { action(); } }, CancellationToken.None, TaskCreationOptions.None, currentSynchronizationContext); } return FMOD.RESULT.OK; }
/// <summary> /// Main handler for playback-end callback. /// </summary> /// <param name="channelraw"></param> /// <param name="type"></param> /// <param name="commanddata1"></param> /// <param name="commanddata2"></param> /// <returns></returns> protected RESULT DispatchEndCallback( IntPtr channelraw, CHANNEL_CALLBACKTYPE type, IntPtr commanddata1, IntPtr commanddata2) { // There are several callback types switch (type) { case CHANNEL_CALLBACKTYPE.END: if (allChannels.ContainsKey(channelraw)) { MediaObject sndobj = allChannels[channelraw]; return sndobj.EndCallbackHandler(); } break; } return RESULT.OK; }
private RESULT SyncCallback(IntPtr c, CHANNEL_CALLBACKTYPE type, IntPtr a, IntPtr b) { if (type == CHANNEL_CALLBACKTYPE.END) { playCount--; if (playCount < 0) playCount = 0; } return RESULT.OK; }
public RESULT setCallback(CHANNEL_CALLBACKTYPE type, CHANNEL_CALLBACK callback, int command) { return(Channel.FMOD_Channel_SetCallback(channelraw, type, callback, command)); }
private RESULT ChannelCallback(IntPtr channelraw, CHANNEL_CALLBACKTYPE type, IntPtr commanddata1, IntPtr commanddata2) { if (type == CHANNEL_CALLBACKTYPE.END) songEndAction(); return RESULT.OK; }