Skip to content

Commit

Permalink
Support OBS 31 obs_frontend_get_user_config
Browse files Browse the repository at this point in the history
  • Loading branch information
exeldro committed Sep 17, 2024
1 parent ed5aba8 commit d073ce8
Show file tree
Hide file tree
Showing 4 changed files with 43 additions and 19 deletions.
3 changes: 0 additions & 3 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,9 +1,6 @@
# --- Detect if the plugin is build out of tree or not ---
if(CMAKE_PROJECT_NAME STREQUAL "obs-studio")
set(BUILD_OUT_OF_TREE OFF)
if(OBS_CMAKE_VERSION VERSION_GREATER_EQUAL 3.0.0)
legacy_check()
endif()
else()
set(BUILD_OUT_OF_TREE ON)
cmake_minimum_required(VERSION 3.18)
Expand Down
8 changes: 3 additions & 5 deletions config-dialog.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -284,7 +284,6 @@ OBSBasicSettings::OBSBasicSettings(CanvasDock *canvas_dock, QMainWindow *parent)
streamingLayout->setFieldGrowthPolicy(QFormLayout::AllNonFixedFieldsGrow);
streamingLayout->setLabelAlignment(Qt::AlignRight | Qt::AlignTrailing | Qt::AlignVCenter);


auto streaming_title_layout = new QHBoxLayout;
auto streaming_title = new QLabel(QString::fromUtf8(obs_module_text("Streaming")));
streaming_title->setStyleSheet(QString::fromUtf8("font-weight: bold;"));
Expand Down Expand Up @@ -492,10 +491,9 @@ OBSBasicSettings::OBSBasicSettings(CanvasDock *canvas_dock, QMainWindow *parent)

vb = new QVBoxLayout;
vb->setContentsMargins(0, 0, 0, 0);

