[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [17855] branches/blender2.5/blender/source /blender/editors/screen: 2.5

Ton Roosendaal ton at blender.org
Sun Dec 14 18:48:53 CET 2008


Revision: 17855
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=17855
Author:   ton
Date:     2008-12-14 18:48:52 +0100 (Sun, 14 Dec 2008)

Log Message:
-----------
2.5

And area-joining is memory-error free again!

Modified Paths:
--------------
    branches/blender2.5/blender/source/blender/editors/screen/screen_edit.c
    branches/blender2.5/blender/source/blender/editors/screen/screen_intern.h
    branches/blender2.5/blender/source/blender/editors/screen/screen_ops.c

Modified: branches/blender2.5/blender/source/blender/editors/screen/screen_edit.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/screen/screen_edit.c	2008-12-14 17:43:23 UTC (rev 17854)
+++ branches/blender2.5/blender/source/blender/editors/screen/screen_edit.c	2008-12-14 17:48:52 UTC (rev 17855)
@@ -252,10 +252,13 @@
 	return sa;
 }
 
-static void screen_delarea(bScreen *sc, ScrArea *sa)
+static void screen_delarea(bContext *C, bScreen *sc, ScrArea *sa)
 {
-	/* XXX need context to cancel operators ED_area_exit(C, sa); */
+	
+	ED_area_exit(C, sa);
+	
 	BKE_screen_area_free(sa);
+	
 	BLI_remlink(&sc->areabase, sa);
 	MEM_freeN(sa);
 }
@@ -475,7 +478,7 @@
 /* Helper function to join 2 areas, it has a return value, 0=failed 1=success
 * 	used by the split, join operators
 */
-int screen_area_join(bScreen* scr, ScrArea *sa1, ScrArea *sa2) 
+int screen_area_join(bContext *C, bScreen* scr, ScrArea *sa1, ScrArea *sa2) 
 {
 	int dir;
 	
@@ -514,7 +517,7 @@
 		screen_addedge(scr, sa1->v3, sa1->v4);
 	}
 	
-	screen_delarea(scr, sa2);
+	screen_delarea(C, scr, sa2);
 	removedouble_scrverts(scr);
 	sa1->flag &= ~AREA_FLAG_DRAWJOINFROM;
 	
@@ -567,7 +570,7 @@
 static void screen_test_scale(bScreen *sc, int winsizex, int winsizey)
 {
 	ScrVert *sv=NULL;
-	ScrArea *sa, *san;
+	ScrArea *sa;
 	int sizex, sizey;
 	float facx, facy, tempf, min[2], max[2];
 	
@@ -616,11 +619,7 @@
 	}
 	
 	/* test for collapsed areas. This could happen in some blender version... */
-	for(sa= sc->areabase.first; sa; sa= san) {
-		san= sa->next;
-		if(sa->v1==sa->v2 || sa->v3==sa->v4 || sa->v2==sa->v3)
-			screen_delarea(sc, sa);
-	}
+	/* ton: removed option now, it needs Context... */
 	
 	/* make each window at least HEADERY high */
 	for(sa= sc->areabase.first; sa; sa= sa->next) {

Modified: branches/blender2.5/blender/source/blender/editors/screen/screen_intern.h
===================================================================
--- branches/blender2.5/blender/source/blender/editors/screen/screen_intern.h	2008-12-14 17:43:23 UTC (rev 17854)
+++ branches/blender2.5/blender/source/blender/editors/screen/screen_intern.h	2008-12-14 17:48:52 UTC (rev 17855)
@@ -38,7 +38,7 @@
 bScreen		*screen_add(struct wmWindow *win, char *name);
 ScrEdge		*screen_findedge(bScreen *sc, ScrVert *v1, ScrVert *v2);
 ScrArea		*area_split(wmWindow *win, bScreen *sc, ScrArea *sa, char dir, float fac);
-int			screen_area_join(bScreen* scr, ScrArea *sa1, ScrArea *sa2);
+int			screen_area_join(bContext *C, bScreen* scr, ScrArea *sa1, ScrArea *sa2);
 int			area_getorientation(bScreen *screen, ScrArea *sa, ScrArea *sb);
 void		select_connected_scredge(bScreen *sc, ScrEdge *edge);
 

Modified: branches/blender2.5/blender/source/blender/editors/screen/screen_ops.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/screen/screen_ops.c	2008-12-14 17:43:23 UTC (rev 17854)
+++ branches/blender2.5/blender/source/blender/editors/screen/screen_ops.c	2008-12-14 17:48:52 UTC (rev 17855)
@@ -823,7 +823,7 @@
 {
 	sAreaSplitData *sd= (sAreaSplitData *)op->customdata;
 
-	if (screen_area_join(C->screen,sd->sarea, sd->narea)) {
+	if (screen_area_join(C, C->screen, sd->sarea, sd->narea)) {
 		if (C->area == sd->narea) {
 			C->area = NULL;
 		}
@@ -975,7 +975,7 @@
 	sAreaJoinData *jd = (sAreaJoinData *)op->customdata;
 	if (!jd) return 0;
 
-	if(!screen_area_join(C->screen,jd->sa1,jd->sa2)){
+	if(!screen_area_join(C, C->screen, jd->sa1, jd->sa2)){
 		return 0;
 	}
 	if (C->area == jd->sa2) {





More information about the Bf-blender-cvs mailing list