Bug: `SceneListChanged` event gets triggered twice on deleting a Scene
Operating System Info
Ubuntu 22.04 LTS
Other OS
No response
OBS Studio Version
28.0.0
OBS Studio Version (Other)
No response
obs-websocket Version
5.0.1
OBS Studio Log URL
nothing special to see.
13:11:45.300: User switched to scene 'Szene'
13:11:45.301: User Removed scene 'Szene 2'
OBS Studio Crash Log URL
No response
Expected Behavior
If i delete a Scene i got the SceneListChanged event only once
Current Behavior
Got the SceneListChanged event twice on Scene delete
Steps to Reproduce
- Delete a scene
- Check
SceneListChangedevent
Anything else we should know?
Adding a scene only triggers the event once
I'm using obs-websocket-js
i added now the flags --verbose --unfiltered_log --websocket_debug. this is the log from adding and removing a scene. hope that helps
debug: source 'Szene 2' (scene) created
info: User added scene 'Szene 2'
info: [obs-websocket] [WebSocketServer::BroadcastEvent] Outgoing event:
{
"d": {
"eventData": {
"scenes": [
{
"sceneIndex": 0,
"sceneName": "Szene 2"
},
{
"sceneIndex": 1,
"sceneName": "Szene"
}
]
},
"eventIntent": 4,
"eventType": "SceneListChanged"
},
"op": 5
}
info: [obs-websocket] [WebSocketServer::BroadcastEvent] Outgoing event:
{
"d": {
"eventData": {
"isGroup": false,
"sceneName": "Szene 2"
},
"eventIntent": 4,
"eventType": "SceneCreated"
},
"op": 5
}
info: [obs-websocket] [WebSocketServer::BroadcastEvent] Outgoing event:
{
"d": {
"eventData": {
"transitionName": "Überblende"
},
"eventIntent": 16,
"eventType": "SceneTransitionStarted"
},
"op": 5
}
info: User switched to scene 'Szene 2'
info: [obs-websocket] [WebSocketServer::BroadcastEvent] Outgoing event:
{
"d": {
"eventData": {
"transitionName": "Überblende"
},
"eventIntent": 16,
"eventType": "SceneTransitionVideoEnded"
},
"op": 5
}
info: [obs-websocket] [WebSocketServer::BroadcastEvent] Outgoing event:
{
"d": {
"eventData": {
"sceneName": "Szene 2"
},
"eventIntent": 4,
"eventType": "CurrentProgramSceneChanged"
},
"op": 5
}
info: [obs-websocket] [WebSocketServer::BroadcastEvent] Outgoing event:
{
"d": {
"eventData": {
"transitionName": "Überblende"
},
"eventIntent": 16,
"eventType": "SceneTransitionEnded"
},
"op": 5
}
info: User switched to scene 'Szene'
info: [obs-websocket] [WebSocketServer::BroadcastEvent] Outgoing event:
{
"d": {
"eventData": {
"transitionName": "Überblende"
},
"eventIntent": 16,
"eventType": "SceneTransitionStarted"
},
"op": 5
}
info: User Removed scene 'Szene 2'
info: [obs-websocket] [WebSocketServer::BroadcastEvent] Outgoing event:
{
"d": {
"eventData": {
"scenes": [
{
"sceneIndex": 0,
"sceneName": "Szene"
}
]
},
"eventIntent": 4,
"eventType": "SceneListChanged"
},
"op": 5
}
info: [obs-websocket] [WebSocketServer::BroadcastEvent] Outgoing event:
{
"d": {
"eventData": {
"isGroup": false,
"sceneName": "Szene 2"
},
"eventIntent": 4,
"eventType": "SceneRemoved"
},
"op": 5
}
info: [obs-websocket] [WebSocketServer::BroadcastEvent] Outgoing event:
{
"d": {
"eventData": {
"scenes": [
{
"sceneIndex": 0,
"sceneName": "Szene"
}
]
},
"eventIntent": 4,
"eventType": "SceneListChanged"
},
"op": 5
}
info: [obs-websocket] [WebSocketServer::BroadcastEvent] Outgoing event:
{
"d": {
"eventData": {
"transitionName": "Überblende"
},
"eventIntent": 16,
"eventType": "SceneTransitionVideoEnded"
},
"op": 5
}
info: [obs-websocket] [WebSocketServer::BroadcastEvent] Outgoing event:
{
"d": {
"eventData": {
"sceneName": "Szene"
},
"eventIntent": 4,
"eventType": "CurrentProgramSceneChanged"
},
"op": 5
}
info: [obs-websocket] [WebSocketServer::BroadcastEvent] Outgoing event:
{
"d": {
"eventData": {
"transitionName": "Überblende"
},
"eventIntent": 16,
"eventType": "SceneTransitionEnded"
},
"op": 5
}
debug: source 'Szene 2' destroyed
I am using OBS v30.0.0
This issue is still not resolved. SceneListChanged event occurs twice successively when i delete a Scene in OBS.
It can cause some trouble if you have a listener on this event. It fires twice very closely and it is very difficult to prevent the issue. The only workaround for me consists to put a flag (isProcessing) in my event handler.