Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeroen Bakker <jeroen@blender.org>2022-05-03 09:16:04 +0300
committerJeroen Bakker <jeroen@blender.org>2022-05-03 09:21:08 +0300
commite4e5d7781e9946cd39d44d846b7435406a6e9229 (patch)
tree6882474f2f7f9abb9f7a20aed2d8ddc9d3be002e
parent4ee8dfa8b30fbbb2d700e961f8c686199af39fe6 (diff)
Fix T97547: Stereo rendering crash.
Viewports weren't drawn as they couldn't get a lock. Resulted in compositing uninitialized viewports. Fixed by checking that both views were drawn.
-rw-r--r--source/blender/windowmanager/intern/wm_draw.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/source/blender/windowmanager/intern/wm_draw.c b/source/blender/windowmanager/intern/wm_draw.c
index 242c96903d3..02da798495b 100644
--- a/source/blender/windowmanager/intern/wm_draw.c
+++ b/source/blender/windowmanager/intern/wm_draw.c
@@ -702,6 +702,7 @@ static void wm_draw_window_offscreen(bContext *C, wmWindow *win, bool stereo)
if (stereo && wm_draw_region_stereo_set(bmain, area, region, STEREO_LEFT_ID)) {
wm_draw_region_buffer_create(region, true, use_viewport);
+ bool views_valid = true;
for (int view = 0; view < 2; view++) {
eStereoViews sview;
@@ -717,8 +718,11 @@ static void wm_draw_window_offscreen(bContext *C, wmWindow *win, bool stereo)
ED_region_do_draw(C, region);
wm_draw_region_unbind(region);
}
+ else {
+ views_valid = false;
+ }
}
- if (use_viewport) {
+ if (use_viewport && views_valid) {
GPUViewport *viewport = region->draw_buffer->viewport;
GPU_viewport_stereo_composite(viewport, win->stereo3d_format);
}