forked from bartvdbraak/blender
Attempt to fix #21796: render crash on windows after slots commit.
This commit is contained in:
parent
95d1d82313
commit
46895ab1f2
@ -1948,8 +1948,11 @@ static ImBuf *image_get_render_result(Image *ima, ImageUser *iuser, void **lock_
|
||||
ibuf->x= rres.rectx;
|
||||
ibuf->y= rres.recty;
|
||||
|
||||
if(ibuf->rect_float!=rectf || rect) /* ensure correct redraw */
|
||||
if(ibuf->rect_float!=rectf || rect) { /* ensure correct redraw */
|
||||
BLI_lock_thread(LOCK_CUSTOM1);
|
||||
imb_freerectImBuf(ibuf);
|
||||
BLI_unlock_thread(LOCK_CUSTOM1);
|
||||
}
|
||||
if(rect)
|
||||
ibuf->rect= rect;
|
||||
|
||||
|
@ -30,30 +30,24 @@
|
||||
|
||||
#include "MEM_guardedalloc.h"
|
||||
|
||||
#include "BLI_math.h"
|
||||
#include "BLI_blenlib.h"
|
||||
#include "BLI_editVert.h"
|
||||
#include "BLI_dlrbTree.h"
|
||||
#include "BLI_math.h"
|
||||
#include "BLI_threads.h"
|
||||
|
||||
#include "DNA_scene_types.h"
|
||||
|
||||
#include "BKE_blender.h"
|
||||
#include "BKE_colortools.h"
|
||||
#include "BKE_context.h"
|
||||
#include "BKE_customdata.h"
|
||||
#include "BKE_global.h"
|
||||
#include "BKE_image.h"
|
||||
#include "BKE_idprop.h"
|
||||
#include "BKE_library.h"
|
||||
#include "BKE_main.h"
|
||||
#include "BKE_mesh.h"
|
||||
#include "BKE_multires.h"
|
||||
#include "BKE_report.h"
|
||||
#include "BKE_scene.h"
|
||||
#include "BKE_screen.h"
|
||||
#include "BKE_utildefines.h"
|
||||
#include "BKE_sound.h"
|
||||
#include "BKE_writeavi.h"
|
||||
|
||||
#include "WM_api.h"
|
||||
#include "WM_types.h"
|
||||
@ -68,7 +62,6 @@
|
||||
#include "RNA_access.h"
|
||||
#include "RNA_define.h"
|
||||
|
||||
|
||||
#include "wm_window.h"
|
||||
|
||||
#include "render_intern.h"
|
||||
@ -136,8 +129,12 @@ void image_buffer_rect_update(Scene *scene, RenderResult *rr, ImBuf *ibuf, volat
|
||||
}
|
||||
if(rectf==NULL) return;
|
||||
|
||||
if(ibuf->rect==NULL) {
|
||||
BLI_lock_thread(LOCK_CUSTOM1);
|
||||
if(ibuf->rect==NULL)
|
||||
imb_addrectImBuf(ibuf);
|
||||
BLI_unlock_thread(LOCK_CUSTOM1);
|
||||
}
|
||||
|
||||
rectf+= 4*(rr->rectx*ymin + xmin);
|
||||
rectc= (char *)(ibuf->rect + ibuf->x*rymin + rxmin);
|
||||
|
@ -38,6 +38,7 @@
|
||||
#include "DNA_screen_types.h"
|
||||
|
||||
#include "PIL_time.h"
|
||||
#include "BLI_threads.h"
|
||||
|
||||
#include "IMB_imbuf.h"
|
||||
#include "IMB_imbuf_types.h"
|
||||
@ -75,16 +76,19 @@ static void image_verify_buffer_float(SpaceImage *sima, Image *ima, ImBuf *ibuf,
|
||||
NOTE: if float buffer changes, we have to manually remove the rect
|
||||
*/
|
||||
|
||||
if(ibuf->rect_float) {
|
||||
if(ibuf->rect==NULL) {
|
||||
if (color_manage) {
|
||||
if (ima && ima->source == IMA_SRC_VIEWER)
|
||||
if(ibuf->rect_float && ibuf->rect==NULL) {
|
||||
BLI_lock_thread(LOCK_CUSTOM1);
|
||||
if(ibuf->rect_float && ibuf->rect==NULL) {
|
||||
if(color_manage) {
|
||||
if(ima && ima->source == IMA_SRC_VIEWER)
|
||||
ibuf->profile = IB_PROFILE_LINEAR_RGB;
|
||||
} else {
|
||||
ibuf->profile = IB_PROFILE_NONE;
|
||||
}
|
||||
else
|
||||
ibuf->profile = IB_PROFILE_NONE;
|
||||
|
||||
IMB_rect_from_float(ibuf);
|
||||
}
|
||||
BLI_unlock_thread(LOCK_CUSTOM1);
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user