вт, 24 янв. 2023 г., 13:35 Stefan de Konink <[email protected]>:
On Tuesday, January 24, 2023 4:26:24 AM CET, Phyllis Smith wrote:
Andrew, I found where the problem was introduced. Dec. 6, 2022 GIT is good. 3c7c8a08800c3e100388996f0e2c2eea9761ebe1 Dec.27, 2022 GIT is bad. 175a7314e8e927128787feeb7ba5f42530f0a319
Please be aware that there is a commit in between also touching the cache on the same place (which in this case does not leak for me, but does cause a very high cpu usage).
yeah, it was two-part patch I botched, it seems.
938dfbb92e41044bee37394ba72af83c61d7cd87
When removing the 2 EDL-lines, this resolves the problem for me as well.
diff --git a/cinelerra-5.1/cinelerra/cache.C b/cinelerra-5.1/cinelerra/cache.C index 9186f1f0..0525e38d 100644 --- a/cinelerra-5.1/cinelerra/cache.C +++ b/cinelerra-5.1/cinelerra/cache.C @@ -123,8 +123,8 @@ File* CICache::check_out(Asset *asset, EDL *edl, int block) }
//printf("users: %i \n", users ); - EDL *parent = edl->parent_edl; - if(parent) + // EDL *parent = edl->parent_edl; + // if(parent) remove_user(); total_lock->unlock(); //printf("check out %p %lx %s\n", current, tid, asset->path);
And I actually wonder if it was intended as if(!parent) - for me this also does not make sense - but I first need to understand what Andrew was trying to solve. You mentioned EDL undo...
not just edl undo, but specifically undo-just-right-after loading nested edl - probably peculiarity of my system, because it does not show on Phyllis systems :| I think just reverting most of it, leaving only commented printf for further investigating on my end is right course of action. Sorry!
diff --git a/cinelerra-5.1/cinelerra/cache.C b/cinelerra-5.1/cinelerra/cache.C index 9186f1f0..35d4cd06 100644 --- a/cinelerra-5.1/cinelerra/cache.C +++ b/cinelerra-5.1/cinelerra/cache.C @@ -124,8 +124,9 @@ File* CICache::check_out(Asset *asset, EDL *edl, int block)
//printf("users: %i \n", users ); EDL *parent = edl->parent_edl; - if(parent) - remove_user(); + if(!parent) { + remove_user(); + } total_lock->unlock(); //printf("check out %p %lx %s\n", current, tid, asset->path); return current ? current->file : 0;
-- Stefan