Skip to content

Commit f18f465

Browse files
committed
eventhandler: Implement input, scene, and transition UUID support
Adds `inputUuid` next to `inputName` etc.
1 parent f40426e commit f18f465

File tree

5 files changed

+69
-3
lines changed

5 files changed

+69
-3
lines changed

src/eventhandler/EventHandler_Inputs.cpp

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ with this program. If not, see <https://www.gnu.org/licenses/>
2323
* An input has been created.
2424
*
2525
* @dataField inputName | String | Name of the input
26+
* @dataField inputUuid | String | UUID of the input
2627
* @dataField inputKind | String | The kind of the input
2728
* @dataField unversionedInputKind | String | The unversioned kind of input (aka no `_v2` stuff)
2829
* @dataField inputSettings | Object | The settings configured to the input when it was created
@@ -44,6 +45,7 @@ void EventHandler::HandleInputCreated(obs_source_t *source)
4445

4546
json eventData;
4647
eventData["inputName"] = obs_source_get_name(source);
48+
eventData["inputUuid"] = obs_source_get_uuid(source);
4749
eventData["inputKind"] = inputKind;
4850
eventData["unversionedInputKind"] = obs_source_get_unversioned_id(source);
4951
eventData["inputSettings"] = Utils::Json::ObsDataToJson(inputSettings);
@@ -55,6 +57,7 @@ void EventHandler::HandleInputCreated(obs_source_t *source)
5557
* An input has been removed.
5658
*
5759
* @dataField inputName | String | Name of the input
60+
* @dataField inputUuid | String | UUID of the input
5861
*
5962
* @eventType InputRemoved
6063
* @eventSubscription Inputs
@@ -68,12 +71,14 @@ void EventHandler::HandleInputRemoved(obs_source_t *source)
6871
{
6972
json eventData;
7073
eventData["inputName"] = obs_source_get_name(source);
74+
eventData["inputUuid"] = obs_source_get_uuid(source);
7175
BroadcastEvent(EventSubscription::Inputs, "InputRemoved", eventData);
7276
}
7377

7478
/**
7579
* The name of an input has changed.
7680
*
81+
* @dataField inputUuid | String | UUID of the input
7782
* @dataField oldInputName | String | Old name of the input
7883
* @dataField inputName | String | New name of the input
7984
*
@@ -85,9 +90,10 @@ void EventHandler::HandleInputRemoved(obs_source_t *source)
8590
* @api events
8691
* @category inputs
8792
*/
88-
void EventHandler::HandleInputNameChanged(obs_source_t *, std::string oldInputName, std::string inputName)
93+
void EventHandler::HandleInputNameChanged(obs_source_t *source, std::string oldInputName, std::string inputName)
8994
{
9095
json eventData;
96+
eventData["inputUuid"] = obs_source_get_uuid(source);
9197
eventData["oldInputName"] = oldInputName;
9298
eventData["inputName"] = inputName;
9399
BroadcastEvent(EventSubscription::Inputs, "InputNameChanged", eventData);
@@ -99,6 +105,7 @@ void EventHandler::HandleInputNameChanged(obs_source_t *, std::string oldInputNa
99105
* Note: On some inputs, changing values in the properties dialog will cause an immediate update. Pressing the "Cancel" button will revert the settings, resulting in another event being fired.
100106
*
101107
* @dataField inputName | String | Name of the input
108+
* @dataField inputUuid | String | UUID of the input
102109
* @dataField inputSettings | Object | New settings object of the input
103110
*
104111
* @eventType InputSettingsChanged
@@ -115,6 +122,7 @@ void EventHandler::HandleInputSettingsChanged(obs_source_t *source)
115122

116123
json eventData;
117124
eventData["inputName"] = obs_source_get_name(source);
125+
eventData["inputUuid"] = obs_source_get_uuid(source);
118126
eventData["inputSettings"] = Utils::Json::ObsDataToJson(inputSettings);
119127
BroadcastEvent(EventSubscription::Inputs, "InputSettingsChanged", eventData);
120128
}
@@ -125,6 +133,7 @@ void EventHandler::HandleInputSettingsChanged(obs_source_t *source)
125133
* When an input is active, it means it's being shown by the program feed.
126134
*
127135
* @dataField inputName | String | Name of the input
136+
* @dataField inputUuid | String | UUID of the input
128137
* @dataField videoActive | Boolean | Whether the input is active
129138
*
130139
* @eventType InputActiveStateChanged
@@ -151,6 +160,7 @@ void EventHandler::HandleInputActiveStateChanged(void *param, calldata_t *data)
151160

152161
json eventData;
153162
eventData["inputName"] = obs_source_get_name(source);
163+
eventData["inputUuid"] = obs_source_get_uuid(source);
154164
eventData["videoActive"] = obs_source_active(source);
155165
eventHandler->BroadcastEvent(EventSubscription::InputActiveStateChanged, "InputActiveStateChanged", eventData);
156166
}
@@ -161,6 +171,7 @@ void EventHandler::HandleInputActiveStateChanged(void *param, calldata_t *data)
161171
* When an input is showing, it means it's being shown by the preview or a dialog.
162172
*
163173
* @dataField inputName | String | Name of the input
174+
* @dataField inputUuid | String | UUID of the input
164175
* @dataField videoShowing | Boolean | Whether the input is showing
165176
*
166177
* @eventType InputShowStateChanged
@@ -187,6 +198,7 @@ void EventHandler::HandleInputShowStateChanged(void *param, calldata_t *data)
187198

