Skip to content

Commit 9680ac2

Browse files
committed
Add procedure handler based API
1 parent 1e68bac commit 9680ac2

10 files changed

+992
-6
lines changed

CMakeLists.txt

+5-1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@ legacy_check()
44

55
option(ENABLE_BROWSER "Enable browser source plugin (required Chromium Embedded Framework)" OFF)
66

7+
include(cmake/obs-browser-api.cmake)
8+
79
if(NOT ENABLE_BROWSER)
810
target_disable(obs-browser)
911
target_disable_feature(obs-browser "Browser sources are not enabled by default (set CEF_ROOT_DIR and ENABLE_BROWSER)")
@@ -38,6 +40,8 @@ target_sources(
3840
deps/signal-restore.hpp
3941
deps/wide-string.cpp
4042
deps/wide-string.hpp
43+
obs-browser-api-impl.cpp
44+
obs-browser-api-impl.hpp
4145
obs-browser-plugin.cpp
4246
obs-browser-source-audio.cpp
4347
obs-browser-source.cpp
@@ -46,7 +50,7 @@ target_sources(
4650
target_include_directories(obs-browser PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/deps")
4751

4852
target_compile_features(obs-browser PRIVATE cxx_std_17)
49-
target_link_libraries(obs-browser PRIVATE OBS::libobs OBS::frontend-api nlohmann_json::nlohmann_json)
53+
target_link_libraries(obs-browser PRIVATE OBS::libobs OBS::frontend-api OBS::browser-api nlohmann_json::nlohmann_json)
5054

5155
if(OS_WINDOWS)
5256
include(cmake/os-windows.cmake)

cmake/feature-panels.cmake

+2-2
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/legacy.cmake

+22-3
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,23 @@ project(obs-browser)
33
option(ENABLE_BROWSER "Enable building OBS with browser source plugin (required Chromium Embedded Framework)"
44
${OS_LINUX})
55

6+
find_package(Qt6 REQUIRED Widgets)
7+
8+
add_library(obs-browser-api INTERFACE)
9+
add_library(OBS::browser-api ALIAS obs-browser-api)
10+
11+
target_sources(obs-browser-api PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/lib/obs-browser-api.hpp>
12+
$<INSTALL_INTERFACE:${OBS_INCLUDE_DESTINATION}/obs-browser-api.hpp>)
13+
14+
target_link_libraries(obs-browser-api INTERFACE OBS::libobs Qt::Widgets)
15+
16+
target_include_directories(obs-browser-api INTERFACE $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/lib>
17+
$<INSTALL_INTERFACE:${OBS_INCLUDE_DESTINATION}>)
18+
19+
set_target_properties(obs-browser-api PROPERTIES FOLDER "plugins/obs-browser/lib" PUBLIC_HEADER lib/obs-browser-api.hpp)
20+
21+
export_target(obs-browser-api)
22+
623
if(NOT ENABLE_BROWSER OR NOT ENABLE_UI)
724
message(STATUS "OBS: DISABLED obs-browser")
825
message(
@@ -54,6 +71,8 @@ configure_file(${CMAKE_CURRENT_SOURCE_DIR}/browser-config.h.in ${CMAKE_BINARY_DI
5471
target_sources(
5572
obs-browser
5673
PRIVATE obs-browser-plugin.cpp
74+
obs-browser-api-impl.cpp
75+
obs-browser-api-impl.hpp
5776
obs-browser-source.cpp
5877
obs-browser-source.hpp
5978
obs-browser-source-audio.cpp
@@ -76,13 +95,11 @@ target_sources(
7695

7796
target_include_directories(obs-browser PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/deps ${CMAKE_BINARY_DIR}/config)
7897

79-
target_link_libraries(obs-browser PRIVATE OBS::libobs OBS::frontend-api nlohmann_json::nlohmann_json)
98+
target_link_libraries(obs-browser PRIVATE OBS::libobs OBS::frontend-api OBS::browser-api nlohmann_json::nlohmann_json)
8099

81100
target_compile_features(obs-browser PRIVATE cxx_std_17)
82101

83102
if(ENABLE_BROWSER_PANELS OR ENABLE_BROWSER_QT_LOOP)
84-
find_qt(COMPONENTS Widgets)
85-
86103
set_target_properties(
87104
obs-browser
88105
PROPERTIES AUTOMOC ON
@@ -251,6 +268,8 @@ if(ENABLE_BROWSER_PANELS)
251268

252269
target_compile_definitions(obs-browser-panels INTERFACE BROWSER_AVAILABLE)
253270

271+
target_sources(obs-browser PRIVATE obs-browser-api-impl-panel.cpp obs-browser-api-impl.cpp)
272+
254273
if(ENABLE_BROWSER_QT_LOOP)
255274
target_compile_definitions(obs-browser-panels INTERFACE ENABLE_BROWSER_QT_LOOP)
256275
endif()

cmake/obs-browser-api.cmake

+20
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
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(
15+
obs-browser-api
16+
PROPERTIES FOLDER plugins/obs-browser
17+
PREFIX ""
18+
PUBLIC_HEADER lib/obs-browser-api.hpp)
19+
20+
target_export(obs-browser-api)

cmake/obs-browser-apiConfig.cmake.in

+9
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)