[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [25438] trunk/blender/source/blender: Fix #20374: Limit selection to visible would not work anymore after trying to

Brecht Van Lommel brecht at blender.org
Thu Dec 17 15:38:30 CET 2009


Revision: 25438
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=25438
Author:   blendix
Date:     2009-12-17 15:38:30 +0100 (Thu, 17 Dec 2009)

Log Message:
-----------
Fix #20374: Limit selection to visible would not work anymore after trying to
select once but not selecting correctly, due the need backbuffer flag not being
reset correctly in the 3d view.

Modified Paths:
--------------
    trunk/blender/source/blender/blenloader/intern/readfile.c
    trunk/blender/source/blender/editors/mesh/editface.c
    trunk/blender/source/blender/editors/space_view3d/view3d_draw.c
    trunk/blender/source/blender/makesdna/DNA_view3d_types.h
    trunk/blender/source/blender/windowmanager/intern/wm_draw.c

Modified: trunk/blender/source/blender/blenloader/intern/readfile.c
===================================================================
--- trunk/blender/source/blender/blenloader/intern/readfile.c	2009-12-17 13:27:52 UTC (rev 25437)
+++ trunk/blender/source/blender/blenloader/intern/readfile.c	2009-12-17 14:38:30 UTC (rev 25438)
@@ -5059,6 +5059,7 @@
 			if (sl->spacetype==SPACE_VIEW3D) {
 				View3D *v3d= (View3D*) sl;
 				v3d->bgpic= newdataadr(fd, v3d->bgpic);
+				v3d->flag |= V3D_INVALID_BACKBUF;
 				if(v3d->bgpic)
 					v3d->bgpic->iuser.ok= 1;
 				if(v3d->gpd) {

Modified: trunk/blender/source/blender/editors/mesh/editface.c
===================================================================
--- trunk/blender/source/blender/editors/mesh/editface.c	2009-12-17 13:27:52 UTC (rev 25437)
+++ trunk/blender/source/blender/editors/mesh/editface.c	2009-12-17 14:38:30 UTC (rev 25438)
@@ -127,7 +127,7 @@
 	if (!me || me->totface==0)
 		return 0;
 
-// XXX 	if (v3d->flag & V3D_NEEDBACKBUFDRAW) {
+// XXX 	if (v3d->flag & V3D_INVALID_BACKBUF) {
 // XXX drawview.c!		check_backbuf();
 // XXX		persp(PERSP_VIEW);
 // XXX 	}

Modified: trunk/blender/source/blender/editors/space_view3d/view3d_draw.c
===================================================================
--- trunk/blender/source/blender/editors/space_view3d/view3d_draw.c	2009-12-17 13:27:52 UTC (rev 25437)
+++ trunk/blender/source/blender/editors/space_view3d/view3d_draw.c	2009-12-17 14:38:30 UTC (rev 25438)
@@ -1113,11 +1113,11 @@
 	else if((base && (base->object->mode & OB_MODE_PARTICLE_EDIT)) && v3d->drawtype>OB_WIRE && (v3d->flag & V3D_ZBUF_SELECT));
 	else if(scene->obedit && v3d->drawtype>OB_WIRE && (v3d->flag & V3D_ZBUF_SELECT));
 	else {
-		v3d->flag &= ~V3D_NEEDBACKBUFDRAW;
+		v3d->flag &= ~V3D_INVALID_BACKBUF;
 		return;
 	}
 
-	if( !(v3d->flag & V3D_NEEDBACKBUFDRAW) ) return;
+	if( !(v3d->flag & V3D_INVALID_BACKBUF) ) return;
 
 //	if(test) {
 //		if(qtest()) {
@@ -1162,7 +1162,7 @@
 		draw_object_backbufsel(scene, v3d, rv3d, base->object);
 	}
 
-	v3d->flag &= ~V3D_NEEDBACKBUFDRAW;
+	v3d->flag &= ~V3D_INVALID_BACKBUF;
 
 	G.f &= ~G_BACKBUFSEL;
 	v3d->zbuf= FALSE; 
@@ -1183,7 +1183,7 @@
 
 void view3d_validate_backbuf(ViewContext *vc)
 {
-	if(vc->v3d->flag & V3D_NEEDBACKBUFDRAW)
+	if(vc->v3d->flag & V3D_INVALID_BACKBUF)
 		backdrawview3d(vc->scene, vc->ar, vc->v3d);
 }
 
@@ -2188,24 +2188,7 @@
 	
 	/* XXX here was the blockhandlers for floating panels */
 
-	if(ob && ob->mode & (OB_MODE_VERTEX_PAINT|OB_MODE_WEIGHT_PAINT|OB_MODE_TEXTURE_PAINT)) {
-		v3d->flag |= V3D_NEEDBACKBUFDRAW;
-		// XXX addafterqueue(ar->win, BACKBUFDRAW, 1);
-	}
-
-	if((ob && ob->mode & OB_MODE_PARTICLE_EDIT) && v3d->drawtype>OB_WIRE && (v3d->flag & V3D_ZBUF_SELECT)) {
-		v3d->flag |= V3D_NEEDBACKBUFDRAW;
-		// XXX addafterqueue(ar->win, BACKBUFDRAW, 1);
-	}
-
-	// test for backbuf select
-	if(scene->obedit && v3d->drawtype>OB_WIRE && (v3d->flag & V3D_ZBUF_SELECT)) {
-		
-		v3d->flag |= V3D_NEEDBACKBUFDRAW;
-		// XXX if(afterqtest(ar->win, BACKBUFDRAW)==0) {
-		//	addafterqueue(ar->win, BACKBUFDRAW, 1);
-		//}
-	}
+	v3d->flag |= V3D_INVALID_BACKBUF;
 }
 
 

Modified: trunk/blender/source/blender/makesdna/DNA_view3d_types.h
===================================================================
--- trunk/blender/source/blender/makesdna/DNA_view3d_types.h	2009-12-17 13:27:52 UTC (rev 25437)
+++ trunk/blender/source/blender/makesdna/DNA_view3d_types.h	2009-12-17 14:38:30 UTC (rev 25438)
@@ -190,7 +190,7 @@
 #define V3D_DISPIMAGE		1
 #define V3D_DISPBGPIC		2
 #define V3D_HIDE_HELPLINES	4
-#define V3D_NEEDBACKBUFDRAW	8
+#define V3D_INVALID_BACKBUF	8
 #define V3D_EDITMODE		16
 #define V3D_VERTEXPAINT		32
 #define V3D_FACESELECT		64

Modified: trunk/blender/source/blender/windowmanager/intern/wm_draw.c
===================================================================
--- trunk/blender/source/blender/windowmanager/intern/wm_draw.c	2009-12-17 13:27:52 UTC (rev 25437)
+++ trunk/blender/source/blender/windowmanager/intern/wm_draw.c	2009-12-17 14:38:30 UTC (rev 25438)
@@ -34,6 +34,7 @@
 #include "DNA_screen_types.h"
 #include "DNA_windowmanager_types.h"
 #include "DNA_userdef_types.h"
+#include "DNA_view3d_types.h"
 
 #include "MEM_guardedalloc.h"
 
@@ -90,6 +91,12 @@
 	}
 }
 
+static void wm_area_mark_invalid_backbuf(ScrArea *sa)
+{
+	if(sa->spacetype == SPACE_VIEW3D)
+		((View3D*)sa->spacedata.first)->flag |= V3D_INVALID_BACKBUF;
+}
+
 /********************** draw all **************************/
 /* - reference method, draw all each time                 */
 
@@ -113,6 +120,7 @@
 			}
 		}
 		
+		wm_area_mark_invalid_backbuf(sa);
 		CTX_wm_area_set(C, NULL);
 	}
 
@@ -230,6 +238,7 @@
 			}
 		}
 		
+		wm_area_mark_invalid_backbuf(sa);
 		CTX_wm_area_set(C, NULL);
 	}
 
@@ -553,6 +562,7 @@
 			}
 		}
 		
+		wm_area_mark_invalid_backbuf(sa);
 		CTX_wm_area_set(C, NULL);
 	}
 





More information about the Bf-blender-cvs mailing list