Bladeren bron

added a SceneRemoved handler

jp9000 12 jaren geleden
bovenliggende
commit
65c3207ba3
2 gewijzigde bestanden met toevoegingen van 20 en 1 verwijderingen
  1. 19 1
      obs/window-basic-main.cpp
  2. 1 0
      obs/window-basic-main.hpp

+ 19 - 1
obs/window-basic-main.cpp

@@ -29,6 +29,20 @@ void OBSBasic::SceneAdded(obs_source_t source)
 	scenes->Append(wxString(name, wxConvUTF8), scene);
 }
 
+void OBSBasic::SceneRemoved(obs_source_t source)
+{
+	const char *name = obs_source_getname(source);
+
+	int item = scenes->FindString(name);
+	if (item == wxNOT_FOUND) {
+		blog(LOG_WARNING, "Tried to remove the scene '%s', but "
+		                  "apparently it wasn't found", name);
+		return;
+	}
+
+	scenes->Delete(item);
+}
+
 void OBSBasic::SourceAdded(void *data, calldata_t params)
 {
 	OBSBasic *window = (OBSBasic*)data;
@@ -50,7 +64,11 @@ void OBSBasic::SourceDestroyed(void *data, calldata_t params)
 
 	calldata_getptr(params, "source", (void**)&source);
 
-	/* TODO */
+	obs_source_type type;
+	obs_source_gettype(source, &type, NULL);
+
+	if (type == SOURCE_SCENE)
+		window->SceneRemoved(source);
 }
 
 bool OBSBasic::Init()

+ 1 - 0
obs/window-basic-main.hpp

@@ -26,6 +26,7 @@ using namespace std;
 
 class OBSBasic : public OBSBasicBase {
 	void SceneAdded(obs_source_t scene);
+	void SceneRemoved(obs_source_t scene);
 
 	static void SourceAdded(void *data, calldata_t params);
 	static void SourceDestroyed(void *data, calldata_t params);