From c4ab69481bd45a3d82e84eff35889d9ab664ed9b Mon Sep 17 00:00:00 2001 From: tt2468 Date: Fri, 17 Dec 2021 14:35:19 -0800 Subject: [PATCH] Base: Move AutoRelease helpers to utils + build fix - Moves the AutoRelease helpers to utils/Obs.h - Fixes build using obsproject/obs-studio/pull/5580 --- src/obs-websocket.cpp | 11 ----------- src/obs-websocket.h | 23 +---------------------- src/utils/Obs.cpp | 13 +++++++++++++ src/utils/Obs.h | 25 +++++++++++++++++++++++++ 4 files changed, 39 insertions(+), 33 deletions(-) diff --git a/src/obs-websocket.cpp b/src/obs-websocket.cpp index 4f48e2b6..81804c4b 100644 --- a/src/obs-websocket.cpp +++ b/src/obs-websocket.cpp @@ -129,17 +129,6 @@ bool IsDebugEnabled() return !_config || _config->DebugEnabled; } -void ___source_dummy_addref(obs_source_t*) {} -void ___weak_source_dummy_addref(obs_weak_source_t*) {} -void ___scene_dummy_addref(obs_scene_t*) {} -void ___sceneitem_dummy_addref(obs_sceneitem_t*) {} -void ___data_dummy_addref(obs_data_t*) {} -void ___data_array_dummy_addref(obs_data_array_t*) {} -void ___output_dummy_addref(obs_output_t*) {} -void ___data_item_dummy_addref(obs_data_item_t*) {} -void ___data_item_release(obs_data_item_t* dataItem){ obs_data_item_release(&dataItem); } -void ___properties_dummy_addref(obs_properties_t*) {} - /** * An event has been emitted from a vendor. * diff --git a/src/obs-websocket.h b/src/obs-websocket.h index 46943c5c..c8c7b58f 100644 --- a/src/obs-websocket.h +++ b/src/obs-websocket.h @@ -29,30 +29,9 @@ with this program. If not, see #pragma pop_macro("strtoll") #endif +#include "utils/Obs.h" #include "plugin-macros.generated.h" -// Autorelease object definitions -void ___source_dummy_addref(obs_source_t*); -void ___weak_source_dummy_addref(obs_weak_source_t*); -void ___scene_dummy_addref(obs_scene_t*); -void ___sceneitem_dummy_addref(obs_sceneitem_t*); -void ___data_dummy_addref(obs_data_t*); -void ___data_array_dummy_addref(obs_data_array_t*); -void ___output_dummy_addref(obs_output_t*); -void ___data_item_dummy_addref(obs_data_item_t*); -void ___data_item_release(obs_data_item_t*); -void ___properties_dummy_addref(obs_properties_t*); - -using OBSSourceAutoRelease = OBSRef; -using OBSWeakSourceAutoRelease = OBSRef; -using OBSSceneAutoRelease = OBSRef; -using OBSSceneItemAutoRelease = OBSRef; -using OBSDataAutoRelease = OBSRef; -using OBSDataArrayAutoRelease = OBSRef; -using OBSOutputAutoRelease = OBSRef; -using OBSDataItemAutoRelease = OBSRef; -using OBSPropertiesAutoDestroy = OBSRef; - class Config; typedef std::shared_ptr ConfigPtr; diff --git a/src/utils/Obs.cpp b/src/utils/Obs.cpp index 3b11ebe9..9ba7f4a1 100644 --- a/src/utils/Obs.cpp +++ b/src/utils/Obs.cpp @@ -50,6 +50,19 @@ std::vector ConvertStringArray(char **array) return ret; } +#if !defined(OBS_HAS_AUTORELEASE) +void ___source_dummy_addref(obs_source_t*) {} +void ___weak_source_dummy_addref(obs_weak_source_t*) {} +void ___scene_dummy_addref(obs_scene_t*) {} +void ___sceneitem_dummy_addref(obs_sceneitem_t*) {} +void ___data_dummy_addref(obs_data_t*) {} +void ___data_array_dummy_addref(obs_data_array_t*) {} +void ___output_dummy_addref(obs_output_t*) {} +void ___data_item_dummy_addref(obs_data_item_t*) {} +void ___data_item_release(obs_data_item_t* dataItem){ obs_data_item_release(&dataItem); } +void ___properties_dummy_addref(obs_properties_t*) {} +#endif + std::string Utils::Obs::StringHelper::GetObsVersion() { uint32_t version = obs_get_version(); diff --git a/src/utils/Obs.h b/src/utils/Obs.h index 6a5aaa59..56b9e203 100644 --- a/src/utils/Obs.h +++ b/src/utils/Obs.h @@ -24,6 +24,31 @@ with this program. If not, see #include "Json.h" +#if !defined(OBSSourceAutoRelease) +#define OBS_HAS_AUTORELEASE +// Autorelease object definitions +void ___source_dummy_addref(obs_source_t*); +void ___weak_source_dummy_addref(obs_weak_source_t*); +void ___scene_dummy_addref(obs_scene_t*); +void ___sceneitem_dummy_addref(obs_sceneitem_t*); +void ___data_dummy_addref(obs_data_t*); +void ___data_array_dummy_addref(obs_data_array_t*); +void ___output_dummy_addref(obs_output_t*); +void ___data_item_dummy_addref(obs_data_item_t*); +void ___data_item_release(obs_data_item_t*); +void ___properties_dummy_addref(obs_properties_t*); + +using OBSSourceAutoRelease = OBSRef; +using OBSWeakSourceAutoRelease = OBSRef; +using OBSSceneAutoRelease = OBSRef; +using OBSSceneItemAutoRelease = OBSRef; +using OBSDataAutoRelease = OBSRef; +using OBSDataArrayAutoRelease = OBSRef; +using OBSOutputAutoRelease = OBSRef; +using OBSDataItemAutoRelease = OBSRef; +using OBSPropertiesAutoDestroy = OBSRef; +#endif + template T* GetCalldataPointer(const calldata_t *data, const char* name) { void *ptr = nullptr; calldata_get_ptr(data, name, &ptr);