diff --git a/obs/window-basic-main.cpp b/obs/window-basic-main.cpp index 6975394b3..7727c1a9e 100644 --- a/obs/window-basic-main.cpp +++ b/obs/window-basic-main.cpp @@ -1360,6 +1360,10 @@ void OBSBasic::on_sources_currentItemChanged(QListWidgetItem *current, return; OBSSceneItem item = current->data(Qt::UserRole).value(); + obs_source_t source = obs_sceneitem_getsource(item); + if ((obs_source_get_output_flags(source) & OBS_SOURCE_VIDEO) == 0) + return; + obs_scene_enum_items(GetCurrentScene(), select_one, &item); UNUSED_PARAMETER(prev); diff --git a/obs/window-basic-preview.cpp b/obs/window-basic-preview.cpp index 93ca6622e..501812a3e 100644 --- a/obs/window-basic-preview.cpp +++ b/obs/window-basic-preview.cpp @@ -47,6 +47,13 @@ struct SceneFindData { {} }; +static bool SceneItemHasVideo(obs_sceneitem_t item) +{ + obs_source_t source = obs_sceneitem_getsource(item); + uint32_t flags = obs_source_get_output_flags(source); + return (flags & OBS_SOURCE_VIDEO) != 0; +} + static bool FindItemAtPos(obs_scene_t scene, obs_sceneitem_t item, void *param) { SceneFindData *data = reinterpret_cast(param); @@ -54,6 +61,9 @@ static bool FindItemAtPos(obs_scene_t scene, obs_sceneitem_t item, void *param) vec3 transformedPos; vec3 pos3; + if (!SceneItemHasVideo(item)) + return true; + vec3_set(&pos3, data->pos.x, data->pos.y, 0.0f); obs_sceneitem_get_box_transform(item, &transform); @@ -155,6 +165,9 @@ static bool CheckItemSelected(obs_scene_t scene, obs_sceneitem_t item, vec3 transformedPos; vec3 pos3; + if (!SceneItemHasVideo(item)) + return true; + vec3_set(&pos3, data->pos.x, data->pos.y, 0.0f); obs_sceneitem_get_box_transform(item, &transform);