UI: Reset VCam when clearing scene data

This commit is contained in:
derrod 2023-05-13 17:19:00 +02:00 • committed by Jim
commit 14a6673e2f
3 changed files with 18 additions and 3 deletions

View file

@ -348,6 +348,7 @@ void BasicOutputHandler::UpdateVirtualCamOutputSource()
switch (main->vcamConfig.type) {
case VCamOutputType::InternalOutput:
DestroyVirtualCameraScene();
switch (main->vcamConfig.internal) {
case VCamInternalType::Default:
source = obs_get_output_source(0);
@ -360,10 +361,11 @@ void BasicOutputHandler::UpdateVirtualCamOutputSource()
}
break;
case VCamOutputType::SceneOutput:
DestroyVirtualCameraScene();
source = obs_get_source_by_name(main->vcamConfig.scene.c_str());
break;
case VCamOutputType::SourceOutput:
OBSSource s =
OBSSourceAutoRelease s =
obs_get_source_by_name(main->vcamConfig.source.c_str());
if (!vCamSourceScene)
@ -380,7 +382,6 @@ void BasicOutputHandler::UpdateVirtualCamOutputSource()
if (!vCamSourceSceneItem) {
vCamSourceSceneItem = obs_scene_add(vCamSourceScene, s);
obs_source_release(s);
obs_sceneitem_set_bounds_type(vCamSourceSceneItem,
OBS_BOUNDS_SCALE_INNER);
@ -410,6 +411,11 @@ void BasicOutputHandler::DestroyVirtualCamView()
obs_view_destroy(virtualCamView);
virtualCamView = nullptr;
DestroyVirtualCameraScene();
}
void BasicOutputHandler::DestroyVirtualCameraScene()
{
if (!vCamSourceScene)
return;