[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [35688] trunk/blender/source/blender/ editors: - support transform operators running in backgruond mode ( was crashing)

Campbell Barton ideasman42 at gmail.com
Tue Mar 22 10:14:28 CET 2011


Revision: 35688
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=35688
Author:   campbellbarton
Date:     2011-03-22 09:14:27 +0000 (Tue, 22 Mar 2011)
Log Message:
-----------
- support transform operators running in backgruond mode (was crashing)
- fix for crash getting the extrude mode enum value when a non-mesh edit object was active.

Modified Paths:
--------------
    trunk/blender/source/blender/editors/mesh/editmesh_tools.c
    trunk/blender/source/blender/editors/screen/area.c
    trunk/blender/source/blender/editors/transform/transform.c
    trunk/blender/source/blender/editors/transform/transform_generics.c

Modified: trunk/blender/source/blender/editors/mesh/editmesh_tools.c
===================================================================
--- trunk/blender/source/blender/editors/mesh/editmesh_tools.c	2011-03-22 08:58:49 UTC (rev 35687)
+++ trunk/blender/source/blender/editors/mesh/editmesh_tools.c	2011-03-22 09:14:27 UTC (rev 35688)
@@ -761,7 +761,7 @@
 		{0, NULL, 0, NULL, NULL}};
 
 
-static EnumPropertyItem *extrude_itemf(bContext *C, PointerRNA *UNUSED(ptr), int *free)
+static EnumPropertyItem *mesh_extrude_itemf(bContext *C, PointerRNA *UNUSED(ptr), int *free)
 {
 	EnumPropertyItem *item= NULL;
 	Object *obedit= CTX_data_edit_object(C);
@@ -769,7 +769,7 @@
 
 	int totitem= 0;
 
-	if(!obedit)
+	if(obedit==NULL || obedit->type != OB_MESH)
 		return extrude_items;
 
 	em = BKE_mesh_get_editmesh(obedit->data);
@@ -849,7 +849,7 @@
 	/* properties */
 	prop= RNA_def_enum(ot->srna, "type", extrude_items, 0, "Type", "");
 	RNA_def_property_flag(prop, PROP_HIDDEN);
-	RNA_def_enum_funcs(prop, extrude_itemf);
+	RNA_def_enum_funcs(prop, mesh_extrude_itemf);
 	ot->prop= prop;
 }
 

Modified: trunk/blender/source/blender/editors/screen/area.c
===================================================================
--- trunk/blender/source/blender/editors/screen/area.c	2011-03-22 08:58:49 UTC (rev 35687)
+++ trunk/blender/source/blender/editors/screen/area.c	2011-03-22 09:14:27 UTC (rev 35688)
@@ -431,7 +431,11 @@
 void ED_area_headerprint(ScrArea *sa, const char *str)
 {
 	ARegion *ar;
-	
+
+	/* happens when running transform operators in backround mode */
+	if(sa == NULL)
+		return;
+
 	for(ar= sa->regionbase.first; ar; ar= ar->next) {
 		if(ar->regiontype==RGN_TYPE_HEADER) {
 			if(str) {

Modified: trunk/blender/source/blender/editors/transform/transform.c
===================================================================
--- trunk/blender/source/blender/editors/transform/transform.c	2011-03-22 08:58:49 UTC (rev 35687)
+++ trunk/blender/source/blender/editors/transform/transform.c	2011-03-22 09:14:27 UTC (rev 35688)
@@ -4298,7 +4298,7 @@
 	int  uvlay_tot= CustomData_number_of_layers(&em->fdata, CD_MTFACE);
 	int uvlay_idx;
 	TransDataSlideUv *slideuvs=NULL, *suv=NULL, *suv_last=NULL;
-	RegionView3D *v3d = t->ar->regiondata;
+	RegionView3D *v3d = t->ar ? t->ar->regiondata : NULL; /* background mode support */
 	float projectMat[4][4];
 	float start[3] = {0.0f, 0.0f, 0.0f}, end[3] = {0.0f, 0.0f, 0.0f};
 	float vec[3];

Modified: trunk/blender/source/blender/editors/transform/transform_generics.c
===================================================================
--- trunk/blender/source/blender/editors/transform/transform_generics.c	2011-03-22 08:58:49 UTC (rev 35687)
+++ trunk/blender/source/blender/editors/transform/transform_generics.c	2011-03-22 09:14:27 UTC (rev 35688)
@@ -964,7 +964,7 @@
 		t->options |= CTX_EDGE;
 	}
 
-	t->spacetype = sa->spacetype;
+	t->spacetype = sa ? sa->spacetype : SPACE_EMPTY; /* background mode */
 	if(t->spacetype == SPACE_VIEW3D)
 	{
 		View3D *v3d = sa->spacedata.first;




More information about the Bf-blender-cvs mailing list