diff options
| author | Rye <rye@alchemyviewer.org> | 2025-10-23 02:29:56 -0400 |
|---|---|---|
| committer | Rye <rye@alchemyviewer.org> | 2025-10-27 04:58:02 -0400 |
| commit | 6876edd5bae672799fc50e36b547d90ccfb22c43 (patch) | |
| tree | 4efb9d1e8eefec94ceeb79f7a6e200865603bbb4 /indra/media_plugins/base/media_plugin_base.h | |
| parent | 0e3ba50520dd4cae89951e62c38b8647f76d9519 (diff) | |
Cherry-pick gstreamer10 from 57d423745fd1d3d0ea6a0c69b869a20c27e27fc5
Signed-off-by: Rye <rye@alchemyviewer.org>
Diffstat (limited to 'indra/media_plugins/base/media_plugin_base.h')
| -rw-r--r-- | indra/media_plugins/base/media_plugin_base.h | 39 |
1 files changed, 38 insertions, 1 deletions
diff --git a/indra/media_plugins/base/media_plugin_base.h b/indra/media_plugins/base/media_plugin_base.h index f65c712a66..0f014f8335 100644 --- a/indra/media_plugins/base/media_plugin_base.h +++ b/indra/media_plugins/base/media_plugin_base.h @@ -32,6 +32,40 @@ #include "llpluginmessage.h" #include "llpluginmessageclasses.h" +#if LL_LINUX + +struct SymbolToGrab +{ + bool mRequired; + char const *mName; + void **mPPFunc; +}; + +class SymbolGrabber +{ +public: + size_t registerSymbol( SymbolToGrab aSymbol ); + bool grabSymbols(std::vector< std::string > const &aDSONames); + void ungrabSymbols(); + +private: + std::vector< SymbolToGrab > gSymbolsToGrab; + + bool sSymsGrabbed = false; + std::vector<void *> sLoadedLibraries; +}; + +extern SymbolGrabber gSymbolGrabber; + +// extern SymbolGrabber gSymbolGrabber; + +#define LL_GRAB_SYM(SYMBOL_GRABBER, REQUIRED, SYMBOL_NAME, RETURN, ...) \ + RETURN (*ll##SYMBOL_NAME)(__VA_ARGS__) = nullptr; \ + size_t gRegistered##SYMBOL_NAME = SYMBOL_GRABBER.registerSymbol( \ + { REQUIRED, #SYMBOL_NAME , (void**)&ll##SYMBOL_NAME} \ + ); + +#endif class MediaPluginBase { @@ -126,4 +160,7 @@ int init_media_plugin( LLPluginInstance::sendMessageFunction *plugin_send_func, void **plugin_user_data); - +#if LL_LINUX +pid_t getParentPid(pid_t aPid); +bool isPluginPid(pid_t aPid); +#endif |
