oh, hopefully correct fix this time

I was hitting strange bug when undoing just loaded nested edl was causing
segfault.

After MUCH mucking around I think I discovered we were calling wrong
function via pointer, I tested loading/undoing nested edl, normal edl,
reference edl and group-loading 25+ pngs on separate tracks or as 25 pieces
on same track. And undoing a lot!

But please test as hard as possible - threading is not my strong suit,
actually it is not my suit at all!



---------- Forwarded message ---------
От: Андрей Рандрианасулу <[email protected]>
Date: вс, 13 нояб. 2022 г., 15:20
Subject: beter fix for nested edl load/uno
To: randrianasulu <[email protected]>




--
Андрей  Рандрианасулу
From f8ffcc027f3c54dbb755b7fb0dc53ec21c7fd600 Mon Sep 17 00:00:00 2001
From: Andrew Randrianasulu <[email protected]>
Date: Sun, 13 Nov 2022 17:49:11 +0300
Subject: [PATCH] EXPERIMENTAL better fix for nested edl load/undo?

---
 cinelerra-5.1/cinelerra/cache.C | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/cinelerra-5.1/cinelerra/cache.C b/cinelerra-5.1/cinelerra/cache.C
index a93f1e1b..7c640d9e 100644
--- a/cinelerra-5.1/cinelerra/cache.C
+++ b/cinelerra-5.1/cinelerra/cache.C
@@ -117,11 +117,14 @@ File* CICache::check_out(Asset *asset, EDL *edl, int block)
 
 // cache deleted during checkout, destroy this
 	if( users == 1 ) {
-		remove_user();
+		current->Garbage::remove_user();
+		total_lock->unlock();
 		return 0;
 	}
 
-	remove_user();
+	//printf("users: %i \n", users );
+	
+	current->Garbage::remove_user();
 	total_lock->unlock();
 //printf("check out %p %lx %s\n", current, tid, asset->path);
 	return current ? current->file : 0;
-- 
2.30.4

-- 
Cin mailing list
[email protected]
https://lists.cinelerra-gg.org/mailman/listinfo/cin

Reply via email to