From 133bf05b184bfeed3002be28c29199b5716b8f1e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Foucault?= Date: Mon, 27 Apr 2020 21:13:53 +0200 Subject: Fix T75736 Viewport update problem when switching between view layers The problem comes from the fact by no data being modified when switching viewlayers. To follow what the external render engines do, we completely reset the viewport by freeing the GPUViewport to avoid any cached data from being kept. --- source/blender/windowmanager/WM_api.h | 2 +- source/blender/windowmanager/intern/wm_draw.c | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) (limited to 'source/blender/windowmanager') diff --git a/source/blender/windowmanager/WM_api.h b/source/blender/windowmanager/WM_api.h index 4118794d5b3..2f540262a66 100644 --- a/source/blender/windowmanager/WM_api.h +++ b/source/blender/windowmanager/WM_api.h @@ -773,7 +773,7 @@ void WM_draw_region_viewport_bind(struct ARegion *region); void WM_draw_region_viewport_unbind(struct ARegion *region); /* Region drawing */ -void WM_draw_region_free(struct ARegion *region); +void WM_draw_region_free(struct ARegion *region, bool hide); struct GPUViewport *WM_draw_region_get_viewport(struct ARegion *region); struct GPUViewport *WM_draw_region_get_bound_viewport(struct ARegion *region); diff --git a/source/blender/windowmanager/intern/wm_draw.c b/source/blender/windowmanager/intern/wm_draw.c index d3cd31c6e97..302de6609d0 100644 --- a/source/blender/windowmanager/intern/wm_draw.c +++ b/source/blender/windowmanager/intern/wm_draw.c @@ -1037,10 +1037,12 @@ void wm_draw_region_clear(wmWindow *win, ARegion *UNUSED(region)) screen->do_draw = true; } -void WM_draw_region_free(ARegion *region) +void WM_draw_region_free(ARegion *region, bool hide) { wm_draw_region_buffer_free(region); - region->visible = 0; + if (hide) { + region->visible = 0; + } } void wm_draw_region_test(bContext *C, ScrArea *area, ARegion *region) -- cgit v1.2.3