<div dir="auto"><div><br><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">вт, 24 янв. 2023 г., 02:44 Stefan de Konink <<a href="mailto:stefan@konink.de" rel="noreferrer noreferrer" target="_blank">stefan@konink.de</a>>:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi Andrew,<br>
<br>
When changing this, to be more in line with the "HV" code...<br>
<br>
diff --git a/cinelerra-5.1/cinelerra/playbackengine.C <br>
b/cinelerra-5.1/cinelerra/playbackengine.C<br>
index 815e506f..3c2a9368 100644<br>
--- a/cinelerra-5.1/cinelerra/playbackengine.C<br>
+++ b/cinelerra-5.1/cinelerra/playbackengine.C<br>
@@ -172,9 +172,9 @@ void PlaybackEngine::create_cache()<br>
 {<br>
        cache_lock->lock("PlaybackEngine::create_cache");<br>
        if( audio_cache )<br>
-               audio_cache->remove_user();<br>
+               delete audio_cache;<br>
        if( video_cache )<br>
-               video_cache->remove_user();<br>
+               delete video_cache;<br>
        audio_cache = new CICache(preferences);<br>
        video_cache = new CICache(preferences);<br>
        cache_lock->unlock();<br>
<br>
<br>
...will result in a fix for the memory leak, but does cause a warning <br>
message.<br>
<br>
Garbage::~Garbage: title=CICache users=1 was not deleted by <br>
Garbage::remove_user<br>
<br>
<br>
This was changed with f5725c7e (7/4/20). But also shows that many unrelated <br>
changes cause real issues to hide. I found this by hand, not even using git <br>
bisect. I understand the urge for the garbage collector, but for some <br>
reason not behaving. What I notice is that the 'last' object is empty when <br>
it is actually destroyed by the garbage collector (~CICache). What is the <br>
best way going forward?</blockquote></div></div><div dir="auto"><br></div><div dir="auto"><br></div><div dir="auto">sorry, I am not programmer enough for answering this ..</div><div dir="auto"><br></div><div dir="auto">but you tried to leave both lines there?</div><div dir="auto"><br></div><div dir="auto">also, I did</div><div dir="auto"><br></div><div dir="auto">grep remove_user cinelerra/*<br></div><div dir="auto"><br></div><div dir="auto">and among results</div><div dir="auto"><br></div><div dir="auto"><div dir="auto">cinelerra/mwindow.C:    if( audio_cache ) { audio_cache->remove_user();  audio_cache = 0; }</div><div dir="auto">cinelerra/mwindow.C:    if( video_cache ) { video_cache->remove_user();  video_cache = 0; }</div><div dir="auto"><br></div><div dir="auto">[..]</div><div dir="auto"><br></div><div dir="auto"><div dir="auto">cinelerra/fileref.C:    if( acache ) { acache->remove_user();  acache = 0; }</div><div dir="auto">cinelerra/fileref.C:    if( vcache ) { vcache->remove_user();  vcache = 0; }</div><div dir="auto"><br></div><div dir="auto"><br></div><div dir="auto">so may be nulling it after remove_user actually intended?</div></div></div><div dir="auto"><br></div><div dir="auto"><br></div><div dir="auto"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"> <br></blockquote></div></div></div>