avmedia/source/vlc/vlcplayer.cxx | 29 +++++++++++++++------------- avmedia/source/vlc/vlcplayer.hxx | 2 - avmedia/source/vlc/wrapper/EventManager.cxx | 1 avmedia/source/vlc/wrapper/Instance.cxx | 8 +++++-- avmedia/source/vlc/wrapper/Instance.hxx | 4 ++- avmedia/source/vlc/wrapper/Media.cxx | 1 avmedia/source/vlc/wrapper/Player.cxx | 1 avmedia/source/vlc/wrapper/SymbolLoader.hxx | 12 +++++++++-- 8 files changed, 38 insertions(+), 20 deletions(-)
New commits: commit ba282259a9309f21f4019073299d7eb6e7f61d98 Author: Minh Ngo <nlmin...@gmail.com> Date: Thu Aug 22 08:02:31 2013 +0300 Fixing warnings and crash with the VLC::Instance. Change-Id: I0282b79e296d6fccafbf7d89f38ed2f50672ef08 diff --git a/avmedia/source/vlc/vlcplayer.cxx b/avmedia/source/vlc/vlcplayer.cxx index a0887c2..08603c2 100644 --- a/avmedia/source/vlc/vlcplayer.cxx +++ b/avmedia/source/vlc/vlcplayer.cxx @@ -12,26 +12,29 @@ using namespace ::com::sun::star; namespace avmedia { namespace vlc { -const ::rtl::OUString AVMEDIA_VLC_PLAYER_IMPLEMENTATIONNAME = "com.sun.star.comp.avmedia.Player_VLC"; -const ::rtl::OUString AVMEDIA_VLC_PLAYER_SERVICENAME = "com.sun.star.media.Player_VLC"; +namespace +{ + const ::rtl::OUString AVMEDIA_VLC_PLAYER_IMPLEMENTATIONNAME = "com.sun.star.comp.avmedia.Player_VLC"; + const ::rtl::OUString AVMEDIA_VLC_PLAYER_SERVICENAME = "com.sun.star.media.Player_VLC"; -const char * const VLC_ARGS[] = { - "-Vdummy", - "--snapshot-format=png", - "--ffmpeg-threads", - "--verbose=2" -}; + const int MS_IN_SEC = 1000; // Millisec in sec -const int MS_IN_SEC = 1000; // Millisec in sec + const char * const VLC_ARGS[] = { + "-Vdummy", + "--snapshot-format=png", + "--ffmpeg-threads", + "--verbose=2" + }; +} -VLCPlayer::VLCPlayer( const rtl::OUString& url, boost::shared_ptr<VLC::EventHandler> eh ) +VLCPlayer::VLCPlayer( const rtl::OUString& iurl, boost::shared_ptr<VLC::EventHandler> eh ) : VLC_Base(m_aMutex) , mEventHandler( eh ) - , mInstance( VLC_ARGS ) - , mMedia( url, mInstance ) + , mInstance( sizeof( VLC_ARGS ) / sizeof( VLC_ARGS[0] ), VLC_ARGS ) + , mMedia( iurl, mInstance ) , mPlayer( mMedia ) , mEventManager( mPlayer, mEventHandler ) - , mUrl( url ) + , mUrl( iurl ) , mPlaybackLoop( false ) { mPlayer.setMouseHandling(false); diff --git a/avmedia/source/vlc/vlcplayer.hxx b/avmedia/source/vlc/vlcplayer.hxx index 18e4e6f..831e4fe 100644 --- a/avmedia/source/vlc/vlcplayer.hxx +++ b/avmedia/source/vlc/vlcplayer.hxx @@ -49,7 +49,7 @@ class VLCPlayer : public ::cppu::BaseMutex, const rtl::OUString mUrl; bool mPlaybackLoop; public: - VLCPlayer( const rtl::OUString& url, boost::shared_ptr<VLC::EventHandler> eh ); + VLCPlayer( const rtl::OUString& iurl, boost::shared_ptr<VLC::EventHandler> eh ); const rtl::OUString& url() const; diff --git a/avmedia/source/vlc/wrapper/Instance.cxx b/avmedia/source/vlc/wrapper/Instance.cxx index ea6659a..39c2ce3 100644 --- a/avmedia/source/vlc/wrapper/Instance.cxx +++ b/avmedia/source/vlc/wrapper/Instance.cxx @@ -26,15 +26,18 @@ namespace VLC }; } - Instance::Instance( const char * const argv[] ) + Instance::Instance( int argc, const char * const argv[] ) { InitApiMap( VLC_INSTANCE_API ); - mInstance = libvlc_new( sizeof( argv ) / sizeof( argv[0] ), argv ); + mInstance = libvlc_new( argc, argv ); } Instance::Instance( const Instance& other ) { + libvlc_release( mInstance ); + mInstance = other.mInstance; + libvlc_retain( mInstance ); } const Instance& Instance::operator=( const Instance& other ) @@ -42,6 +45,7 @@ namespace VLC libvlc_release( mInstance ); mInstance = other.mInstance; libvlc_retain( mInstance ); + return *this; } Instance::~Instance() diff --git a/avmedia/source/vlc/wrapper/Instance.hxx b/avmedia/source/vlc/wrapper/Instance.hxx index 15ac0ef..887baf1 100644 --- a/avmedia/source/vlc/wrapper/Instance.hxx +++ b/avmedia/source/vlc/wrapper/Instance.hxx @@ -14,10 +14,12 @@ struct libvlc_instance_t; namespace VLC { + + class Instance { public: - Instance( const char * const argv[] ); + Instance( int argc, const char * const argv[] ); Instance( const Instance& other ); const Instance& operator=( const Instance& other ); virtual ~Instance(); commit 77d732769abec345b9cf8dae415358fd866311e8 Author: Minh Ngo <nlmin...@gmail.com> Date: Thu Aug 22 08:00:32 2013 +0300 Returning an object reference in operators =. Change-Id: Ia10646789962b046bbb95ecaf74b9d248bb7e4e6 diff --git a/avmedia/source/vlc/wrapper/Media.cxx b/avmedia/source/vlc/wrapper/Media.cxx index dd6c89d..825bb06 100644 --- a/avmedia/source/vlc/wrapper/Media.cxx +++ b/avmedia/source/vlc/wrapper/Media.cxx @@ -57,6 +57,7 @@ const Media& Media::operator=( const Media& other ) mMedia = other.mMedia; libvlc_media_retain( mMedia ); + return *this; } Media::~Media() diff --git a/avmedia/source/vlc/wrapper/Player.cxx b/avmedia/source/vlc/wrapper/Player.cxx index 804d41f..9c739bd 100644 --- a/avmedia/source/vlc/wrapper/Player.cxx +++ b/avmedia/source/vlc/wrapper/Player.cxx @@ -83,6 +83,7 @@ namespace VLC libvlc_media_player_release( mPlayer ); mPlayer = other.mPlayer; libvlc_media_player_retain( mPlayer ); + return *this; } Player::~Player() commit ae22b3ea1e951e61679edbf56a280895b979279f Author: Minh Ngo <nlmin...@gmail.com> Date: Thu Aug 22 07:58:58 2013 +0300 Removing a waste header Change-Id: I7609abadaa2d483617a3e80a1b08b06e63b0a69d diff --git a/avmedia/source/vlc/wrapper/EventManager.cxx b/avmedia/source/vlc/wrapper/EventManager.cxx index 22881b8..b8a194b 100644 --- a/avmedia/source/vlc/wrapper/EventManager.cxx +++ b/avmedia/source/vlc/wrapper/EventManager.cxx @@ -7,7 +7,6 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -#include <boost/thread.hpp> #include <vlc/libvlc.h> #include <vlc/libvlc_media.h> #include <vlc/libvlc_events.h> commit aabbb535a7115d226413b6ba1bdf67c560886af3 Author: Minh Ngo <nlmin...@gmail.com> Date: Thu Aug 22 07:57:20 2013 +0300 Fixing symbol loader. Returns true if successful. false otherwise. Change-Id: I58a5dd39c005841a5680440a52905596ae8679b2 diff --git a/avmedia/source/vlc/wrapper/SymbolLoader.hxx b/avmedia/source/vlc/wrapper/SymbolLoader.hxx index c7e66cf..8730e05 100644 --- a/avmedia/source/vlc/wrapper/SymbolLoader.hxx +++ b/avmedia/source/vlc/wrapper/SymbolLoader.hxx @@ -28,7 +28,6 @@ namespace { const char *libNames[] = { "libvlc.so.5", - "libvlccore.so.5", "libvlc.dll", "libvlc.dylib" }; @@ -41,7 +40,11 @@ namespace SymbolFunc aMethod = ( SymbolFunc )osl_getFunctionSymbol ( aModule, OUString::createFromAscii( pMap[ i ].symName ).pData ); if ( !aMethod ) + { + std::cerr << "Cannot load method " << pMap[ i ].symName << std::endl; + *pMap[ i ].refValue = NULL; return false; + } *pMap[ i ].refValue = aMethod; } @@ -64,11 +67,16 @@ bool InitApiMap( const ApiMap ( &pMap )[N] ) if( aModule == NULL) continue; - tryLink( aModule, pMap ); + if (tryLink( aModule, pMap )) + { + osl_unloadModule( aModule ); + return true; + } osl_unloadModule( aModule ); } + std::cerr << "Cannot load libvlc" << std::endl; return false; } _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits