From 03bee0aaf2b623d14377e1b03075715e28042ba3 Mon Sep 17 00:00:00 2001 From: Michael Fabian 'Xaymar' Dirks Date: Sat, 21 Mar 2020 09:13:31 +0100 Subject: [PATCH] source-mirror: Fix freeze introduced in OBS Studio v25.x For an unknown reason, OBS Studio v25.x now causes a freeze to happen at this location. This should hopefully work around that issue by ensuring that we are in a location that does not cause an unusual lock order. --- source/sources/source-mirror.cpp | 12 +++++++++--- source/sources/source-mirror.hpp | 1 + 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/source/sources/source-mirror.cpp b/source/sources/source-mirror.cpp index 54c4afd5..dcbdbbc8 100644 --- a/source/sources/source-mirror.cpp +++ b/source/sources/source-mirror.cpp @@ -85,12 +85,12 @@ mirror::mirror_instance::~mirror_instance() uint32_t mirror::mirror_instance::get_width() { - return obs_source_get_width(_source.get()); + return _source_size.first; } uint32_t mirror::mirror_instance::get_height() { - return obs_source_get_height(_source.get()); + return _source_size.second; } static void convert_config(obs_data_t* data) @@ -135,7 +135,13 @@ void mirror::mirror_instance::save(obs_data_t* data) } } -void mirror::mirror_instance::video_tick(float time) {} +void mirror::mirror_instance::video_tick(float time) +{ + if (_source) { + _source_size.first = obs_source_get_width(_source.get()); + _source_size.second = obs_source_get_height(_source.get()); + } +} void mirror::mirror_instance::video_render(gs_effect_t* effect) { diff --git a/source/sources/source-mirror.hpp b/source/sources/source-mirror.hpp index af2c9d34..d16fff2f 100644 --- a/source/sources/source-mirror.hpp +++ b/source/sources/source-mirror.hpp @@ -57,6 +57,7 @@ namespace source::mirror { std::shared_ptr _source_child; std::shared_ptr _signal_rename; std::shared_ptr _signal_audio; + std::pair _source_size; // Audio bool _audio_enabled;