X-Git-Url: http://git.cinelerra-gg.org/git/?a=blobdiff_plain;f=cinelerra-5.1%2Fguicast%2Fbctrace.C;h=b15cfea17fba633b6f087dfdabefc537318a2c39;hb=9d832a1fff11b11aaa1108c460690ed05e2bdc05;hp=ee1c6fa0b782184f5aa5f6737fea966306f09796;hpb=5a1b2bb96f2bd6b7ef4f8031763683726c02219d;p=goodguy%2Fhistory.git diff --git a/cinelerra-5.1/guicast/bctrace.C b/cinelerra-5.1/guicast/bctrace.C index ee1c6fa0..b15cfea1 100644 --- a/cinelerra-5.1/guicast/bctrace.C +++ b/cinelerra-5.1/guicast/bctrace.C @@ -19,7 +19,7 @@ BC_Trace::~BC_Trace() bc_trace_mutex execution_table; bc_trace_mutex memory_table; bc_trace_mutex lock_table; -bc_trace_list lock_free; +bc_trace_list lock_free; bc_trace_mutex file_table; // incase lock set after task ends @@ -28,7 +28,7 @@ static const char *last_lock_title = 0; static const char *last_lock_location = 0; trace_item::trace_item(bc_trace_t &t) : table(t) { ++table.size; } -trace_item::~trace_item() { --table.size; } +trace_item::~trace_item() { --table.size; } extern "C" void dump() { @@ -114,12 +114,12 @@ int BC_Trace::set_lock(const char *title, const char *loc, trace_info *info) last_lock_title = title; last_lock_location = loc; lock_item *it; - if( lock_table.size >= TOTAL_LOCKS ) { + if( (it=(lock_item*)lock_free.first) != 0 ) + lock_free.remove_pointer(it); + else if( lock_table.size >= TOTAL_LOCKS ) { it = (lock_item*)lock_table.first; lock_table.remove_pointer(it); } - else if( (it=(lock_item*)lock_free.first) != 0 ) - lock_free.remove_pointer(it); else it = new lock_item(); it->set(info, title, loc); @@ -185,7 +185,7 @@ void BC_Trace::unset_all_locks(trace_info *info) while( p ) { lock_item *lp = p; p = (lock_item*)p->next; if( lp->info != info ) continue; - lock_table.remove_pointer(p); lock_free.append(p); + lock_table.remove_pointer(lp); lock_free.append(lp); } lock_table.unlock(); } @@ -198,7 +198,7 @@ void BC_Trace::clear_locks_tid(pthread_t tid) while( p ) { lock_item *lp = p; p = (lock_item*)p->next; if( lp->tid != tid ) continue; - lock_table.remove_pointer(p); lock_free.append(p); + lock_table.remove_pointer(lp); lock_free.append(lp); } lock_table.unlock(); }