Skip to content

Commit cc3c4b7

Browse files
authored
Fix obs29 compilation issues (#31)
* Fix nlohmann issues * fix a link issue * fix macOS helper names * clang format * legacy helper name
1 parent f79f6d6 commit cc3c4b7

11 files changed

+81
-78
lines changed

CMakeLists.txt

Lines changed: 28 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -20,36 +20,38 @@ add_library(OBS::browser ALIAS obs-browser)
2020
option(ENABLE_BROWSER_PANELS "Enable Qt web browser panel support" ON)
2121
mark_as_advanced(ENABLE_BROWSER_PANELS)
2222

23-
target_sources(
24-
obs-browser
25-
PRIVATE obs-browser-plugin.cpp
26-
obs-browser-source.cpp
27-
obs-browser-source.hpp
28-
obs-browser-source-audio.cpp
29-
browser-app.cpp
30-
browser-app.hpp
31-
browser-client.cpp
32-
browser-mac.mm
33-
browser-mac.h
34-
browser-client.hpp
35-
browser-scheme.cpp
36-
browser-scheme.hpp
37-
browser-version.h
38-
cef-headers.hpp
39-
deps/json11/json11.cpp
40-
deps/json11/json11.hpp
41-
deps/base64/base64.cpp
42-
deps/base64/base64.hpp
43-
deps/wide-string.cpp
44-
deps/wide-string.hpp
45-
deps/signal-restore.cpp
46-
deps/signal-restore.hpp
47-
deps/obs-websocket-api/obs-websocket-api.h)
23+
set(obs-browser_SOURCES
24+
obs-browser-plugin.cpp
25+
obs-browser-source.cpp
26+
obs-browser-source.hpp
27+
obs-browser-source-audio.cpp
28+
browser-app.cpp
29+
browser-app.hpp
30+
browser-client.cpp
31+
browser-client.hpp
32+
browser-scheme.cpp
33+
browser-scheme.hpp
34+
browser-version.h
35+
cef-headers.hpp
36+
deps/base64/base64.cpp
37+
deps/base64/base64.hpp
38+
deps/wide-string.cpp
39+
deps/wide-string.hpp
40+
deps/signal-restore.cpp
41+
deps/signal-restore.hpp
42+
deps/obs-websocket-api/obs-websocket-api.h browser-mac.mm browser-mac.h)
4843

44+
if(OS_MACOS)
45+
list(APPEND obs-browser_SOURCES
46+
browser-mac.mm
47+
browser-mac.h)
48+
endif()
49+
50+
target_sources(obs-browser PRIVATE ${obs-browser_SOURCES})
4951
target_include_directories(obs-browser PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/deps")
5052

5153
target_compile_features(obs-browser PRIVATE cxx_std_17)
52-
target_link_libraries(obs-browser PRIVATE OBS::libobs OBS::frontend-api)
54+
target_link_libraries(obs-browser PRIVATE OBS::libobs OBS::frontend-api nlohmann_json::nlohmann_json)
5355

5456
if(OS_WINDOWS)
5557
include(cmake/os-windows.cmake)

browser-app.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@
1818

1919
#include "browser-app.hpp"
2020
#include "browser-version.h"
21-
//#include <json11/json11.hpp>
2221
#include <iostream>
2322
#include <mutex>
2423
#include <nlohmann/json.hpp>

browser-client.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919
#include "browser-client.hpp"
2020
#include "obs-browser-source.hpp"
2121
#include "base64/base64.hpp"
22-
//#include "json11/json11.hpp"
2322
#include <nlohmann/json.hpp>
2423
//#include <obs-frontend-api.h>
2524
#include <obs.hpp>

browser-mac.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ void ExecuteTask(MessageTask task);
4545
void ExecuteSyncTask(MessageTask task);
4646
void DoCefMessageLoop(int ms);
4747
void Process();
48-
#if 0 // REMOVE_DUPLICATE
48+
#if 0 // REMOVE_DUPLICATE
4949
void QueueBrowserTask(CefRefPtr<CefBrowser> browser, BrowserFunc func);
5050
#endif // REMOVE_DUPLICATE
5151
bool isMainThread();

browser-mac.mm

Lines changed: 28 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616
1717
******************************************************************************/
1818

19-
#include <obs-module.h>
2019
#include "browser-mac.h"
2120
#include <mach-o/dyld.h>
2221
#include <sys/types.h>
@@ -46,32 +45,30 @@ bool ExecuteNextBrowserTask()
4645

4746
void ExecuteTask(MessageTask task)
4847
{
49-
dispatch_async(dispatch_get_main_queue(), ^{
50-
blog(LOG_INFO, "ExecuteTask");
51-
task();
52-
});
48+
dispatch_async(dispatch_get_main_queue(), ^{
49+
task();
50+
});
5351
}
5452

5553
void ExecuteSyncTask(MessageTask task)
5654
{
57-
dispatch_sync(dispatch_get_main_queue(), ^{
58-
blog(LOG_INFO, "ExecuteSyncTask");
59-
task();
60-
});
55+
dispatch_sync(dispatch_get_main_queue(), ^{
56+
task();
57+
});
6158
}
6259

6360
void DoCefMessageLoop(int)
6461
{
65-
dispatch_async(dispatch_get_main_queue(), ^{
62+
dispatch_async(dispatch_get_main_queue(), ^{
6663
CefDoMessageLoopWork();
67-
});
64+
});
6865
}
6966

7067
void Process()
7168
{
72-
dispatch_async(dispatch_get_main_queue(), ^{
73-
CefDoMessageLoopWork();
74-
});
69+
dispatch_async(dispatch_get_main_queue(), ^{
70+
CefDoMessageLoopWork();
71+
});
7572
}
7673

7774
#if 0 // REMOVE_DUPLICATE
@@ -88,25 +85,29 @@ void QueueBrowserTask(CefRefPtr<CefBrowser> browser, BrowserFunc func)
8885

8986
bool isMainThread()
9087
{
91-
return [NSThread isMainThread];
88+
return [NSThread isMainThread];
9289
}
9390

9491
std::string getExecutablePath()
9592
{
96-
char path[1024];
97-
uint32_t size = sizeof(path);
98-
_NSGetExecutablePath(path, &size);
99-
return path;
93+
char path[1024];
94+
uint32_t size = sizeof(path);
95+
_NSGetExecutablePath(path, &size);
96+
return path;
10097
}
10198

10299
bool isHighThanBigSur()
103100
{
104-
char buf[100];
105-
size_t buflen = 100;
106-
if (sysctlbyname("machdep.cpu.brand_string", &buf, &buflen, NULL, 0) < 0)
107-
return false;
108-
109-
NSOperatingSystemVersion OSversion = [NSProcessInfo processInfo].operatingSystemVersion;
110-
return ((OSversion.majorVersion >= 10 && OSversion.minorVersion >= 16) ||
111-
OSversion.majorVersion >= 11) && strcmp("Apple M1", buf) != 0;
101+
char buf[100];
102+
size_t buflen = 100;
103+
if (sysctlbyname("machdep.cpu.brand_string", &buf, &buflen, NULL, 0) <
104+
0)
105+
return false;
106+
107+
NSOperatingSystemVersion OSversion =
108+
[NSProcessInfo processInfo].operatingSystemVersion;
109+
return ((OSversion.majorVersion >= 10 &&
110+
OSversion.minorVersion >= 16) ||
111+
OSversion.majorVersion >= 11) &&
112+
strcmp("Apple M1", buf) != 0;
112113
}

cmake/legacy.cmake

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
project(obs-browser)
1+
roject(obs-browser)
22

33
option(ENABLE_BROWSER "Enable building OBS with browser source plugin (required Chromium Embedded Framework)"
44
${OS_LINUX})
55

6-
if(NOT ENABLE_BROWSER)
6+
if(NOT ENABLE_BROWSER OR NOT ENABLE_UI)
77
message(STATUS "OBS: DISABLED obs-browser")
88
message(
99
WARNING
@@ -32,6 +32,8 @@ if(NOT TARGET CEF::Wrapper)
3232
FATAL_ERROR "OBS: - Unable to find CEF Libraries - set CEF_ROOT_DIR or configure with ENABLE_BROWSER=OFF")
3333
endif()
3434

35+
find_package(nlohmann_json REQUIRED)
36+
3537
add_library(obs-browser MODULE)
3638
add_library(OBS::browser ALIAS obs-browser)
3739

@@ -63,8 +65,6 @@ target_sources(
6365
browser-scheme.hpp
6466
browser-version.h
6567
cef-headers.hpp
66-
deps/json11/json11.cpp
67-
deps/json11/json11.hpp
6868
deps/base64/base64.cpp
6969
deps/base64/base64.hpp
7070
deps/wide-string.cpp
@@ -76,7 +76,7 @@ target_sources(
7676

7777
target_include_directories(obs-browser PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/deps ${CMAKE_BINARY_DIR}/config)
7878

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

8181
target_compile_features(obs-browser PRIVATE cxx_std_17)
8282

@@ -96,9 +96,9 @@ if(NOT OS_MACOS OR ENABLE_BROWSER_LEGACY)
9696
add_executable(obs-browser-page)
9797

9898
target_sources(obs-browser-page PRIVATE cef-headers.hpp obs-browser-page/obs-browser-page-main.cpp browser-app.cpp
99-
browser-app.hpp deps/json11/json11.cpp deps/json11/json11.hpp)
99+
browser-app.hpp)
100100

101-
target_link_libraries(obs-browser-page PRIVATE CEF::Library)
101+
target_link_libraries(obs-browser-page PRIVATE CEF::Library nlohmann_json::nlohmann_json)
102102

103103
target_include_directories(obs-browser-page PRIVATE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/deps
104104
${CMAKE_CURRENT_SOURCE_DIR}/obs-browser-page)
@@ -165,8 +165,10 @@ elseif(OS_MACOS)
165165

166166
target_link_libraries(obs-browser PRIVATE ${COREFOUNDATION} ${APPKIT} CEF::Wrapper)
167167

168+
target_sources(obs-browser PRIVATE macutil.mm)
169+
168170
set(CEF_HELPER_TARGET "obs-browser-helper")
169-
set(CEF_HELPER_OUTPUT_NAME "OBS Helper")
171+
set(CEF_HELPER_OUTPUT_NAME "obs64 Helper")
170172
set(CEF_HELPER_APP_SUFFIXES "::" " (GPU):_gpu:.gpu" " (Plugin):_plugin:.plugin" " (Renderer):_renderer:.renderer")
171173

172174
foreach(_SUFFIXES ${CEF_HELPER_APP_SUFFIXES})
@@ -192,9 +194,9 @@ elseif(OS_MACOS)
192194
add_executable(${_HELPER_TARGET} MACOSX_BUNDLE)
193195
add_executable(OBS::browser-helper${_TARGET_SUFFIX} ALIAS ${_HELPER_TARGET})
194196
target_sources(${_HELPER_TARGET} PRIVATE browser-app.cpp browser-app.hpp obs-browser-page/obs-browser-page-main.cpp
195-
cef-headers.hpp deps/json11/json11.cpp deps/json11/json11.hpp)
197+
cef-headers.hpp)
196198

197-
target_link_libraries(${_HELPER_TARGET} PRIVATE CEF::Wrapper)
199+
target_link_libraries(${_HELPER_TARGET} PRIVATE CEF::Wrapper nlohmann_json::nlohmann_json)
198200

199201
target_include_directories(${_HELPER_TARGET} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/deps
200202
${CMAKE_CURRENT_SOURCE_DIR}/obs-browser-page)

cmake/os-linux.cmake

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,3 +22,4 @@ set_target_properties_obs(
2222
INSTALL_RPATH "$ORIGIN/"
2323
PREFIX ""
2424
OUTPUT_NAME obs-browser-page)
25+

cmake/os-macos.cmake

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ endif()
1212
target_link_libraries(obs-browser PRIVATE Qt::Widgets ${COREFOUNDATION} ${APPKIT} CEF::Wrapper)
1313

1414
set(helper_basename browser-helper)
15-
set(helper_output_name "OBS Helper")
15+
set(helper_output_name "obs64 Helper")
1616
set(helper_suffixes "::" " (GPU):_gpu:.gpu" " (Plugin):_plugin:.plugin" " (Renderer):_renderer:.renderer")
1717

1818
foreach(helper IN LISTS helper_suffixes)
@@ -32,7 +32,7 @@ foreach(helper IN LISTS helper_suffixes)
3232
add_executable(OBS::${target_name} ALIAS ${target_name})
3333

3434
target_sources(${target_name} PRIVATE browser-app.cpp browser-app.hpp obs-browser-page/obs-browser-page-main.cpp
35-
cef-headers.hpp deps/json11/json11.cpp deps/json11/json11.hpp)
35+
cef-headers.hpp browser-mac.mm browser-mac.h)
3636
target_compile_definitions(${target_name} PRIVATE ENABLE_BROWSER_SHARED_TEXTURE)
3737
if(CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 14.0.3)
3838
target_compile_options(${target_name} PRIVATE -Wno-error=unqualified-std-cast-call)
@@ -41,7 +41,7 @@ foreach(helper IN LISTS helper_suffixes)
4141
target_include_directories(${target_name} PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/deps"
4242
"${CMAKE_CURRENT_SOURCE_DIR}/obs-browser-page")
4343

44-
target_link_libraries(${target_name} PRIVATE CEF::Wrapper)
44+
target_link_libraries(${target_name} PRIVATE CEF::Wrapper nlohmann_json::nlohmann_json)
4545

4646
set_target_properties(
4747
${target_name}

cmake/os-windows.cmake

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,6 @@ target_sources(
1313
obs-browser-page/obs-browser-page-main.cpp
1414
browser-app.cpp
1515
browser-app.hpp
16-
deps/json11/json11.cpp
17-
deps/json11/json11.hpp
1816
obs-browser-page.manifest)
1917

2018
target_include_directories(obs-browser-helper PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/deps"
@@ -23,7 +21,7 @@ target_include_directories(obs-browser-helper PRIVATE "${CMAKE_CURRENT_SOURCE_DI
2321
target_compile_options(obs-browser-helper PRIVATE $<IF:$<CONFIG:DEBUG>,/MTd,/MT>)
2422
target_compile_definitions(obs-browser-helper PRIVATE ENABLE_BROWSER_SHARED_TEXTURE)
2523

26-
target_link_libraries(obs-browser-helper PRIVATE CEF::Wrapper CEF::Library)
24+
target_link_libraries(obs-browser-helper PRIVATE CEF::Wrapper CEF::Library nlohmann_json::nlohmann_json)
2725
target_link_options(obs-browser-helper PRIVATE /IGNORE:4099 /SUBSYSTEM:WINDOWS)
2826

2927
set(OBS_EXECUTABLE_DESTINATION "${OBS_PLUGIN_DESTINATION}")

obs-browser-plugin.cpp

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -397,8 +397,7 @@ static void BrowserInit(obs_data_t *settings_obs)
397397
std::string binPath = getExecutablePath();
398398
binPath = binPath.substr(0,
399399
binPath.size() - strlen("/bin/obs64"));
400-
binPath +=
401-
"/Frameworks/Chromium Embedded Framework.framework";
400+
binPath += "/Frameworks/Chromium Embedded Framework.framework";
402401
CefString(&settings.framework_dir_path) = binPath;
403402
#endif
404403
std::string obs_locale = obs_get_locale();
@@ -414,7 +413,7 @@ static void BrowserInit(obs_data_t *settings_obs)
414413
BPtr<char> conf_path_abs = os_get_abs_path_ptr(conf_path);
415414
CefString(&settings.locale) = obs_get_locale();
416415
CefString(&settings.accept_language_list) = accepted_languages;
417-
settings.persist_user_preferences = 1;
416+
settings.persist_user_preferences = 1;
418417
CefString(&settings.cache_path) = conf_path_abs;
419418
#if !defined(__APPLE__) || defined(ENABLE_BROWSER_LEGACY)
420419
char *abs_path = os_get_abs_path_ptr(path.c_str());

0 commit comments

Comments
 (0)