diff options
author | Minh Ngo <nlminhtl@gmail.com> | 2013-08-25 20:56:20 +0300 |
---|---|---|
committer | Minh Ngo <nlminhtl@gmail.com> | 2013-08-25 20:57:06 +0300 |
commit | 8a844a4b924eaadec25f9e27cef56b52a0abe50e (patch) | |
tree | 116871f3b8ef17a479c2a19f71d80fe48e002975 /avmedia/source/vlc/wrapper/SymbolLoader.hxx | |
parent | 88011f4cdf050c2df0b7488e273332d4e7048012 (diff) |
Linking symbols only once.
If they were linked unsuccessfully a VLC instance won't be created. Some static
functions and variables were encapsulated.
Change-Id: I9d07ac9a73a6bd59928bcc349458ea346a26deb4
Diffstat (limited to 'avmedia/source/vlc/wrapper/SymbolLoader.hxx')
-rw-r--r-- | avmedia/source/vlc/wrapper/SymbolLoader.hxx | 37 |
1 files changed, 20 insertions, 17 deletions
diff --git a/avmedia/source/vlc/wrapper/SymbolLoader.hxx b/avmedia/source/vlc/wrapper/SymbolLoader.hxx index 8730e05dc270..92b52eee3e05 100644 --- a/avmedia/source/vlc/wrapper/SymbolLoader.hxx +++ b/avmedia/source/vlc/wrapper/SymbolLoader.hxx @@ -53,31 +53,34 @@ namespace } } -template<size_t N> -bool InitApiMap( const ApiMap ( &pMap )[N] ) +namespace VLC { - oslModule aModule; - - for (uint j = 0; j < sizeof(libNames) / sizeof(libNames[0]); ++j) + template<size_t N> + bool InitApiMap( const ApiMap ( &pMap )[N] ) { - aModule = osl_loadModule( OUString::createFromAscii - ( libNames[ j ] ).pData, - SAL_LOADMODULE_DEFAULT ); - - if( aModule == NULL) - continue; + oslModule aModule; - if (tryLink( aModule, pMap )) + for (uint j = 0; j < sizeof(libNames) / sizeof(libNames[0]); ++j) { + aModule = osl_loadModule( OUString::createFromAscii + ( libNames[ j ] ).pData, + SAL_LOADMODULE_DEFAULT ); + + if( aModule == NULL) + continue; + + if (tryLink( aModule, pMap )) + { + osl_unloadModule( aModule ); + return true; + } + osl_unloadModule( aModule ); - return true; } - osl_unloadModule( aModule ); + std::cerr << "Cannot load libvlc" << std::endl; + return false; } - - std::cerr << "Cannot load libvlc" << std::endl; - return false; } #endif |