[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [46684] trunk/blender/source/blender/ editors/space_view3d: fix [#31474] Crash when object has parent and dupli_type == 'FRAMES' and show_x_ray, show_transparent are set to True
Campbell Barton
ideasman42 at gmail.com
Wed May 16 10:42:50 CEST 2012
Revision: 46684
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=46684
Author: campbellbarton
Date: 2012-05-16 08:42:50 +0000 (Wed, 16 May 2012)
Log Message:
-----------
fix [#31474] Crash when object has parent and dupli_type == 'FRAMES' and show_x_ray, show_transparent are set to True
dupli objects should never be added to after-draw, added an assert to ensure this (and make fixing such bugs easier).
Modified Paths:
--------------
trunk/blender/source/blender/editors/space_view3d/drawobject.c
trunk/blender/source/blender/editors/space_view3d/view3d_draw.c
Modified: trunk/blender/source/blender/editors/space_view3d/drawobject.c
===================================================================
--- trunk/blender/source/blender/editors/space_view3d/drawobject.c 2012-05-16 08:36:09 UTC (rev 46683)
+++ trunk/blender/source/blender/editors/space_view3d/drawobject.c 2012-05-16 08:42:50 UTC (rev 46684)
@@ -3603,21 +3603,23 @@
}
}
- /* GPU_begin_object_materials checked if this is needed */
- if (do_alpha_after) {
- if (ob->dtx & OB_DRAWXRAY) {
- add_view3d_after(&v3d->afterdraw_xraytransp, base, flag);
+ if ((flag & DRAW_PICKING) == 0 && (base->flag & OB_FROMDUPLI) == 0) {
+ /* GPU_begin_object_materials checked if this is needed */
+ if (do_alpha_after) {
+ if (ob->dtx & OB_DRAWXRAY) {
+ add_view3d_after(&v3d->afterdraw_xraytransp, base, flag);
+ }
+ else {
+ add_view3d_after(&v3d->afterdraw_transp, base, flag);
+ }
}
- else {
- add_view3d_after(&v3d->afterdraw_transp, base, flag);
+ else if (ob->dtx & OB_DRAWXRAY && ob->dtx & OB_DRAWTRANSP) {
+ /* special case xray+transp when alpha is 1.0, without this the object vanishes */
+ if (v3d->xray == 0 && v3d->transp == 0) {
+ add_view3d_after(&v3d->afterdraw_xray, base, flag);
+ }
}
}
- else if (ob->dtx & OB_DRAWXRAY && ob->dtx & OB_DRAWTRANSP) {
- /* special case xray+transp when alpha is 1.0, without this the object vanishes */
- if (v3d->xray == 0 && v3d->transp == 0) {
- add_view3d_after(&v3d->afterdraw_xray, base, flag);
- }
- }
return retval;
}
Modified: trunk/blender/source/blender/editors/space_view3d/view3d_draw.c
===================================================================
--- trunk/blender/source/blender/editors/space_view3d/view3d_draw.c 2012-05-16 08:36:09 UTC (rev 46683)
+++ trunk/blender/source/blender/editors/space_view3d/view3d_draw.c 2012-05-16 08:42:50 UTC (rev 46684)
@@ -1715,6 +1715,7 @@
void add_view3d_after(ListBase *lb, Base *base, int flag)
{
View3DAfter *v3da = MEM_callocN(sizeof(View3DAfter), "View 3d after");
+ BLI_assert((base->flag & OB_FROMDUPLI) == 0);
BLI_addtail(lb, v3da);
v3da->base = base;
v3da->flag = flag;
More information about the Bf-blender-cvs
mailing list