obs-websocket icon indicating copy to clipboard operation
obs-websocket copied to clipboard

Bug: `SceneListChanged` event gets triggered twice on deleting a Scene

Open ximex opened this issue 3 years ago • 2 comments

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

  1. Delete a scene
  2. Check SceneListChanged event

Anything else we should know?

Adding a scene only triggers the event once

I'm using obs-websocket-js

ximex avatar Aug 13 '22 11:08 ximex

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

ximex avatar Aug 28 '22 09:08 ximex

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.

AlbertSY avatar Dec 07 '23 12:12 AlbertSY