diff options
Diffstat (limited to 'source/blender/imbuf/intern/anim_movie.c')
-rw-r--r-- | source/blender/imbuf/intern/anim_movie.c | 24 |
1 files changed, 13 insertions, 11 deletions
diff --git a/source/blender/imbuf/intern/anim_movie.c b/source/blender/imbuf/intern/anim_movie.c index b8f6e66adfe..ffdecb793aa 100644 --- a/source/blender/imbuf/intern/anim_movie.c +++ b/source/blender/imbuf/intern/anim_movie.c @@ -1314,25 +1314,27 @@ struct ImBuf *IMB_anim_absolute(struct anim *anim, int position, filter_y = (anim->ib_flags & IB_animdeinterlace); - if (anim->curtype == 0) { - ibuf = anim_getnew(anim); - if (ibuf == NULL) { - return(NULL); + if (preview_size == IMB_PROXY_NONE) { + if (anim->curtype == 0) { + ibuf = anim_getnew(anim); + if (ibuf == NULL) { + return(NULL); + } + + IMB_freeImBuf(ibuf); /* ???? */ + ibuf = NULL; } - IMB_freeImBuf(ibuf); /* ???? */ - ibuf = NULL; + if (position < 0) return(NULL); + if (position >= anim->duration) return(NULL); } - - if (position < 0) return(NULL); - if (position >= anim->duration) return(NULL); - - if (preview_size != IMB_PROXY_NONE) { + else { struct anim *proxy = IMB_anim_open_proxy(anim, preview_size); if (proxy) { position = IMB_anim_index_get_frame_index( anim, tc, position); + return IMB_anim_absolute( proxy, position, IMB_TC_NONE, IMB_PROXY_NONE); |