Browse Source

Do not visually select audio-only sources

jp9000 11 years ago
parent
commit
07b2fd5972
2 changed files with 17 additions and 0 deletions
  1. 4 0
      obs/window-basic-main.cpp
  2. 13 0
      obs/window-basic-preview.cpp

+ 4 - 0
obs/window-basic-main.cpp

@@ -1360,6 +1360,10 @@ void OBSBasic::on_sources_currentItemChanged(QListWidgetItem *current,
 		return;
 
 	OBSSceneItem item = current->data(Qt::UserRole).value<OBSSceneItem>();
+	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);

+ 13 - 0
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<SceneFindData*>(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);