merged hv7 mod
[goodguy/history.git] / cinelerra-5.1 / guicast / bctrace.C
index ee1c6fa0b782184f5aa5f6737fea966306f09796..b15cfea17fba633b6f087dfdabefc537318a2c39 100644 (file)
@@ -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();
 }