Use mutex instead of variable for RC check

This commit is contained in:
jp9000 2014-01-30 12:29:13 -07:00
parent 103ef75310
commit f2e1ce533c

View file

@ -331,19 +331,30 @@ int obs_sceneitem_release(obs_sceneitem_t item)
void obs_sceneitem_remove(obs_sceneitem_t item)
{
obs_scene_t scene;
bool was_removed;
if (item->removed)
if (!item)
return;
item->removed = true;
signal_item_remove(item);
scene = item->parent;
pthread_mutex_lock(&scene->mutex);
if (scene)
pthread_mutex_lock(&scene->mutex);
was_removed = item->removed;
item->removed = true;
if (was_removed) {
if (scene)
pthread_mutex_unlock(&scene->mutex);
return;
}
signal_item_remove(item);
detach_sceneitem(item);
pthread_mutex_unlock(&scene->mutex);
if (scene)
pthread_mutex_unlock(&scene->mutex);
obs_sceneitem_release(item);
}