188199
json eventData;
189200
eventData["inputName"] = obs_source_get_name(source);
201+
eventData["inputUuid"] = obs_source_get_uuid(source);
190202
eventData["videoShowing"] = obs_source_showing(source);
191203
eventHandler->BroadcastEvent(EventSubscription::InputShowStateChanged, "InputShowStateChanged", eventData);
192204
}
@@ -195,6 +207,7 @@ void EventHandler::HandleInputShowStateChanged(void *param, calldata_t *data)
195207
* An input's mute state has changed.
196208
*
197209
* @dataField inputName | String | Name of the input
210+
* @dataField inputUuid | String | UUID of the input
198211
* @dataField inputMuted | Boolean | Whether the input is muted
199212
*
200213
* @eventType InputMuteStateChanged
@@ -218,6 +231,7 @@ void EventHandler::HandleInputMuteStateChanged(void *param, calldata_t *data)
218231

219232
json eventData;
220233
eventData["inputName"] = obs_source_get_name(source);
234+
eventData["inputUuid"] = obs_source_get_uuid(source);
221235
eventData["inputMuted"] = obs_source_muted(source);
222236
eventHandler->BroadcastEvent(EventSubscription::Inputs, "InputMuteStateChanged", eventData);
223237
}
@@ -226,6 +240,7 @@ void EventHandler::HandleInputMuteStateChanged(void *param, calldata_t *data)
226240
* An input's volume level has changed.
227241
*
228242
* @dataField inputName | String | Name of the input
243+
* @dataField inputUuid | String | UUID of the input
229244
* @dataField inputVolumeMul | Number | New volume level multiplier
230245
* @dataField inputVolumeDb | Number | New volume level in dB
231246
*
@@ -257,6 +272,7 @@ void EventHandler::HandleInputVolumeChanged(void *param, calldata_t *data)
257272

