mirror of
https://github.com/Palakis/obs-websocket.git
synced 2024-08-30 18:12:16 +00:00
Merge pull request #199 from Palakis/4.3-jimtree-studiomode-fix
[not ready] events: fix triggering of PreviewSceneChanged
This commit is contained in:
commit
454a68d1b7
@ -80,10 +80,6 @@ WSEvents::WSEvents(WSServer* srv) {
|
|||||||
this, SLOT(Heartbeat()));
|
this, SLOT(Heartbeat()));
|
||||||
statusTimer->start(2000); // equal to frontend's constant BITRATE_UPDATE_SECONDS
|
statusTimer->start(2000); // equal to frontend's constant BITRATE_UPDATE_SECONDS
|
||||||
|
|
||||||
QListWidget* sceneList = Utils::GetSceneListControl();
|
|
||||||
connect(sceneList, SIGNAL(currentItemChanged(QListWidgetItem*, QListWidgetItem*)),
|
|
||||||
this, SLOT(SelectedSceneChanged(QListWidgetItem*, QListWidgetItem*)));
|
|
||||||
|
|
||||||
currentScene = nullptr;
|
currentScene = nullptr;
|
||||||
|
|
||||||
QTimer::singleShot(1000, this, SLOT(deferredInitOperations()));
|
QTimer::singleShot(1000, this, SLOT(deferredInitOperations()));
|
||||||
@ -186,6 +182,9 @@ void WSEvents::FrontendEventHandler(enum obs_frontend_event event, void* private
|
|||||||
else if (event == OBS_FRONTEND_EVENT_STUDIO_MODE_DISABLED) {
|
else if (event == OBS_FRONTEND_EVENT_STUDIO_MODE_DISABLED) {
|
||||||
owner->OnStudioModeSwitched(false);
|
owner->OnStudioModeSwitched(false);
|
||||||
}
|
}
|
||||||
|
else if (event == OBS_FRONTEND_EVENT_PREVIEW_SCENE_CHANGED) {
|
||||||
|
owner->OnPreviewSceneChanged();
|
||||||
|
}
|
||||||
else if (event == OBS_FRONTEND_EVENT_EXIT) {
|
else if (event == OBS_FRONTEND_EVENT_EXIT) {
|
||||||
owner->connectSceneSignals(nullptr);
|
owner->connectSceneSignals(nullptr);
|
||||||
owner->OnExit();
|
owner->OnExit();
|
||||||
@ -310,13 +309,6 @@ void WSEvents::OnSceneChange() {
|
|||||||
obs_data_set_array(data, "sources", sceneItems);
|
obs_data_set_array(data, "sources", sceneItems);
|
||||||
|
|
||||||
broadcastUpdate("SwitchScenes", data);
|
broadcastUpdate("SwitchScenes", data);
|
||||||
|
|
||||||
// Dirty fix : OBS blocks signals when swapping scenes in Studio Mode
|
|
||||||
// after transition end, so SelectedSceneChanged is never called...
|
|
||||||
if (obs_frontend_preview_program_mode_active()) {
|
|
||||||
QListWidget* list = Utils::GetSceneListControl();
|
|
||||||
SelectedSceneChanged(list->currentItem(), nullptr);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -922,17 +914,16 @@ void WSEvents::OnSceneItemVisibilityChanged(void* param, calldata_t* data) {
|
|||||||
* @category studio mode
|
* @category studio mode
|
||||||
* @since 4.1.0
|
* @since 4.1.0
|
||||||
*/
|
*/
|
||||||
void WSEvents::SelectedSceneChanged(QListWidgetItem* current, QListWidgetItem* prev) {
|
void WSEvents::OnPreviewSceneChanged() {
|
||||||
if (obs_frontend_preview_program_mode_active()) {
|
if (obs_frontend_preview_program_mode_active()) {
|
||||||
OBSScene scene = Utils::SceneListItemToScene(current);
|
OBSSourceAutoRelease scene = obs_frontend_get_current_preview_scene();
|
||||||
if (!scene)
|
if (!scene)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
OBSSource sceneSource = obs_scene_get_source(scene);
|
OBSDataArrayAutoRelease sceneItems = Utils::GetSceneItems(scene);
|
||||||
OBSDataArrayAutoRelease sceneItems = Utils::GetSceneItems(sceneSource);
|
|
||||||
|
|
||||||
OBSDataAutoRelease data = obs_data_create();
|
OBSDataAutoRelease data = obs_data_create();
|
||||||
obs_data_set_string(data, "scene-name", obs_source_get_name(sceneSource));
|
obs_data_set_string(data, "scene-name", obs_source_get_name(scene));
|
||||||
obs_data_set_array(data, "sources", sceneItems);
|
obs_data_set_array(data, "sources", sceneItems);
|
||||||
|
|
||||||
broadcastUpdate("PreviewSceneChanged", data);
|
broadcastUpdate("PreviewSceneChanged", data);
|
||||||
|
@ -49,8 +49,6 @@ class WSEvents : public QObject {
|
|||||||
void StreamStatus();
|
void StreamStatus();
|
||||||
void Heartbeat();
|
void Heartbeat();
|
||||||
void TransitionDurationChanged(int ms);
|
void TransitionDurationChanged(int ms);
|
||||||
void SelectedSceneChanged(
|
|
||||||
QListWidgetItem* current, QListWidgetItem* prev);
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
WSServer* _srv;
|
WSServer* _srv;
|
||||||
@ -97,6 +95,7 @@ class WSEvents : public QObject {
|
|||||||
void OnReplayStopped();
|
void OnReplayStopped();
|
||||||
|
|
||||||
void OnStudioModeSwitched(bool enabled);
|
void OnStudioModeSwitched(bool enabled);
|
||||||
|
void OnPreviewSceneChanged();
|
||||||
|
|
||||||
void OnExit();
|
void OnExit();
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user