mirror of
https://github.com/obsproject/obs-studio.git
synced 2026-09-24 23:31:36 +08:00
libobs: Handle obs_scene_add failure
Previously a NULL item would cause a crash when reading transform info.
The crash can be reproduced by e.g. editing scenes.json so that two
scenes contain each other. Example scenes.json:
{
"current_scene": "Scene",
"sources": [
{
"flags": 0,
"id": "scene",
"mixers": 0,
"name": "Scene",
"settings": {
"items": [
{
"align": 5,
"bounds": {
"x": 1440.0,
"y": 900.0
},
"bounds_align": 0,
"bounds_type": 2,
"name": "Scene 2",
"pos": {
"x": 0.0,
"y": 0.0
},
"rot": 0.0,
"scale": {
"x": 1.0,
"y": 1.0
},
"visible": true
}
]
},
"sync": 0,
"volume": 1.0
},
{
"flags": 0,
"id": "scene",
"mixers": 0,
"name": "Scene 2",
"settings": {
"items": [
{
"align": 5,
"bounds": {
"x": 1.0,
"y": 1.0
},
"bounds_align": 0,
"bounds_type": 0,
"name": "Scene",
"pos": {
"x": 854.0,
"y": -520.0
},
"rot": 0.0,
"scale": {
"x": 1.75,
"y": 1.7562724351882935
},
"visible": true
}
]
},
"sync": 0,
"volume": 1.0
}
]
}
This commit is contained in:
@@ -344,6 +344,14 @@ static void scene_load_item(struct obs_scene *scene, obs_data_t *item_data)
|
||||
}
|
||||
|
||||
item = obs_scene_add(scene, source);
|
||||
if (!item) {
|
||||
blog(LOG_WARNING, "[scene_load_item] Could not add source '%s' "
|
||||
"to scene '%s'!",
|
||||
name, obs_source_get_name(scene->source));
|
||||
|
||||
obs_source_release(source);
|
||||
return;
|
||||
}
|
||||
|
||||
obs_data_set_default_int(item_data, "align",
|
||||
OBS_ALIGN_TOP | OBS_ALIGN_LEFT);
|
||||
|
||||
Reference in New Issue
Block a user