Rework plugin to allow split into module and library part

This is mostly intended to allow easier bundling for MacOS but might
prove to be useful for other areas as well.
This commit is contained in:
WarmUpTill 2022-08-14 02:09:46 +02:00 committed by WarmUpTill
parent aef29d7d82
commit 5ae9e18044
4 changed files with 21 additions and 3 deletions

View File

@ -260,6 +260,7 @@ set_target_properties(
AUTORCC ON
AUTOUIC_SEARCH_PATHS "${CMAKE_CURRENT_SOURCE_DIR}/forms")
target_compile_features(${PROJECT_NAME} PUBLIC cxx_std_17)
target_compile_features(${LIB_NAME} PUBLIC cxx_std_17)
add_definitions(-DASIO_STANDALONE)

View File

@ -4,13 +4,15 @@
OBS_DECLARE_MODULE()
OBS_MODULE_USE_DEFAULT_LOCALE("advanced-scene-switcher", "en-US")
void InitSceneSwitcher();
typedef const char *(*translateFunc)(const char *);
void InitSceneSwitcher(obs_module_t *, translateFunc);
void FreeSceneSwitcher();
bool obs_module_load(void)
{
obs_frontend_push_ui_translation(obs_module_get_string);
InitSceneSwitcher();
InitSceneSwitcher(obs_current_module(), obs_module_text);
return true;
}

View File

@ -14,6 +14,16 @@
#include "headers/utility.hpp"
#include "headers/version.h"
const char *obs_module_text(const char *text)
{
return switcher->translate(text);
}
obs_module_t *obs_current_module()
{
return switcher->modulePtr;
}
SwitcherData *switcher = nullptr;
SwitcherData *GetSwitcher()
{
@ -673,12 +683,14 @@ void LoadPlugins()
}
}
extern "C" void InitSceneSwitcher()
extern "C" void InitSceneSwitcher(obs_module_t *m, translateFunc t)
{
blog(LOG_INFO, "version: %s", g_GIT_TAG);
blog(LOG_INFO, "version: %s", g_GIT_SHA1);
switcher = new SwitcherData;
switcher->modulePtr = m;
switcher->translate = t;
if (loadCurl() && f_curl_init) {
switcher->curl = f_curl_init();

View File

@ -48,6 +48,7 @@ constexpr auto default_priority_10 = exe_func;
typedef enum { NO_SWITCH = 0, SWITCH = 1, RANDOM_SWITCH = 2 } NoMatch;
typedef enum { PERSIST = 0, START = 1, STOP = 2 } StartupBehavior;
typedef const char *(*translateFunc)(const char *);
enum class AutoStartEvent {
NEVER,
@ -76,6 +77,8 @@ class SwitcherThread;
********************************************************************************/
struct SwitcherData {
SwitcherThread *th = nullptr;
obs_module_t *modulePtr = nullptr;
translateFunc translate = nullptr;
bool settingsWindowOpened = false;
int lastOpenedTab = -1;