[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [13949] trunk/blender/source/blender: * Bugfix #8426: certain hooks options segfaulted

Joshua Leung aligorith at gmail.com
Mon Mar 3 04:21:27 CET 2008


Revision: 13949
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=13949
Author:   aligorith
Date:     2008-03-03 04:21:25 +0100 (Mon, 03 Mar 2008)

Log Message:
-----------
* Bugfix #8426: certain hooks options segfaulted 
This was caused by my previous commit for add_hook.

* Also, removed a compiler warning in the Python code

Modified Paths:
--------------
    trunk/blender/source/blender/python/api2_2x/Modifier.c
    trunk/blender/source/blender/python/api2_2x/Scene.c
    trunk/blender/source/blender/src/editobject.c

Modified: trunk/blender/source/blender/python/api2_2x/Modifier.c
===================================================================
--- trunk/blender/source/blender/python/api2_2x/Modifier.c	2008-03-03 01:44:35 UTC (rev 13948)
+++ trunk/blender/source/blender/python/api2_2x/Modifier.c	2008-03-03 03:21:25 UTC (rev 13949)
@@ -1,5 +1,5 @@
 /*
- * $Id: Modifier.c 12840 2007-12-11 01:58:22Z khughes $
+ * $Id$
  *
  * ***** BEGIN GPL/BL DUAL LICENSE BLOCK *****
  *
@@ -44,6 +44,7 @@
 #include "BLI_blenlib.h"
 #include "BLI_arithb.h"
 #include "MEM_guardedalloc.h"
+#include "BDR_editobject.h"
 #include "butspace.h"
 #include "blendef.h"
 #include "mydevice.h"
@@ -1352,6 +1353,18 @@
 	Py_RETURN_NONE;
 }
 
+
+/* quick hack for ZanQdo: add new hook modifier for selected verts */
+static PyObject *ModSeq_ZanQdoHack(BPy_ModSeq *self)
+{
+	/* this should add the hook (assumes that modifier stack is on same ob!) */
+	if ((self) && (G.obedit) && (self->object==G.obedit)) {
+		add_hook(1);
+	}
+	
+	Py_RETURN_NONE;
+}
+
 /*****************************************************************************/
 /* Python BPy_ModSeq methods table:                                       */
 /*****************************************************************************/
@@ -1365,6 +1378,8 @@
 	 "(modifier) - Move a modifier up in stack"},
 	{"moveDown", ( PyCFunction ) ModSeq_moveDown, METH_O,
 	 "(modifier) - Move a modifier down in stack"},
+	{"ZanQdoHack", (PyCFunction)ModSeq_ZanQdoHack, METH_NOARGS,
+	 "while in editmode, adds a hook for the selected verts (adds new modifier, and deselects object)"},
 	{NULL, NULL, 0, NULL}
 };
 

Modified: trunk/blender/source/blender/python/api2_2x/Scene.c
===================================================================
--- trunk/blender/source/blender/python/api2_2x/Scene.c	2008-03-03 01:44:35 UTC (rev 13948)
+++ trunk/blender/source/blender/python/api2_2x/Scene.c	2008-03-03 03:21:25 UTC (rev 13949)
@@ -42,6 +42,7 @@
 #include "DNA_screen_types.h"
 #include "DNA_userdef_types.h" /* U.userdefs */
 #include "DNA_object_types.h" /* SceneObSeq_new */
+#include "BKE_armature.h"
 #include "BKE_depsgraph.h"
 #include "BKE_library.h"
 #include "BKE_object.h"

Modified: trunk/blender/source/blender/src/editobject.c
===================================================================
--- trunk/blender/source/blender/src/editobject.c	2008-03-03 01:44:35 UTC (rev 13948)
+++ trunk/blender/source/blender/src/editobject.c	2008-03-03 03:21:25 UTC (rev 13949)
@@ -634,18 +634,34 @@
 
 void add_hook_menu(void)
 {
-	ModifierData *md = NULL;
-	HookModifierData *hmd = NULL;
-	Object *ob=NULL;
 	int mode;
 	
+	if(G.obedit==NULL) return;
+	
 	if(modifiers_findByType(G.obedit, eModifierType_Hook))
 		mode= pupmenu("Hooks %t|Add, To New Empty %x1|Add, To Selected Object %x2|Remove... %x3|Reassign... %x4|Select... %x5|Clear Offset...%x6");
 	else
 		mode= pupmenu("Hooks %t|Add, New Empty %x1|Add, To Selected Object %x2");
 
 	if(mode<1) return;
+		
+	/* do operations */
+	add_hook(mode);
 	
+	allqueue(REDRAWVIEW3D, 0);
+	allqueue(REDRAWBUTSOBJECT, 0);
+	
+	BIF_undo_push("Add hook");
+}
+
+void add_hook(int mode)
+{
+	ModifierData *md = NULL;
+	HookModifierData *hmd = NULL;
+	Object *ob=NULL;
+	
+	if(G.obedit==NULL) return;
+	
 	/* preconditions */
 	if(mode==2) { /* selected object */
 		Base *base= FIRSTBASE;
@@ -708,23 +724,6 @@
 		ob= hmd->object;
 	}
 	
-	/* do operations */
-	add_hook(mode);
-	
-	allqueue(REDRAWVIEW3D, 0);
-	allqueue(REDRAWBUTSOBJECT, 0);
-	
-	BIF_undo_push("Add hook");
-}
-
-void add_hook(int mode)
-{
-	ModifierData *md = NULL;
-	HookModifierData *hmd = NULL;
-	Object *ob=NULL;
-
-	if(G.obedit==NULL) return;
-	
 	/* do it, new hooks or reassign */
 	if(mode==1 || mode==2 || mode==4) {
 		float cent[3];





More information about the Bf-blender-cvs mailing list