Port fix from gooseberry that doesn't load the full res file if a proxy
[blender.git] / source / blender / blenkernel / intern / sequencer.c
index 450363692693960418d88ba104adf9cb9b707de4..dd46fdcfbeddf0af1f783a03918fa58d4b1fd66a 100644 (file)
@@ -1330,7 +1330,7 @@ static double seq_rendersize_to_scale_factor(int size)
        return 0.25;
 }
 
-static void seq_open_anim_file(Sequence *seq)
+static void seq_open_anim_file(Sequence *seq, bool openfile)
 {
        char name[FILE_MAX];
        StripProxy *proxy;
@@ -1343,8 +1343,14 @@ static void seq_open_anim_file(Sequence *seq)
                         seq->strip->dir, seq->strip->stripdata->name);
        BLI_path_abs(name, G.main->name);
        
-       seq->anim = openanim(name, IB_rect | ((seq->flag & SEQ_FILTERY) ? IB_animdeinterlace : 0),
-                            seq->streamindex, seq->strip->colorspace_settings.name);
+       if (openfile) {
+               seq->anim = openanim(name, IB_rect | ((seq->flag & SEQ_FILTERY) ? IB_animdeinterlace : 0),
+                                    seq->streamindex, seq->strip->colorspace_settings.name);
+       }
+       else {
+               seq->anim = openanim_noload(name, IB_rect | ((seq->flag & SEQ_FILTERY) ? IB_animdeinterlace : 0),
+                                           seq->streamindex, seq->strip->colorspace_settings.name);
+       }
 
        if (seq->anim == NULL) {
                return;
@@ -1458,7 +1464,7 @@ static ImBuf *seq_proxy_fetch(const SeqRenderData *context, Sequence *seq, int c
                        return NULL;
                }
  
-               seq_open_anim_file(seq);
+               seq_open_anim_file(seq, true);
 
                frameno = IMB_anim_index_get_frame_index(seq->anim, seq->strip->proxy->tc, frameno);
 
@@ -1560,7 +1566,7 @@ SeqIndexBuildContext *BKE_sequencer_proxy_rebuild_context(Main *bmain, Scene *sc
        context->seq = nseq;
 
        if (nseq->type == SEQ_TYPE_MOVIE) {
-               seq_open_anim_file(nseq);
+               seq_open_anim_file(nseq, true);
 
                if (nseq->anim) {
                        context->index_context = IMB_anim_index_rebuild_context(nseq->anim,
@@ -2780,7 +2786,7 @@ static ImBuf *do_render_strip_uncached(const SeqRenderData *context, Sequence *s
 
                case SEQ_TYPE_MOVIE:
                {
-                       seq_open_anim_file(seq);
+                       seq_open_anim_file(seq, false);
 
                        if (seq->anim) {
                                IMB_Proxy_Size proxy_size = seq_rendersize_to_proxysize(context->preview_render_size);