/** * De-register the call-back used to receive native media player events. */ private void DeregisterEventListener() { Logger.Debug("DeregisterEventListener()"); IntPtr callbackPtr = Marshal.GetFunctionPointerForDelegate(callback); foreach (int value in Enum.GetValues(typeof(libvlc_event_e))) { if (value >= (int)libvlc_event_e.libvlc_MediaListItemAdded && value <= (int)libvlc_event_e.libvlc_MediaListWillDeleteItem) { Logger.Debug("event={}", value); LibVlc.libvlc_event_detach(mediaListEventManager, value, callbackPtr, IntPtr.Zero); } } }
/** * */ private void DeregisterEventListener() { Logger.Debug("DeregisterEventListener()"); if (callback != null) { IntPtr callbackPtr = Marshal.GetFunctionPointerForDelegate(callback); foreach (int value in Enum.GetValues(typeof(libvlc_event_e))) { // The native event manager reports that it does not support // libvlc_MediaListPlayerPlayed or libvlc_MediaListPlayerStopped if (value >= (int)libvlc_event_e.libvlc_MediaListPlayerNextItemSet && value <= (int)libvlc_event_e.libvlc_MediaListPlayerNextItemSet) { Logger.Debug("event={}", (libvlc_event_e)value); LibVlc.libvlc_event_detach(mediaListPlayerEventManager, value, callbackPtr, IntPtr.Zero); } } callback = null; } }