// multistream is active, show warning
if (canvasDock->disable_stream_settings)
{
if (canvasDock->disable_stream_settings) {
auto multistream_warning_widget = new QGroupBox(QString::fromUtf8(obs_frontend_get_locale_string("Warning")));
auto multistream_warning_layout = new QVBoxLayout;
multistream_warning_widget->setStyleSheet(
Expand All @@ -508,7 +506,7 @@ OBSBasicSettings::OBSBasicSettings(CanvasDock *canvas_dock, QMainWindow *parent)
multistream_warning_widget->setLayout(multistream_warning_layout);
vb->addWidget(multistream_warning_widget);
}

vb->addWidget(streamingGroup);
vb->addWidget(streamingAdvancedGroup);
vb->addWidget(streamingDelayGroup);
Expand Down
6 changes: 4 additions & 2 deletions projector.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -49,9 +49,11 @@ static inline void endRegion()
gs_projection_pop();
}

config_t *get_user_config(void);

OBSProjector::OBSProjector(CanvasDock *canvas_, int monitor) : OBSQTDisplay(nullptr, Qt::Window), canvas(canvas_)
{
isAlwaysOnTop = config_get_bool(obs_frontend_get_global_config(), "BasicWindow", "ProjectorAlwaysOnTop");
isAlwaysOnTop = config_get_bool(get_user_config(), "BasicWindow", "ProjectorAlwaysOnTop");

if (isAlwaysOnTop)
setWindowFlags(Qt::WindowStaysOnTopHint);
Expand Down Expand Up @@ -131,7 +133,7 @@ void OBSProjector::SetHideCursor()
if (savedMonitor == -1)
return;

bool hideCursor = config_get_bool(obs_frontend_get_global_config(), "BasicWindow", "HideProjectorCursor");
bool hideCursor = config_get_bool(get_user_config(), "BasicWindow", "HideProjectorCursor");

if (hideCursor)
setCursor(Qt::BlankCursor);
Expand Down
45 changes: 36 additions & 9 deletions vertical-canvas.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1666,12 +1666,39 @@ static bool SceneItemHasVideo(obs_sceneitem_t *item)
return (flags & OBS_SOURCE_VIDEO) != 0;
}

static config_t *(*get_user_config_func)(void) = nullptr;

config_t *get_user_config(void)
{
#if LIBOBS_API_VER < MAKE_SEMANTIC_VERSION(31, 0, 0)
if (!get_user_config_func) {
if (obs_get_version() < MAKE_SEMANTIC_VERSION(31, 0, 0)) {
get_user_config_func = obs_frontend_get_global_config;
blog(LOG_INFO, "[Vertical Canvas] use global config");
} else {
auto handle = os_dlopen("obs-frontend-api");
if (handle) {
get_user_config_func = (config_t * (*)(void)) os_dlsym(handle, "obs_frontend_get_user_config");
os_dlclose(handle);
if (get_user_config_func)
blog(LOG_INFO, "[Vertical Canvas] use user config");
}
}
}
if (get_user_config_func)
return get_user_config_func();
return obs_frontend_get_global_config();
#else
return obs_frontend_get_user_config();
#endif
}

void CanvasDock::DrawOverflow(float scale)
{
if (locked)
return;

config_t *config = obs_frontend_get_global_config();
auto config = get_user_config();
if (!config)
return;

Expand Down Expand Up @@ -1713,7 +1740,7 @@ bool CanvasDock::DrawSelectedOverflow(obs_scene_t *scene, obs_sceneitem_t *item,
if (!SceneItemHasVideo(item))
return true;

config_t *config = obs_frontend_get_global_config();
auto config = get_user_config();
if (!config)
return true;

Expand Down Expand Up @@ -2624,7 +2651,7 @@ static inline QColor color_from_int(long long val)

QColor CanvasDock::GetSelectionColor() const
{
config_t *config = obs_frontend_get_global_config();
auto config = get_user_config();
if (config && config_get_bool(config, "Accessibility", "OverrideColors")) {
return color_from_int(config_get_int(config, "Accessibility", "SelectRed"));
}
Expand All @@ -2633,7 +2660,7 @@ QColor CanvasDock::GetSelectionColor() const

QColor CanvasDock::GetCropColor() const
{
config_t *config = obs_frontend_get_global_config();
auto config = get_user_config();
if (config && config_get_bool(config, "Accessibility", "OverrideColors")) {
return color_from_int(config_get_int(config, "Accessibility", "SelectGreen"));
}
Expand All @@ -2642,7 +2669,7 @@ QColor CanvasDock::GetCropColor() const

QColor CanvasDock::GetHoverColor() const
{
config_t *config = obs_frontend_get_global_config();
auto config = get_user_config();
if (config && config_get_bool(config, "Accessibility", "OverrideColors")) {
return color_from_int(config_get_int(config, "Accessibility", "SelectBlue"));
}
Expand Down Expand Up @@ -3975,7 +4002,7 @@ vec3 CanvasDock::GetSnapOffset(const vec3 &tl, const vec3 &br)

vec3_zero(&clampOffset);

config_t *config = obs_frontend_get_global_config();
auto config = get_user_config();
if (!config)
return clampOffset;

Expand Down Expand Up @@ -4182,7 +4209,7 @@ void CanvasDock::SnapItemMovement(vec2 &offset)

vec3 snapOffset = GetSnapOffset(data.tl, data.br);

config_t *config = obs_frontend_get_global_config();
auto config = get_user_config();
if (!config)
return;

Expand Down Expand Up @@ -5055,7 +5082,7 @@ int GetConfigPath(char *path, size_t size, const char *name)
static inline int GetProfilePath(char *path, size_t size, const char *file)
{
char profiles_path[512];
config_t *config = obs_frontend_get_global_config();
auto config = get_user_config();
if (!config)
return -1;
const char *profile = config_get_string(config, "Basic", "ProfileDir");
Expand Down Expand Up @@ -7544,7 +7571,7 @@ OBSProjector *CanvasDock::OpenProjector(int monitor)
/* seriously? 10 monitors? */
if (monitor > 9 || monitor > QGuiApplication::screens().size() - 1)
return nullptr;
config_t *config = obs_frontend_get_global_config();
auto config = get_user_config();
if (!config)
return nullptr;

Expand Down

0 comments on commit d073ce8

Please sign in to comment.