From 763b6733737946e6527ce6bc4a803dccd04de834 Mon Sep 17 00:00:00 2001 From: Jean-Paul Saman Date: Tue, 10 Jun 2008 09:43:29 +0200 Subject: [PATCH] Remove VLCPlugin::getVLCObject() methond from ActiveX --- projects/activex/plugin.cpp | 27 +++------ projects/activex/plugin.h | 2 - projects/activex/vlccontrol.cpp | 104 ++++++++++++++++++-------------- 3 files changed, 67 insertions(+), 66 deletions(-) diff --git a/projects/activex/plugin.cpp b/projects/activex/plugin.cpp index 5aa6400e4c..72d9848e90 100644 --- a/projects/activex/plugin.cpp +++ b/projects/activex/plugin.cpp @@ -410,21 +410,6 @@ HRESULT VLCPlugin::onLoad(void) return S_OK; }; -HRESULT VLCPlugin::getVLCObject(int* i_vlc) -{ - libvlc_instance_t *p_libvlc; - HRESULT result = getVLC(&p_libvlc); - if( SUCCEEDED(result) ) - { - *i_vlc = libvlc_get_vlc_id(p_libvlc); - } - else - { - *i_vlc = 0; - } - return result; -} - HRESULT VLCPlugin::getVLC(libvlc_instance_t** pp_libvlc) { extern HMODULE DllGetModule(); @@ -485,16 +470,21 @@ HRESULT VLCPlugin::getVLC(libvlc_instance_t** pp_libvlc) /* common settings */ ppsz_argv[ppsz_argc++] = "--no-stats"; ppsz_argv[ppsz_argc++] = "--no-media-library"; + ppsz_argv[ppsz_argc++] = "--ignore-config"; ppsz_argv[ppsz_argc++] = "--intf=dummy"; // loop mode is a configuration option only if( _b_autoloop ) ppsz_argv[ppsz_argc++] = "--loop"; - _p_libvlc = libvlc_new(ppsz_argc, ppsz_argv, NULL); - if( NULL == _p_libvlc ) + libvlc_exception_t ex; + libvlc_exception_init(&ex); + + _p_libvlc = libvlc_new(ppsz_argc, ppsz_argv, &ex); + if( libvlc_exception_raised(&ex) ) { *pp_libvlc = NULL; + libvlc_exception_clear(&ex); return E_FAIL; } @@ -668,7 +658,8 @@ HRESULT VLCPlugin::onClose(DWORD dwSaveOption) _p_libvlc = NULL; vlcDataObject->onClose(); - libvlc_release(p_libvlc); + if( p_libvlc ) + libvlc_release(p_libvlc); } return S_OK; }; diff --git a/projects/activex/plugin.h b/projects/activex/plugin.h index 7e6c0e770c..62c4b18bfe 100644 --- a/projects/activex/plugin.h +++ b/projects/activex/plugin.h @@ -27,7 +27,6 @@ #include #include -#include extern "C" const GUID CLSID_VLCPlugin; extern "C" const GUID CLSID_VLCPlugin2; @@ -194,7 +193,6 @@ public: inline void setDirty(BOOL dirty) { _b_dirty = dirty; }; inline BOOL isRunning(void) { return NULL != _p_libvlc; }; - HRESULT getVLCObject(int *i_vlc); HRESULT getVLC(libvlc_instance_t** p_vlc); void setErrorInfo(REFIID riid, const char *description); diff --git a/projects/activex/vlccontrol.cpp b/projects/activex/vlccontrol.cpp index ea972919bf..8d7509ee6f 100644 --- a/projects/activex/vlccontrol.cpp +++ b/projects/activex/vlccontrol.cpp @@ -123,8 +123,8 @@ STDMETHODIMP VLCControl::put_Visible(VARIANT_BOOL isVisible) STDMETHODIMP VLCControl::play(void) { - int i_vlc; - HRESULT result = _p_instance->getVLCObject(&i_vlc); + libvlc_instance_t *p_libvlc; + HRESULT result = _p_instance->getVLC(&p_libvlc); if( SUCCEEDED(result) ) { VLC_Play(i_vlc); @@ -135,8 +135,8 @@ STDMETHODIMP VLCControl::play(void) STDMETHODIMP VLCControl::pause(void) { - int i_vlc; - HRESULT result = _p_instance->getVLCObject(&i_vlc); + libvlc_instance_t *p_libvlc; + HRESULT result = _p_instance->getVLC(&p_libvlc); if( SUCCEEDED(result) ) { VLC_Pause(i_vlc); @@ -147,8 +147,8 @@ STDMETHODIMP VLCControl::pause(void) STDMETHODIMP VLCControl::stop(void) { - int i_vlc; - HRESULT result = _p_instance->getVLCObject(&i_vlc); + libvlc_instance_t *p_libvlc; + HRESULT result = _p_instance->getVLC(&p_libvlc); if( SUCCEEDED(result) ) { VLC_Stop(i_vlc); @@ -165,11 +165,14 @@ STDMETHODIMP VLCControl::get_Playing(VARIANT_BOOL *isPlaying) HRESULT result = NOERROR; if( _p_instance->isRunning() ) { - int i_vlc; - result = _p_instance->getVLCObject(&i_vlc); + libvlc_instance_t *p_libvlc; + result = _p_instance->getVLC(&p_libvlc); if( SUCCEEDED(result) ) { - *isPlaying = VLC_IsPlaying(i_vlc) ? VARIANT_TRUE : VARIANT_FALSE; + if( libvlc_playlist_isplaying(p_libvlc, NULL) ) + *isPlaying = VARIANT_TRUE; + else + *isPlaying = VARIANT_FALSE; return NOERROR; } } @@ -185,8 +188,8 @@ STDMETHODIMP VLCControl::get_Position(float *position) HRESULT result = E_UNEXPECTED; if( _p_instance->isRunning() ) { - int i_vlc; - result = _p_instance->getVLCObject(&i_vlc); + libvlc_instance_t *p_libvlc; + result = _p_instance->getVLC(&p_libvlc); if( SUCCEEDED(result) ) { *position = VLC_PositionGet(i_vlc); @@ -202,8 +205,8 @@ STDMETHODIMP VLCControl::put_Position(float position) HRESULT result = E_UNEXPECTED; if( _p_instance->isRunning() ) { - int i_vlc; - result = _p_instance->getVLCObject(&i_vlc); + libvlc_instance_t *p_libvlc; + result = _p_instance->getVLC(&p_libvlc); if( SUCCEEDED(result) ) { VLC_PositionSet(i_vlc, position); @@ -220,8 +223,8 @@ STDMETHODIMP VLCControl::get_Time(int *seconds) HRESULT result = NOERROR; if( _p_instance->isRunning() ) { - int i_vlc; - result = _p_instance->getVLCObject(&i_vlc); + libvlc_instance_t *p_libvlc; + result = _p_instance->getVLC(&p_libvlc); if( SUCCEEDED(result) ) { *seconds = VLC_TimeGet(i_vlc); @@ -245,8 +248,8 @@ STDMETHODIMP VLCControl::shuttle(int seconds) HRESULT result = E_UNEXPECTED; if( _p_instance->isRunning() ) { - int i_vlc; - result = _p_instance->getVLCObject(&i_vlc); + libvlc_instance_t *p_libvlc; + result = _p_instance->getVLC(&p_libvlc); if( SUCCEEDED(result) ) { VLC_TimeSet(i_vlc, seconds, true); @@ -260,11 +263,20 @@ STDMETHODIMP VLCControl::fullscreen(void) HRESULT result = E_UNEXPECTED; if( _p_instance->isRunning() ) { - int i_vlc; - result = _p_instance->getVLCObject(&i_vlc); + libvlc_instance_t *p_libvlc; + result = _p_instance->getVLC(&p_libvlc); if( SUCCEEDED(result) ) { - VLC_FullScreen(i_vlc); + if( libvlc_playlist_isplaying(p_libvlc, NULL) ) + { + libvlc_media_player_t *p_md = + libvlc_playlist_get_media_player(p_libvlc, NULL); + if( p_md ) + { + libvlc_toggle_fullscreen(p_md, NULL); + libvlc_media_player_release(p_md); + } + } } } return result; @@ -278,8 +290,8 @@ STDMETHODIMP VLCControl::get_Length(int *seconds) HRESULT result = NOERROR; if( _p_instance->isRunning() ) { - int i_vlc; - result = _p_instance->getVLCObject(&i_vlc); + libvlc_instance_t *p_libvlc; + result = _p_instance->getVLC(&p_libvlc); if( SUCCEEDED(result) ) { *seconds = VLC_LengthGet(i_vlc); @@ -295,8 +307,8 @@ STDMETHODIMP VLCControl::playFaster(void) HRESULT result = E_UNEXPECTED; if( _p_instance->isRunning() ) { - int i_vlc; - result = _p_instance->getVLCObject(&i_vlc); + libvlc_instance_t *p_libvlc; + result = _p_instance->getVLC(&p_libvlc); if( SUCCEEDED(result) ) { VLC_SpeedFaster(i_vlc); @@ -310,8 +322,8 @@ STDMETHODIMP VLCControl::playSlower(void) HRESULT result = E_UNEXPECTED; if( _p_instance->isRunning() ) { - int i_vlc; - result = _p_instance->getVLCObject(&i_vlc); + libvlc_instance_t *p_libvlc; + result = _p_instance->getVLC(&p_libvlc); if( SUCCEEDED(result) ) { VLC_SpeedSlower(i_vlc); @@ -337,8 +349,8 @@ STDMETHODIMP VLCControl::put_Volume(int volume) STDMETHODIMP VLCControl::toggleMute(void) { - int i_vlc; - HRESULT result = _p_instance->getVLCObject(&i_vlc); + libvlc_instance_t *p_libvlc; + HRESULT result = _p_instance->getVLC(&p_libvlc); if( SUCCEEDED(result) ) { VLC_VolumeMute(i_vlc); @@ -351,8 +363,8 @@ STDMETHODIMP VLCControl::setVariable(BSTR name, VARIANT value) if( 0 == SysStringLen(name) ) return E_INVALIDARG; - int i_vlc; - HRESULT hr = _p_instance->getVLCObject(&i_vlc); + libvlc_instance_t *p_libvlc; + HRESULT result = _p_instance->getVLC(&p_libvlc); if( SUCCEEDED(hr) ) { int codePage = _p_instance->getCodePage(); @@ -466,8 +478,8 @@ STDMETHODIMP VLCControl::getVariable( BSTR name, VARIANT *value) if( 0 == SysStringLen(name) ) return E_INVALIDARG; - int i_vlc; - HRESULT hr = _p_instance->getVLCObject(&i_vlc); + libvlc_instance_t *p_libvlc; + HRESULT hr = _p_instance->getVLC(&p_libvlc); if( SUCCEEDED(hr) ) { UINT codePage = _p_instance->getCodePage(); @@ -853,8 +865,8 @@ STDMETHODIMP VLCControl::addTarget( BSTR uri, VARIANT options, enum VLCPlaylistM if( 0 == SysStringLen(uri) ) return E_INVALIDARG; - int i_vlc; - HRESULT hr = _p_instance->getVLCObject(&i_vlc); + libvlc_instance_t *p_libvlc; + HRESULT hr = _p_instance->getVLC(&p_libvlc); if( SUCCEEDED(hr) ) { char *cUri = CStrFromBSTR(CP_UTF8, uri); @@ -891,8 +903,8 @@ STDMETHODIMP VLCControl::get_PlaylistIndex(int *index) if( NULL == index ) return E_POINTER; - int i_vlc; - HRESULT result = _p_instance->getVLCObject(&i_vlc); + libvlc_instance_t *p_libvlc; + HRESULT result = _p_instance->getVLC(&p_libvlc); if( SUCCEEDED(result) ) { *index = VLC_PlaylistIndex(i_vlc); @@ -904,8 +916,8 @@ STDMETHODIMP VLCControl::get_PlaylistIndex(int *index) STDMETHODIMP VLCControl::get_PlaylistCount(int *count) { - int i_vlc; - HRESULT result = _p_instance->getVLCObject(&i_vlc); + libvlc_instance_t *p_libvlc; + HRESULT result = _p_instance->getVLC(&p_libvlc); if( SUCCEEDED(result) ) { *count = VLC_PlaylistNumberOfItems(i_vlc); @@ -917,8 +929,8 @@ STDMETHODIMP VLCControl::get_PlaylistCount(int *count) STDMETHODIMP VLCControl::playlistNext(void) { - int i_vlc; - HRESULT result = _p_instance->getVLCObject(&i_vlc); + libvlc_instance_t *p_libvlc; + HRESULT result = _p_instance->getVLC(&p_libvlc); if( SUCCEEDED(result) ) { VLC_PlaylistNext(i_vlc); @@ -929,8 +941,8 @@ STDMETHODIMP VLCControl::playlistNext(void) STDMETHODIMP VLCControl::playlistPrev(void) { - int i_vlc; - HRESULT result = _p_instance->getVLCObject(&i_vlc); + libvlc_instance_t *p_libvlc; + HRESULT result = _p_instance->getVLC(&p_libvlc); if( SUCCEEDED(result) ) { VLC_PlaylistPrev(i_vlc); @@ -941,8 +953,8 @@ STDMETHODIMP VLCControl::playlistPrev(void) STDMETHODIMP VLCControl::playlistClear(void) { - int i_vlc; - HRESULT result = _p_instance->getVLCObject(&i_vlc); + libvlc_instance_t *p_libvlc; + HRESULT result = _p_instance->getVLC(&p_libvlc); if( SUCCEEDED(result) ) { VLC_PlaylistClear(i_vlc); @@ -956,11 +968,11 @@ STDMETHODIMP VLCControl::get_VersionInfo(BSTR *version) if( NULL == version ) return E_POINTER; - const char *versionStr = VLC_Version(); + const char *versionStr = libvlc_get_version(); if( NULL != versionStr ) { *version = BSTRFromCStr(CP_UTF8, versionStr); - + return NULL == *version ? E_OUTOFMEMORY : NOERROR; } *version = NULL; -- 2.39.2