X-Git-Url: https://git.cinelerra-gg.org/git/?p=goodguy%2Fcinelerra.git;a=blobdiff_plain;f=cinelerra-5.1%2Fguicast%2Fcondition.C;h=89cbe692e6fade3cfb4a282e3170cf40838225cd;hp=e57110cab9bb76a15299c195bceef055dca32d3e;hb=0c7b0aebb5e9f85f4eb7abb69b800d8d37b30b0f;hpb=f4204ea29aa3760a91c10791944ab848dd74ef8c;ds=sidebyside diff --git a/cinelerra-5.1/guicast/condition.C b/cinelerra-5.1/guicast/condition.C index e57110ca..89cbe692 100644 --- a/cinelerra-5.1/guicast/condition.C +++ b/cinelerra-5.1/guicast/condition.C @@ -52,6 +52,7 @@ void Condition::reset() pthread_mutex_init(&mutex, 0); pthread_cond_init(&cond, NULL); UNSET_ALL_LOCKS(this); + unset_owner(); value = init_value; trace = 0; } @@ -66,6 +67,8 @@ void Condition::lock(const char *location) value = 0; else value--; + if( !value ) + set_owner(); pthread_mutex_unlock(&mutex); } @@ -78,6 +81,7 @@ void Condition::unlock() value = 1; else value++; + unset_owner(); pthread_cond_signal(&cond); pthread_mutex_unlock(&mutex); } @@ -130,6 +134,8 @@ int Condition::timed_lock(int microseconds, const char *location) else --value; } + if( !value ) + set_owner(); pthread_mutex_unlock(&mutex); return result; }