From 8510731f2bbacbb85d7379d986991f2fcb311644 Mon Sep 17 00:00:00 2001 From: cg2121 Date: Thu, 24 Feb 2022 23:30:05 -0600 Subject: [PATCH] decklink: Don't load modules if Decklink not found This also modifies decklink-captions and decklink-output-ui. --- .../decklink-captions/decklink-captions.cpp | 10 ++++++++-- .../decklink-output-ui/decklink-ui-main.cpp | 14 ++++++++++---- plugins/decklink/plugin-main.cpp | 11 +++++++---- 3 files changed, 25 insertions(+), 10 deletions(-) diff --git a/UI/frontend-plugins/decklink-captions/decklink-captions.cpp b/UI/frontend-plugins/decklink-captions/decklink-captions.cpp index dc15ea35b..53b37a826 100644 --- a/UI/frontend-plugins/decklink-captions/decklink-captions.cpp +++ b/UI/frontend-plugins/decklink-captions/decklink-captions.cpp @@ -153,7 +153,13 @@ void addOutputUI(void) bool obs_module_load(void) { - addOutputUI(); - return true; } + +void obs_module_post_load(void) +{ + if (!obs_get_module("decklink")) + return; + + addOutputUI(); +} diff --git a/UI/frontend-plugins/decklink-output-ui/decklink-ui-main.cpp b/UI/frontend-plugins/decklink-output-ui/decklink-ui-main.cpp index 7be119a34..6e42fbbe9 100644 --- a/UI/frontend-plugins/decklink-output-ui/decklink-ui-main.cpp +++ b/UI/frontend-plugins/decklink-output-ui/decklink-ui-main.cpp @@ -340,10 +340,6 @@ static void OBSEvent(enum obs_frontend_event event, void *) bool obs_module_load(void) { - addOutputUI(); - - obs_frontend_add_event_callback(OBSEvent, nullptr); - return true; } @@ -357,3 +353,13 @@ void obs_module_unload(void) if (main_output_running) output_stop(); } + +void obs_module_post_load(void) +{ + if (!obs_get_module("decklink")) + return; + + addOutputUI(); + + obs_frontend_add_event_callback(OBSEvent, nullptr); +} diff --git a/plugins/decklink/plugin-main.cpp b/plugins/decklink/plugin-main.cpp index ee46edd27..fc87cd256 100644 --- a/plugins/decklink/plugin-main.cpp +++ b/plugins/decklink/plugin-main.cpp @@ -14,7 +14,7 @@ struct obs_source_info decklink_source_info; extern struct obs_output_info create_decklink_output_info(); struct obs_output_info decklink_output_info; -void log_sdk_version() +bool log_sdk_version() { IDeckLinkIterator *deckLinkIterator; IDeckLinkAPIInformation *deckLinkAPIInformation; @@ -24,7 +24,7 @@ void log_sdk_version() if (deckLinkIterator == NULL) { blog(LOG_WARNING, "A DeckLink iterator could not be created. The DeckLink drivers may not be installed"); - return; + return false; } result = deckLinkIterator->QueryInterface( @@ -45,15 +45,18 @@ void log_sdk_version() deckLinkAPIInformation->Release(); } + + return true; } bool obs_module_load(void) { - log_sdk_version(); + if (!log_sdk_version()) + return false; deviceEnum = new DeckLinkDeviceDiscovery(); if (!deviceEnum->Init()) - return true; + return false; decklink_source_info = create_decklink_source_info(); obs_register_source(&decklink_source_info);