[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [26324] trunk/blender/source/blender: - duplicate window crasheing when it was full screen

Campbell Barton ideasman42 at gmail.com
Wed Jan 27 10:16:36 CET 2010


Revision: 26324
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=26324
Author:   campbellbarton
Date:     2010-01-27 10:16:28 +0100 (Wed, 27 Jan 2010)

Log Message:
-----------
- duplicate window crasheing when it was full screen
- keymap item was missing NULL check crash
- editmode object in inactive layer crash

Modified Paths:
--------------
    trunk/blender/source/blender/editors/interface/interface_handlers.c
    trunk/blender/source/blender/editors/object/object_edit.c
    trunk/blender/source/blender/windowmanager/intern/wm_operators.c

Modified: trunk/blender/source/blender/editors/interface/interface_handlers.c
===================================================================
--- trunk/blender/source/blender/editors/interface/interface_handlers.c	2010-01-27 07:31:53 UTC (rev 26323)
+++ trunk/blender/source/blender/editors/interface/interface_handlers.c	2010-01-27 09:16:28 UTC (rev 26324)
@@ -3803,9 +3803,9 @@
 		IDProperty *prop= (but->opptr)? but->opptr->data: NULL;
 		int w = uiLayoutGetWidth(layout);
 		wmKeyMap *km;
+		wmKeyMapItem *kmi= NULL;
 		int kmi_id= WM_key_event_operator_id(C, but->optype->idname, but->opcontext, prop, 1, &km);
-		wmKeyMapItem *kmi;
-		
+
 		if (kmi_id)
 			kmi= WM_keymap_item_find_id(km, kmi_id);
 

Modified: trunk/blender/source/blender/editors/object/object_edit.c
===================================================================
--- trunk/blender/source/blender/editors/object/object_edit.c	2010-01-27 07:31:53 UTC (rev 26323)
+++ trunk/blender/source/blender/editors/object/object_edit.c	2010-01-27 09:16:28 UTC (rev 26324)
@@ -500,7 +500,7 @@
 	Object *ob = CTX_data_active_object(C);
 
 	/* covers proxies too */
-	if(ob->data==NULL || ((ID *)ob->data)->lib)
+	if(ELEM(NULL, ob, ob->data) || ((ID *)ob->data)->lib)
 		return 0;
 
 	return ob && (ob->type == OB_MESH || ob->type == OB_ARMATURE ||

Modified: trunk/blender/source/blender/windowmanager/intern/wm_operators.c
===================================================================
--- trunk/blender/source/blender/windowmanager/intern/wm_operators.c	2010-01-27 07:31:53 UTC (rev 26323)
+++ trunk/blender/source/blender/windowmanager/intern/wm_operators.c	2010-01-27 09:16:28 UTC (rev 26324)
@@ -1241,6 +1241,18 @@
 
 /* ************ window / screen operator definitions ************** */
 
+/* this poll functions is needed in place of WM_operator_winactive
+ * while it crashes on full screen */
+static int wm_operator_winactive_normal(bContext *C)
+{
+	wmWindow *win= CTX_wm_window(C);
+
+    if(win==NULL || win->screen==NULL || win->screen->full != SCREENNORMAL)
+    	return 0;
+
+	return 1;
+}
+
 static void WM_OT_window_duplicate(wmOperatorType *ot)
 {
 	ot->name= "Duplicate Window";
@@ -1248,7 +1260,7 @@
 	ot->description="Duplicate the current Blender window.";
 		
 	ot->exec= wm_window_duplicate_op;
-	ot->poll= WM_operator_winactive;
+	ot->poll= wm_operator_winactive_normal;
 }
 
 static void WM_OT_save_homefile(wmOperatorType *ot)





More information about the Bf-blender-cvs mailing list