fix refresh_frame color_model test
[goodguy/history.git] / cinelerra-5.1 / guicast / bctrace.C
index 9a0061fe331b7f9de68677163adb58b325d62848..b15cfea17fba633b6f087dfdabefc537318a2c39 100644 (file)
@@ -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();
 }