258273
json eventData;
259274
eventData["inputName"] = obs_source_get_name(source);
275+
eventData["inputUuid"] = obs_source_get_uuid(source);
260276
eventData["inputVolumeMul"] = inputVolumeMul;
261277
eventData["inputVolumeDb"] = inputVolumeDb;
262278
eventHandler->BroadcastEvent(EventSubscription::Inputs, "InputVolumeChanged", eventData);
@@ -265,7 +281,8 @@ void EventHandler::HandleInputVolumeChanged(void *param, calldata_t *data)
265281
/**
266282
* The audio balance value of an input has changed.
267283
*
268-
* @dataField inputName | String | Name of the affected input
284+
* @dataField inputName | String | Name of the input
285+
* @dataField inputUuid | String | UUID of the input
269286
* @dataField inputAudioBalance | Number | New audio balance value of the input
270287
*
271288
* @eventType InputAudioBalanceChanged
@@ -291,6 +308,7 @@ void EventHandler::HandleInputAudioBalanceChanged(void *param, calldata_t *data)
291308

292309
json eventData;
293310
eventData["inputName"] = obs_source_get_name(source);
311+
eventData["inputUuid"] = obs_source_get_uuid(source);
294312
eventData["inputAudioBalance"] = inputAudioBalance;
295313
eventHandler->BroadcastEvent(EventSubscription::Inputs, "InputAudioBalanceChanged", eventData);
296314
}
@@ -299,6 +317,7 @@ void EventHandler::HandleInputAudioBalanceChanged(void *param, calldata_t *data)
299317
* The sync offset of an input has changed.
300318
*
301319
* @dataField inputName | String | Name of the input
320+
* @dataField inputUuid | String | UUID of the input
302321
* @dataField inputAudioSyncOffset | Number | New sync offset in milliseconds
303322
*
304323
* @eventType InputAudioSyncOffsetChanged
@@ -324,6 +343,7 @@ void EventHandler::HandleInputAudioSyncOffsetChanged(void *param, calldata_t *da
324343

325344
json eventData;
326345
eventData["inputName"] = obs_source_get_name(source);
346+
eventData["inputUuid"] = obs_source_get_uuid(source);
327347
eventData["inputAudioSyncOffset"] = inputAudioSyncOffset / 1000000;
328348
eventHandler->BroadcastEvent(EventSubscription::Inputs, "InputAudioSyncOffsetChanged", eventData);
329349
}
@@ -332,6 +352,7 @@ void EventHandler::HandleInputAudioSyncOffsetChanged(void *param, calldata_t *da
332352
* The audio tracks of an input have changed.
333353
*
334354
* @dataField inputName | String | Name of the input
355+
* @dataField inputUuid | String | UUID of the input
335356
* @dataField inputAudioTracks | Object | Object of audio tracks along with their associated enable states
336357
*
337358
* @eventType InputAudioTracksChanged
@@ -362,6 +383,7 @@ void EventHandler::HandleInputAudioTracksChanged(void *param, calldata_t *data)
362383

363384
json eventData;
364385
eventData["inputName"] = obs_source_get_name(source);
386+
eventData["inputUuid"] = obs_source_get_uuid(source);
365387
eventData["inputAudioTracks"] = inputAudioTracks;
366388
eventHandler->BroadcastEvent(EventSubscription::Inputs, "InputAudioTracksChanged", eventData);
367389
}
@@ -376,6 +398,7 @@ void EventHandler::HandleInputAudioTracksChanged(void *param, calldata_t *data)
376398
* - `OBS_MONITORING_TYPE_MONITOR_AND_OUTPUT`
377399
*
378400
* @dataField inputName | String | Name of the input
401+
* @dataField inputUuid | String | UUID of the input
379402
* @dataField monitorType | String | New monitor type of the input
380403
*
381404
* @eventType InputAudioMonitorTypeChanged
@@ -401,6 +424,7 @@ void EventHandler::HandleInputAudioMonitorTypeChanged(void *param, calldata_t *d
401424

402425
json eventData;
403426
eventData["inputName"] = obs_source_get_name(source);
427+
eventData["inputUuid"] = obs_source_get_uuid(source);
404428
eventData["monitorType"] = monitorType;
405429
eventHandler->BroadcastEvent(EventSubscription::Inputs, "InputAudioMonitorTypeChanged", eventData);
406430
}

src/eventhandler/EventHandler_MediaInputs.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,7 @@ void EventHandler::SourceMediaPreviousMultiHandler(void *param, calldata_t *data
124124
* A media input has started playing.
125125
*
126126
* @dataField inputName | String | Name of the input
127+
* @dataField inputUuid | String | UUID of the input
127128
*
128129
* @eventType MediaInputPlaybackStarted
129130
* @eventSubscription MediaInputs
@@ -146,13 +147,15 @@ void EventHandler::HandleMediaInputPlaybackStarted(void *param, calldata_t *data
146147

147148
json eventData;
148149
eventData["inputName"] = obs_source_get_name(source);
150+
eventData["inputUuid"] = obs_source_get_uuid(source);
149151
eventHandler->BroadcastEvent(EventSubscription::MediaInputs, "MediaInputPlaybackStarted", eventData);
150152
}
151153

152154
/**
153155
* A media input has finished playing.
154156
*
155157
* @dataField inputName | String | Name of the input
158+
* @dataField inputUuid | String | UUID of the input
156159
*
157160
* @eventType MediaInputPlaybackEnded
158161
* @eventSubscription MediaInputs
@@ -175,13 +178,15 @@ void EventHandler::HandleMediaInputPlaybackEnded(void *param, calldata_t *data)
175178

176179
json eventData;
177180
eventData["inputName"] = obs_source_get_name(source);
181+
eventData["inputUuid"] = obs_source_get_uuid(source);
178182
eventHandler->BroadcastEvent(EventSubscription::MediaInputs, "MediaInputPlaybackEnded", eventData);
179183
}
180184

181185
/**
182186
* An action has been performed on an input.
183187
*
184188
* @dataField inputName | String | Name of the input
189+
* @dataField inputUuid | String | UUID of the input
185190
* @dataField mediaAction | String | Action performed on the input. See `ObsMediaInputAction` enum
186191
*
187192
* @eventType MediaInputActionTriggered
@@ -196,6 +201,7 @@ void EventHandler::HandleMediaInputActionTriggered(obs_source_t *source, ObsMedi
196201
{
197202
json eventData;
198203
eventData["inputName"] = obs_source_get_name(source);
204+
eventData["inputUuid"] = obs_source_get_uuid(source);
199205
eventData["mediaAction"] = GetMediaInputActionString(action);
200206
BroadcastEvent(EventSubscription::MediaInputs, "MediaInputActionTriggered", eventData);
201207
}

src/eventhandler/EventHandler_SceneItems.cpp

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,9 @@ with this program. If not, see <https://www.gnu.org/licenses/>
2323
* A scene item has been created.
2424
*
2525
* @dataField sceneName | String | Name of the scene the item was added to
26+
* @dataField sceneUuid | String | UUID of the scene the item was added to
2627
* @dataField sourceName | String | Name of the underlying source (input/scene)
28+
* @dataField sourceUuid | String | UUID of the underlying source (input/scene)
2729
* @dataField sceneItemId | Number | Numeric ID of the scene item
2830
* @dataField sceneItemIndex | Number | Index position of the item
2931
*
@@ -49,7 +51,9 @@ void EventHandler::HandleSceneItemCreated(void *param, calldata_t *data)
4951

5052
json eventData;
5153
eventData["sceneName"] = obs_source_get_name(obs_scene_get_source(scene));
54+
eventData["sceneUuid"] = obs_source_get_uuid(obs_scene_get_source(scene));
5255
eventData["sourceName"] = obs_source_get_name(obs_sceneitem_get_source(sceneItem));
56+
eventData["sourceUuid"] = obs_source_get_uuid(obs_sceneitem_get_source(sceneItem));
5357
eventData["sceneItemId"] = obs_sceneitem_get_id(sceneItem);
5458
eventData["sceneItemIndex"] = obs_sceneitem_get_order_position(sceneItem);
5559
eventHandler->BroadcastEvent(EventSubscription::SceneItems, "SceneItemCreated", eventData);
@@ -61,7 +65,9 @@ void EventHandler::HandleSceneItemCreated(void *param, calldata_t *data)
6165
* This event is not emitted when the scene the item is in is removed.
6266
*
6367
* @dataField sceneName | String | Name of the scene the item was removed from
68+
* @dataField sceneUuid | String | UUID of the scene the item was removed from
6469
* @dataField sourceName | String | Name of the underlying source (input/scene)
70+
* @dataField sourceUuid | String | UUID of the underlying source (input/scene)
6571
* @dataField sceneItemId | Number | Numeric ID of the scene item
6672
*
6773
* @eventType SceneItemRemoved
@@ -86,7 +92,9 @@ void EventHandler::HandleSceneItemRemoved(void *param, calldata_t *data)
8692

8793
json eventData;
8894
eventData["sceneName"] = obs_source_get_name(obs_scene_get_source(scene));
95+
eventData["sceneUuid"] = obs_source_get_uuid(obs_scene_get_source(scene));
8996
eventData["sourceName"] = obs_source_get_name(obs_sceneitem_get_source(sceneItem));
97+
eventData["sourceUuid"] = obs_source_get_uuid(obs_sceneitem_get_source(sceneItem));
9098
eventData["sceneItemId"] = obs_sceneitem_get_id(sceneItem);
9199
eventHandler->BroadcastEvent(EventSubscription::SceneItems, "SceneItemRemoved", eventData);
92100
}
@@ -95,6 +103,7 @@ void EventHandler::HandleSceneItemRemoved(void *param, calldata_t *data)
95103
* A scene's item list has been reindexed.
96104
*
97105
* @dataField sceneName | String | Name of the scene
106+
* @dataField sceneUuid | String | UUID of the scene
98107
* @dataField sceneItems | Array<Object> | Array of scene item objects
99108
*
100109
* @eventType SceneItemListReindexed
@@ -115,6 +124,7 @@ void EventHandler::HandleSceneItemListReindexed(void *param, calldata_t *data)
115124

116125
json eventData;
117126
eventData["sceneName"] = obs_source_get_name(obs_scene_get_source(scene));
127+
eventData["sceneUuid"] = obs_source_get_uuid(obs_scene_get_source(scene));
118128
eventData["sceneItems"] = Utils::Obs::ArrayHelper::GetSceneItemList(scene, true);
119129
eventHandler->BroadcastEvent(EventSubscription::SceneItems, "SceneItemListReindexed", eventData);
120130
}
@@ -123,6 +133,7 @@ void EventHandler::HandleSceneItemListReindexed(void *param, calldata_t *data)
123133
* A scene item's enable state has changed.
124134
*
125135
* @dataField sceneName | String | Name of the scene the item is in
136+
* @dataField sceneUuid | String | UUID of the scene the item is in
126137
* @dataField sceneItemId | Number | Numeric ID of the scene item
127138
* @dataField sceneItemEnabled | Boolean | Whether the scene item is enabled (visible)
128139
*
@@ -150,6 +161,7 @@ void EventHandler::HandleSceneItemEnableStateChanged(void *param, calldata_t *da
150161

151162
json eventData;
152163
eventData["sceneName"] = obs_source_get_name(obs_scene_get_source(scene));
164+
eventData["sceneUuid"] = obs_source_get_uuid(obs_scene_get_source(scene));
153165
eventData["sceneItemId"] = obs_sceneitem_get_id(sceneItem);
154166
eventData["sceneItemEnabled"] = sceneItemEnabled;
155167
eventHandler->BroadcastEvent(EventSubscription::SceneItems, "SceneItemEnableStateChanged", eventData);
@@ -159,6 +171,7 @@ void EventHandler::HandleSceneItemEnableStateChanged(void *param, calldata_t *da
159171
* A scene item's lock state has changed.
160172
*
161173
* @dataField sceneName | String | Name of the scene the item is in
174+
* @dataField sceneUuid | String | UUID of the scene the item is in
162175
* @dataField sceneItemId | Number | Numeric ID of the scene item
163176
* @dataField sceneItemLocked | Boolean | Whether the scene item is locked
164177
*
@@ -186,6 +199,7 @@ void EventHandler::HandleSceneItemLockStateChanged(void *param, calldata_t *data
186199

187200
json eventData;
188201
eventData["sceneName"] = obs_source_get_name(obs_scene_get_source(scene));
202+
eventData["sceneUuid"] = obs_source_get_uuid(obs_scene_get_source(scene));
189203
eventData["sceneItemId"] = obs_sceneitem_get_id(sceneItem);
190204
eventData["sceneItemLocked"] = sceneItemLocked;
191205
eventHandler->BroadcastEvent(EventSubscription::SceneItems, "SceneItemLockStateChanged", eventData);
@@ -195,6 +209,7 @@ void EventHandler::HandleSceneItemLockStateChanged(void *param, calldata_t *data
195209
* A scene item has been selected in the Ui.
196210
*
197211
* @dataField sceneName | String | Name of the scene the item is in
212+
* @dataField sceneUuid | String | UUID of the scene the item is in
198213
* @dataField sceneItemId | Number | Numeric ID of the scene item
199214
*
200215
* @eventType SceneItemSelected
@@ -219,6 +234,7 @@ void EventHandler::HandleSceneItemSelected(void *param, calldata_t *data)
219234

220235
json eventData;
221236
eventData["sceneName"] = obs_source_get_name(obs_scene_get_source(scene));
237+
eventData["sceneUuid"] = obs_source_get_uuid(obs_scene_get_source(scene));
222238
eventData["sceneItemId"] = obs_sceneitem_get_id(sceneItem);
223239
eventHandler->BroadcastEvent(EventSubscription::SceneItems, "SceneItemSelected", eventData);
224240
}
@@ -227,6 +243,7 @@ void EventHandler::HandleSceneItemSelected(void *param, calldata_t *data)
227243
* The transform/crop of a scene item has changed.
228244
*
229245
* @dataField sceneName | String | The name of the scene the item is in
246+
* @dataField sceneUuid | String | The UUID of the scene the item is in
230247
* @dataField sceneItemId | Number | Numeric ID of the scene item
231248
* @dataField sceneItemTransform | Object | New transform/crop info of the scene item
232249
*
@@ -255,6 +272,7 @@ void EventHandler::HandleSceneItemTransformChanged(void *param, calldata_t *data
255272

256273
json eventData;
257274
eventData["sceneName"] = obs_source_get_name(obs_scene_get_source(scene));
275+
eventData["sceneUuid"] = obs_source_get_uuid(obs_scene_get_source(scene));
258276
eventData["sceneItemId"] = obs_sceneitem_get_id(sceneItem);
259277
eventData["sceneItemTransform"] = Utils::Obs::ObjectHelper::GetSceneItemTransform(sceneItem);
260278
eventHandler->BroadcastEvent(EventSubscription::SceneItemTransformChanged, "SceneItemTransformChanged", eventData);

0 commit comments

Comments
 (0)