Skip to content

Commit 5fba107

Browse files
committed
Add procedure handler based API
1 parent e4e523d commit 5fba107

9 files changed

+966
-3
lines changed

CMakeLists.txt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@ cmake_minimum_required(VERSION 3.16...3.25)
22

33
option(ENABLE_BROWSER "Enable browser source plugin (required Chromium Embedded Framework)" OFF)
44

5+
include(cmake/obs-browser-api.cmake)
6+
57
if(NOT ENABLE_BROWSER)
68
target_disable(obs-browser)
79
target_disable_feature(obs-browser "Browser sources are not enabled by default (set CEF_ROOT_DIR and ENABLE_BROWSER)")
@@ -36,6 +38,8 @@ target_sources(
3638
deps/signal-restore.hpp
3739
deps/wide-string.cpp
3840
deps/wide-string.hpp
41+
obs-browser-api-impl.cpp
42+
obs-browser-api-impl.hpp
3943
obs-browser-plugin.cpp
4044
obs-browser-source-audio.cpp
4145
obs-browser-source.cpp
@@ -44,7 +48,7 @@ target_sources(
4448
target_include_directories(obs-browser PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/deps")
4549

4650
target_compile_features(obs-browser PRIVATE cxx_std_17)
47-
target_link_libraries(obs-browser PRIVATE OBS::libobs OBS::frontend-api nlohmann_json::nlohmann_json)
51+
target_link_libraries(obs-browser PRIVATE OBS::libobs OBS::frontend-api OBS::browser-api nlohmann_json::nlohmann_json)
4852

4953
if(OS_WINDOWS)
5054
include(cmake/os-windows.cmake)

cmake/feature-panels.cmake

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@ target_compile_definitions(browser-panels INTERFACE BROWSER_AVAILABLE)
1212
target_sources(
1313
obs-browser
1414
PRIVATE # cmake-format: sortable
15-
panel/browser-panel-client.cpp panel/browser-panel-client.hpp panel/browser-panel-internal.hpp
16-
panel/browser-panel.cpp)
15+
obs-browser-api-impl-panel.cpp panel/browser-panel-client.cpp panel/browser-panel-client.hpp
16+
panel/browser-panel-internal.hpp panel/browser-panel.cpp)
1717

1818
target_link_libraries(obs-browser PRIVATE OBS::browser-panels Qt::Widgets)
1919

cmake/obs-browser-api.cmake

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
find_package(Qt6 REQUIRED Widgets)
2+
3+
add_library(obs-browser-api INTERFACE)
4+
add_library(OBS::browser-api ALIAS obs-browser-api)
5+
6+
target_sources(obs-browser-api PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/lib/obs-browser-api.hpp>
7+
$<INSTALL_INTERFACE:${OBS_INCLUDE_DESTINATION}/obs-browser-api.hpp>)
8+
9+
target_link_libraries(obs-browser-api INTERFACE OBS::libobs Qt::Widgets)
10+
11+
target_include_directories(obs-browser-api INTERFACE "$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>/lib"
12+
"$<INSTALL_INTERFACE:${OBS_INCLUDE_DESTINATION}>")
13+
14+
set_target_properties(obs-browser-api PROPERTIES PREFIX "" PUBLIC_HEADER lib/obs-browser-api.hpp)
15+
16+
target_export(obs-browser-api)

cmake/obs-browser-apiConfig.cmake.in

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
@PACKAGE_INIT@
2+
3+
include(CMakeFindDependencyMacro)
4+
5+
find_dependency(libobs REQUIRED)
6+
find_package(Qt6 REQUIRED Widgets)
7+
8+
include("${CMAKE_CURRENT_LIST_DIR}/@[email protected]")
9+
check_required_components("@PROJECT_NAME@")

0 commit comments

Comments
 (0)