From 74b47e4181d70284e125ff4c0012d9c1cc36487d Mon Sep 17 00:00:00 2001 From: Dalai Felinto Date: Fri, 22 Mar 2019 15:08:22 -0300 Subject: Fix: VSE preview not showing stereo drawing (unreported) SpaceSeq main stereo drawing is for ar->regiontype RGN_TYPE_PREVIEW, but the drawing code was assuming RGN_TYPE_WINDOW was the only one to be considered for all the regions. SpaceSeq still needs stereo drawing in RGN_TYPE_WINDOW but only when backdrop is enabled. Bug introduced on rBe01cadd657c76267. --- source/blender/windowmanager/intern/wm_draw.c | 53 +++++++++++++++++---------- 1 file changed, 34 insertions(+), 19 deletions(-) (limited to 'source/blender/windowmanager/intern/wm_draw.c') diff --git a/source/blender/windowmanager/intern/wm_draw.c b/source/blender/windowmanager/intern/wm_draw.c index c2488ed0992..6a3eeea14f0 100644 --- a/source/blender/windowmanager/intern/wm_draw.c +++ b/source/blender/windowmanager/intern/wm_draw.c @@ -125,44 +125,59 @@ static bool wm_draw_region_stereo_set(Main *bmain, ScrArea *sa, ARegion *ar, eSt { /* We could detect better when stereo is actually needed, by inspecting the * image in the image editor and sequencer. */ - if (ar->regiontype != RGN_TYPE_WINDOW) { + if (!ELEM(ar->regiontype, RGN_TYPE_WINDOW, RGN_TYPE_PREVIEW)) { return false; } switch (sa->spacetype) { case SPACE_IMAGE: { - SpaceImage *sima = sa->spacedata.first; - sima->iuser.multiview_eye = sview; - return true; + if (ar->regiontype == RGN_TYPE_WINDOW) { + SpaceImage *sima = sa->spacedata.first; + sima->iuser.multiview_eye = sview; + return true; + } + break; } case SPACE_VIEW3D: { - View3D *v3d = sa->spacedata.first; - if (v3d->camera && v3d->camera->type == OB_CAMERA) { - Camera *cam = v3d->camera->data; - CameraBGImage *bgpic = cam->bg_images.first; - v3d->multiview_eye = sview; - if (bgpic) bgpic->iuser.multiview_eye = sview; - return true; + if (ar->regiontype == RGN_TYPE_WINDOW) { + View3D *v3d = sa->spacedata.first; + if (v3d->camera && v3d->camera->type == OB_CAMERA) { + Camera *cam = v3d->camera->data; + CameraBGImage *bgpic = cam->bg_images.first; + v3d->multiview_eye = sview; + if (bgpic) { + bgpic->iuser.multiview_eye = sview; + } + return true; + } } - return false; + break; } case SPACE_NODE: { - SpaceNode *snode = sa->spacedata.first; - if ((snode->flag & SNODE_BACKDRAW) && ED_node_is_compositor(snode)) { - Image *ima = BKE_image_verify_viewer(bmain, IMA_TYPE_COMPOSITE, "Viewer Node"); - ima->eye = sview; - return true; + if (ar->regiontype == RGN_TYPE_WINDOW) { + SpaceNode *snode = sa->spacedata.first; + if ((snode->flag & SNODE_BACKDRAW) && ED_node_is_compositor(snode)) { + Image *ima = BKE_image_verify_viewer(bmain, IMA_TYPE_COMPOSITE, "Viewer Node"); + ima->eye = sview; + return true; + } } - return false; + break; } case SPACE_SEQ: { SpaceSeq *sseq = sa->spacedata.first; sseq->multiview_eye = sview; - return true; + + if (ar->regiontype == RGN_TYPE_PREVIEW) { + return true; + } + else if (ar->regiontype == RGN_TYPE_WINDOW) { + return (sseq->draw_flag & SEQ_DRAW_BACKDROP) != 0; + } } } -- cgit v1.2.3