diff options
author | Bastien Montagne <montagne29@wanadoo.fr> | 2014-09-28 20:29:10 +0400 |
---|---|---|
committer | Bastien Montagne <montagne29@wanadoo.fr> | 2014-09-28 20:29:10 +0400 |
commit | 653b67055b2dec321ef68114d5cace05113f9102 (patch) | |
tree | a059655e56a8f78aa81a291cbc1b826b4831fef5 /source/blender/editors | |
parent | 2b69665c147f226e820c3c7bba7cebe35ee1dc1b (diff) |
Fix T41984: Can't use Render Image as Background Image.
Changes were actually pretty simple to make it work - set 'scene' member of image user,
and handle lock when acquiring/releasing ibuf...
Diffstat (limited to 'source/blender/editors')
-rw-r--r-- | source/blender/editors/space_view3d/view3d_draw.c | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/source/blender/editors/space_view3d/view3d_draw.c b/source/blender/editors/space_view3d/view3d_draw.c index c7ee32a1bb0..994f2df8587 100644 --- a/source/blender/editors/space_view3d/view3d_draw.c +++ b/source/blender/editors/space_view3d/view3d_draw.c @@ -1585,6 +1585,7 @@ static void view3d_draw_bgpic(Scene *scene, ARegion *ar, View3D *v3d, int fg_flag = do_foreground ? V3D_BGPIC_FOREGROUND : 0; for (bgpic = v3d->bgpicbase.first; bgpic; bgpic = bgpic->next) { + bgpic->iuser.scene = scene; /* Needed for render results. */ if ((bgpic->flag & V3D_BGPIC_FOREGROUND) != fg_flag) continue; @@ -1598,9 +1599,10 @@ static void view3d_draw_bgpic(Scene *scene, ARegion *ar, View3D *v3d, float x1, y1, x2, y2; ImBuf *ibuf = NULL, *freeibuf, *releaseibuf; + void *lock; - Image *ima; - MovieClip *clip; + Image *ima = NULL; + MovieClip *clip = NULL; /* disable individual images */ if ((bgpic->flag & V3D_BGPIC_DISABLED)) @@ -1617,7 +1619,7 @@ static void view3d_draw_bgpic(Scene *scene, ARegion *ar, View3D *v3d, ibuf = NULL; /* frame is out of range, dont show */ } else { - ibuf = BKE_image_acquire_ibuf(ima, &bgpic->iuser, NULL); + ibuf = BKE_image_acquire_ibuf(ima, &bgpic->iuser, &lock); releaseibuf = ibuf; } @@ -1625,8 +1627,6 @@ static void view3d_draw_bgpic(Scene *scene, ARegion *ar, View3D *v3d, image_aspect[1] = ima->aspy; } else if (bgpic->source == V3D_BGPIC_MOVIE) { - clip = NULL; - /* TODO: skip drawing when out of frame range (as image sequences do above) */ if (bgpic->flag & V3D_BGPIC_CAMERACLIP) { @@ -1664,7 +1664,7 @@ static void view3d_draw_bgpic(Scene *scene, ARegion *ar, View3D *v3d, if (freeibuf) IMB_freeImBuf(freeibuf); if (releaseibuf) - BKE_image_release_ibuf(ima, releaseibuf, NULL); + BKE_image_release_ibuf(ima, releaseibuf, lock); continue; } @@ -1763,7 +1763,7 @@ static void view3d_draw_bgpic(Scene *scene, ARegion *ar, View3D *v3d, if (freeibuf) IMB_freeImBuf(freeibuf); if (releaseibuf) - BKE_image_release_ibuf(ima, releaseibuf, NULL); + BKE_image_release_ibuf(ima, releaseibuf, lock); continue; } @@ -1830,7 +1830,7 @@ static void view3d_draw_bgpic(Scene *scene, ARegion *ar, View3D *v3d, if (freeibuf) IMB_freeImBuf(freeibuf); if (releaseibuf) - BKE_image_release_ibuf(ima, releaseibuf, NULL); + BKE_image_release_ibuf(ima, releaseibuf, lock); } } } |