From 5d4197f0a6f08e8c1e8a68aca7bcc7cd4306d682 Mon Sep 17 00:00:00 2001 From: Clayton Groeneveld Date: Sun, 17 Jan 2021 01:38:53 -0600 Subject: [PATCH] Use new module function to find obs-browser lib Requires https://github.com/obsproject/obs-studio/pull/3871 --- panel/browser-panel.hpp | 41 ++++++++++++++++++++++++++--------------- 1 file changed, 26 insertions(+), 15 deletions(-) diff --git a/panel/browser-panel.hpp b/panel/browser-panel.hpp index b0b5b0931..fe209d816 100644 --- a/panel/browser-panel.hpp +++ b/panel/browser-panel.hpp @@ -1,5 +1,6 @@ #pragma once +#include #include #include #include @@ -72,36 +73,46 @@ struct QCef { QObject *obj) = 0; }; -static inline void *obs_browser_dlsym(const char *name) +static inline void *get_browser_lib() { -#if defined(_WIN32) - void *lib = os_dlopen("obs-browser"); -#elif defined(__APPLE__) - void *lib = RTLD_DEFAULT; -#else - void *lib = os_dlopen("../obs-plugins/obs-browser"); -#endif - if (!lib) { + obs_module_t *browserModule = obs_get_module("obs-browser"); + + if (!browserModule) return nullptr; - } - return os_dlsym(lib, name); + return obs_get_module_lib(browserModule); } static inline QCef *obs_browser_init_panel(void) { - QCef *(*create_qcef)(void) = (decltype(create_qcef))obs_browser_dlsym( - "obs_browser_create_qcef"); + void *lib = get_browser_lib(); + QCef *(*create_qcef)(void) = nullptr; + + if (!lib) + return nullptr; + + create_qcef = + (decltype(create_qcef))os_dlsym(lib, "obs_browser_create_qcef"); + if (!create_qcef) return nullptr; + return create_qcef(); } static inline int obs_browser_qcef_version(void) { - int (*qcef_version)(void) = (decltype(qcef_version))obs_browser_dlsym( - "obs_browser_qcef_version_export"); + void *lib = get_browser_lib(); + int (*qcef_version)(void) = nullptr; + + if (!lib) + return 0; + + qcef_version = (decltype(qcef_version))os_dlsym( + lib, "obs_browser_qcef_version_export"); + if (!qcef_version) return 0; + return qcef_version(); }