[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [57043] trunk/blender/source/blender: fix [#35518] UV Mapping crashes the Blender with specific image file

Campbell Barton ideasman42 at gmail.com
Mon May 27 08:06:36 CEST 2013


Revision: 57043
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=57043
Author:   campbellbarton
Date:     2013-05-27 06:06:35 +0000 (Mon, 27 May 2013)
Log Message:
-----------
fix [#35518] UV Mapping crashes the Blender with specific image file

2 bugs here
- missing NULL check in IMB_colormanagement_display_settings_from_ctx()
- deadlock in draw_image_paint_helpers()

Simple solution is to not draw paint helpers for render/viewer images.

Modified Paths:
--------------
    trunk/blender/source/blender/editors/space_image/image_draw.c
    trunk/blender/source/blender/imbuf/intern/colormanagement.c

Modified: trunk/blender/source/blender/editors/space_image/image_draw.c
===================================================================
--- trunk/blender/source/blender/editors/space_image/image_draw.c	2013-05-26 22:34:45 UTC (rev 57042)
+++ trunk/blender/source/blender/editors/space_image/image_draw.c	2013-05-27 06:06:35 UTC (rev 57043)
@@ -783,7 +783,7 @@
 	Image *ima;
 	ImBuf *ibuf;
 	float zoomx, zoomy;
-	int show_viewer, show_render;
+	bool show_viewer, show_render, show_paint;
 	void *lock;
 
 	/* XXX can we do this in refresh? */
@@ -810,8 +810,9 @@
 	ima = ED_space_image(sima);
 	ED_space_image_get_zoom(sima, ar, &zoomx, &zoomy);
 
-	show_viewer = (ima && ima->source == IMA_SRC_VIEWER);
-	show_render = (show_viewer && ima->type == IMA_TYPE_R_RESULT);
+	show_viewer = (ima && ima->source == IMA_SRC_VIEWER) != 0;
+	show_render = (show_viewer && ima->type == IMA_TYPE_R_RESULT) != 0;
+	show_paint = (ima && (sima->mode == SI_MODE_PAINT) && (show_viewer == false) && (show_render == false));
 
 	if (show_viewer) {
 		/* use locked draw for drawing viewer image buffer since the compositor
@@ -835,7 +836,7 @@
 		draw_image_buffer(C, sima, ar, scene, ibuf, 0.0f, 0.0f, zoomx, zoomy);
 
 	/* paint helpers */
-	if (sima->mode == SI_MODE_PAINT)
+	if (show_paint)
 		draw_image_paint_helpers(C, ar, scene, zoomx, zoomy);
 
 	/* XXX integrate this code */

Modified: trunk/blender/source/blender/imbuf/intern/colormanagement.c
===================================================================
--- trunk/blender/source/blender/imbuf/intern/colormanagement.c	2013-05-26 22:34:45 UTC (rev 57042)
+++ trunk/blender/source/blender/imbuf/intern/colormanagement.c	2013-05-27 06:06:35 UTC (rev 57043)
@@ -672,7 +672,7 @@
 	*view_settings_r = &scene->view_settings;
 	*display_settings_r = &scene->display_settings;
 
-	if (sima) {
+	if (sima && sima->image) {
 		if ((sima->image->flag & IMA_VIEW_AS_RENDER) == 0)
 			*view_settings_r = NULL;
 	}




More information about the Bf-blender-cvs mailing list