fix undo segv with plugin guis open, add cache demand limits, exit when malloc fails...
[goodguy/cinelerra.git] / cinelerra-5.1 / cinelerra / framecache.C
index 4f1a8eb03569f92e0322967ab462c0f39a1f62a2..b8eed886c4435d3810a66af33d226c9d21994ac5 100644 (file)
@@ -181,7 +181,12 @@ void FrameCache::put_cache_frame(VFrame *frame, int64_t position,
        int color_model = frame->get_color_model();
        int ret = frame_exists(position, layer, frame_rate,
                        w, h, color_model, &item, -1);
-       if( use_copy ) frame = new VFrame(*frame);
+       if( use_copy ) {
+// do not use shm here, puts too much pressure on 32bit systems
+               VFrame *vframe = new VFrame(w, h, color_model, 0);
+               vframe->copy_from(frame);
+               frame = vframe;
+       }
        if( ret ) {
                delete item->data;
                item->data = frame;