summaryrefslogtreecommitdiff
path: root/indra/media_plugins/base/media_plugin_base.h
diff options
context:
space:
mode:
authorRye <rye@alchemyviewer.org>2025-10-23 02:29:56 -0400
committerRye <rye@alchemyviewer.org>2025-10-27 04:58:02 -0400
commit6876edd5bae672799fc50e36b547d90ccfb22c43 (patch)
tree4efb9d1e8eefec94ceeb79f7a6e200865603bbb4 /indra/media_plugins/base/media_plugin_base.h
parent0e3ba50520dd4cae89951e62c38b8647f76d9519 (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.h39
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