Skip to content

Commit 0674786

Browse files
kevmo314Lain-B
authored andcommitted
Add support for more events
This change adds support for obsSceneListChanged, obsTransitionChanged, obsTransitionListChanged events. The event arguments match the signatures of the corresponding getters. Closes #363
1 parent e397df5 commit 0674786

File tree

2 files changed

+46
-0
lines changed

2 files changed

+46
-0
lines changed

README.md

+3
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,9 @@ window.addEventListener('obsSceneChanged', function(event) {
5555
Descriptions for these events can be [found here](https://obsproject.com/docs/reference-frontend-api.html?highlight=paused#c.obs_frontend_event).
5656

5757
* obsSceneChanged
58+
* obsSceneListChanged
59+
* obsTransitionChanged
60+
* obsTransitionListChanged
5861
* obsSourceVisibleChanged
5962
* obsSourceActiveChanged
6063
* obsStreamingStarting

obs-browser-plugin.cpp

+43
Original file line numberDiff line numberDiff line change
@@ -617,6 +617,49 @@ static void handle_obs_frontend_event(enum obs_frontend_event event, void *)
617617
DispatchJSEvent("obsSceneChanged", json.dump());
618618
break;
619619
}
620+
case OBS_FRONTEND_EVENT_SCENE_LIST_CHANGED: {
621+
struct obs_frontend_source_list list = {};
622+
obs_frontend_get_scenes(&list);
623+
std::vector<const char *> scenes_vector;
624+
for (size_t i = 0; i < list.sources.num; i++) {
625+
obs_source_t *source = list.sources.array[i];
626+
scenes_vector.push_back(obs_source_get_name(source));
627+
}
628+
nlohmann::json json = scenes_vector;
629+
obs_frontend_source_list_free(&list);
630+
631+
DispatchJSEvent("obsSceneListChanged", json.dump());
632+
break;
633+
}
634+
case OBS_FRONTEND_EVENT_TRANSITION_CHANGED: {
635+
OBSSourceAutoRelease source =
636+
obs_frontend_get_current_transition();
637+
638+
if (!source)
639+
break;
640+
641+
const char *name = obs_source_get_name(source);
642+
if (!name)
643+
break;
644+
645+
DispatchJSEvent("obsTransitionChanged", name);
646+
break;
647+
}
648+
case OBS_FRONTEND_EVENT_TRANSITION_LIST_CHANGED: {
649+
struct obs_frontend_source_list list = {};
650+
obs_frontend_get_transitions(&list);
651+
std::vector<const char *> transitions_vector;
652+
for (size_t i = 0; i < list.sources.num; i++) {
653+
obs_source_t *source = list.sources.array[i];
654+
transitions_vector.push_back(
655+
obs_source_get_name(source));
656+
}
657+
nlohmann::json json = transitions_vector;
658+
obs_frontend_source_list_free(&list);
659+
660+
DispatchJSEvent("obsTransitionListChanged", json.dump());
661+
break;
662+
}
620663
case OBS_FRONTEND_EVENT_EXIT:
621664
DispatchJSEvent("obsExit", "");
622665
break;

0 commit comments

Comments
 (0)