diff options
author | Campbell Barton <ideasman42@gmail.com> | 2021-01-25 15:47:56 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2021-01-25 15:47:56 +0300 |
commit | 4bc7996e2efae611cbd277b8f3fde2102836e01b (patch) | |
tree | afe35335b57648eaa9003901113bca94192dcd17 /source | |
parent | 72a207de35e7755abe638d0cd226a1e30ad10d06 (diff) | |
parent | 7a005fb7d172ba73936ad263aabd2ed7e4392688 (diff) |
Merge branch 'blender-v2.92-release'
Diffstat (limited to 'source')
-rw-r--r-- | source/blender/editors/space_image/space_image.c | 15 | ||||
-rw-r--r-- | source/blender/editors/space_node/drawnode.c | 3 |
2 files changed, 13 insertions, 5 deletions
diff --git a/source/blender/editors/space_image/space_image.c b/source/blender/editors/space_image/space_image.c index 5e1a6882d56..b0571d47736 100644 --- a/source/blender/editors/space_image/space_image.c +++ b/source/blender/editors/space_image/space_image.c @@ -642,6 +642,8 @@ static void image_main_region_draw(const bContext *C, ARegion *region) Mask *mask = NULL; Scene *scene = CTX_data_scene(C); View2D *v2d = ®ion->v2d; + Image *image = ED_space_image(sima); + const bool show_viewer = (image && image->source == IMA_SRC_VIEWER); /* XXX not supported yet, disabling for now */ scene->r.scemode &= ~R_COMP_CROP; @@ -656,8 +658,14 @@ static void image_main_region_draw(const bContext *C, ARegion *region) mask = ED_space_image_get_mask(sima); } - /* we draw image in pixelspace */ + if (show_viewer) { + BLI_thread_lock(LOCK_DRAW_IMAGE); + } DRW_draw_view(C); + if (show_viewer) { + BLI_thread_unlock(LOCK_DRAW_IMAGE); + } + draw_image_main_helpers(C, region); /* Draw Meta data of the image isn't added to the DrawManager as it is @@ -685,12 +693,9 @@ static void image_main_region_draw(const bContext *C, ARegion *region) UI_view2d_view_restore(C); if (mask) { - Image *image = ED_space_image(sima); - int width, height, show_viewer; + int width, height; float aspx, aspy; - show_viewer = (image && image->source == IMA_SRC_VIEWER); - if (show_viewer) { /* ED_space_image_get* will acquire image buffer which requires * lock here by the same reason why lock is needed in draw_image_main diff --git a/source/blender/editors/space_node/drawnode.c b/source/blender/editors/space_node/drawnode.c index 055e3803e25..afd19df9f14 100644 --- a/source/blender/editors/space_node/drawnode.c +++ b/source/blender/editors/space_node/drawnode.c @@ -25,6 +25,7 @@ #include "BLI_blenlib.h" #include "BLI_math.h" #include "BLI_system.h" +#include "BLI_threads.h" #include "DNA_node_types.h" #include "DNA_object_types.h" @@ -3780,7 +3781,9 @@ void draw_nodespace_back_pix(const bContext *C, /* The draw manager is used to draw the backdrop image. */ GPUFrameBuffer *old_fb = GPU_framebuffer_active_get(); GPU_framebuffer_restore(); + BLI_thread_lock(LOCK_DRAW_IMAGE); DRW_draw_view(C); + BLI_thread_unlock(LOCK_DRAW_IMAGE); GPU_framebuffer_bind_no_srgb(old_fb); /* Draw manager changes the depth state. Set it back to NONE. Without this the node preview * images aren't drawn correctly. */ |