コード例 #1
0
        //==========================================================================
        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;
            }
        }