static inline void remove_without_release(struct obs_scene_item *item) { item->removed = true; set_visibility(item, false); signal_item_remove(item); detach_sceneitem(item); }
void obs_sceneitem_remove(obs_sceneitem_t item) { obs_scene_t scene; if (!item) return; scene = item->parent; if (scene) pthread_mutex_lock(&scene->mutex); if (item->removed) { if (scene) pthread_mutex_unlock(&scene->mutex); return; } item->removed = true; signal_item_remove(item); detach_sceneitem(item); if (scene) pthread_mutex_unlock(&scene->mutex); obs_sceneitem_release(item); }