//========================================================================== private IntPtr CreateHandle() { IntPtr handle = m_Library.libvlc_media_player_new(m_Instance.Handle); if (handle == IntPtr.Zero) { throw new LibVLCException(m_Library); } RegisterMediaPlayer(handle, this); try { IntPtr media_player_event_manager = m_Library.libvlc_media_player_event_manager(handle); if (media_player_event_manager == IntPtr.Zero) { throw new LibVLCException(m_Library); } int event_index = 0; try { while (event_index < m_Events.Length) { if (m_Library.libvlc_event_attach(media_player_event_manager, m_Events[event_index++], m_EventManagerEventCallback, IntPtr.Zero) != 0) { throw new LibVLCException(m_Library); } } } catch { while (event_index > 0) { m_Library.libvlc_event_attach(media_player_event_manager, m_Events[--event_index], m_EventManagerEventCallback, IntPtr.Zero); } throw; } m_Library.libvlc_video_set_format_callbacks(handle, m_VideoFormatCallback, m_VideoCleanupCallback); m_Library.libvlc_video_set_callbacks(handle, m_VideoLockCallback, m_VideoUnlockCallback, m_VideoDisplayCallback); return(handle); } catch { UnregisterMediaPlayer(handle); m_Library.libvlc_media_player_release(handle); throw; } }