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

Ton Roosendaal ton at blender.org
Mon Dec 15 19:09:55 CET 2008


Revision: 17878
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=17878
Author:   ton
Date:     2008-12-15 19:09:55 +0100 (Mon, 15 Dec 2008)

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

Added notifiers for timeline syncing. Works for Timeline window
only now.
Note that I've removed the malloc-free in a Notifier... notifier
system is still under probabtion :)

Modified Paths:
--------------
    branches/blender2.5/blender/source/blender/editors/include/UI_view2d.h
    branches/blender2.5/blender/source/blender/editors/interface/view2d.c
    branches/blender2.5/blender/source/blender/editors/interface/view2d_ops.c
    branches/blender2.5/blender/source/blender/editors/screen/area.c
    branches/blender2.5/blender/source/blender/editors/space_time/space_time.c
    branches/blender2.5/blender/source/blender/editors/space_time/time_header.c
    branches/blender2.5/blender/source/blender/windowmanager/WM_types.h
    branches/blender2.5/blender/source/blender/windowmanager/intern/wm_event_system.c

Modified: branches/blender2.5/blender/source/blender/editors/include/UI_view2d.h
===================================================================
--- branches/blender2.5/blender/source/blender/editors/include/UI_view2d.h	2008-12-15 17:47:57 UTC (rev 17877)
+++ branches/blender2.5/blender/source/blender/editors/include/UI_view2d.h	2008-12-15 18:09:55 UTC (rev 17878)
@@ -95,6 +95,12 @@
 /* half the size (in pixels) of scroller 'handles' */
 #define V2D_SCROLLER_HANDLE_SIZE	5
 
+/* ------ Define for UI_view2d_sync ----- */
+
+/* means copy it from the other v2d */
+#define V2D_LOCK_COPY	1
+
+
 /* ------------------------------------------ */
 /* Macros:								*/
 
@@ -153,6 +159,7 @@
 struct View2D *UI_view2d_fromcontext(const struct bContext *C);
 struct View2D *UI_view2d_fromcontext_rwin(const struct bContext *C);
 void UI_view2d_getscale(struct View2D *v2d, float *x, float *y);
+void UI_view2d_sync(struct View2D *v2d, struct View2D *v2dfrom, int flag);
 
 /* operators */
 void ui_view2d_operatortypes(void);

Modified: branches/blender2.5/blender/source/blender/editors/interface/view2d.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/interface/view2d.c	2008-12-15 17:47:57 UTC (rev 17877)
+++ branches/blender2.5/blender/source/blender/editors/interface/view2d.c	2008-12-15 18:09:55 UTC (rev 17878)
@@ -1466,3 +1466,18 @@
 	if (x) *x = (v2d->mask.xmax - v2d->mask.xmin) / (v2d->cur.xmax - v2d->cur.xmin);
 	if (y) *y = (v2d->mask.ymax - v2d->mask.ymin) / (v2d->cur.ymax - v2d->cur.ymin);
 }
+
+
+void UI_view2d_sync(View2D *v2d, View2D *v2dfrom, int flag)
+{
+	
+	if(flag == V2D_LOCK_COPY) {
+		v2d->cur.xmin= v2dfrom->cur.xmin;
+		v2d->cur.xmax= v2dfrom->cur.xmax;
+	}
+	else {
+		v2dfrom->cur.xmin= v2d->cur.xmin;
+		v2dfrom->cur.xmax= v2d->cur.xmax;
+	}
+}
+

Modified: branches/blender2.5/blender/source/blender/editors/interface/view2d_ops.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/interface/view2d_ops.c	2008-12-15 17:47:57 UTC (rev 17877)
+++ branches/blender2.5/blender/source/blender/editors/interface/view2d_ops.c	2008-12-15 18:09:55 UTC (rev 17878)
@@ -165,7 +165,8 @@
 	
 	/* request updates to be done... */
 	WM_event_add_notifier(C, WM_NOTE_AREA_REDRAW, 0, NULL);
-	/* XXX: add WM_NOTE_TIME_CHANGED? */
+	if(v2d->flag & V2D_VIEWSYNC_X)
+		WM_event_add_notifier(C, WM_NOTE_TIMELINE_SYNC, V2D_LOCK_COPY, v2d);
 }
 
 /* cleanup temp customdata  */
@@ -493,7 +494,8 @@
 	
 	/* request updates to be done... */
 	WM_event_add_notifier(C, WM_NOTE_AREA_REDRAW, 0, NULL);
-	/* XXX: add WM_NOTE_TIME_CHANGED? */
+	if(v2d->flag & V2D_VIEWSYNC_X)
+		WM_event_add_notifier(C, WM_NOTE_TIMELINE_SYNC, V2D_LOCK_COPY, v2d);
 }
 
 /* --------------- Individual Operators ------------------- */
@@ -645,7 +647,8 @@
 	
 	/* request updates to be done... */
 	WM_event_add_notifier(C, WM_NOTE_AREA_REDRAW, 0, NULL);
-	/* XXX: add WM_NOTE_TIME_CHANGED? */
+	if(v2d->flag & V2D_VIEWSYNC_X)
+		WM_event_add_notifier(C, WM_NOTE_TIMELINE_SYNC, V2D_LOCK_COPY, v2d);
 }
 
 /* cleanup temp customdata  */
@@ -1025,7 +1028,8 @@
 	
 	/* request updates to be done... */
 	WM_event_add_notifier(C, WM_NOTE_AREA_REDRAW, 0, NULL);
-	/* XXX: add WM_NOTE_TIME_CHANGED? */
+	if(v2d->flag & V2D_VIEWSYNC_X)
+		WM_event_add_notifier(C, WM_NOTE_TIMELINE_SYNC, V2D_LOCK_COPY, v2d);
 }
 
 /* handle user input for scrollers - calculations of mouse-movement need to be done here, not in the apply callback! */

Modified: branches/blender2.5/blender/source/blender/editors/screen/area.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/screen/area.c	2008-12-15 17:47:57 UTC (rev 17877)
+++ branches/blender2.5/blender/source/blender/editors/screen/area.c	2008-12-15 18:09:55 UTC (rev 17878)
@@ -104,7 +104,7 @@
 
 void ED_region_do_listen(ARegion *ar, wmNotifier *note)
 {
-	
+
 	/* generic notes first */
 	switch(note->type) {
 		case WM_NOTE_WINDOW_REDRAW:

Modified: branches/blender2.5/blender/source/blender/editors/space_time/space_time.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/space_time/space_time.c	2008-12-15 17:47:57 UTC (rev 17877)
+++ branches/blender2.5/blender/source/blender/editors/space_time/space_time.c	2008-12-15 18:09:55 UTC (rev 17878)
@@ -162,6 +162,15 @@
 static void time_main_area_listener(ARegion *ar, wmNotifier *wmn)
 {
 	/* context changes */
+	
+	switch(wmn->type) {
+		case WM_NOTE_TIMELINE_SYNC:
+			if(ar->v2d.flag & V2D_VIEWSYNC_X) {
+				ar->do_draw= 1;	/* XXX GAH! */
+				UI_view2d_sync(&ar->v2d, wmn->data, wmn->value);
+			}
+			break;
+	}
 }
 
 /* ************************ header time area region *********************** */

Modified: branches/blender2.5/blender/source/blender/editors/space_time/time_header.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/space_time/time_header.c	2008-12-15 17:47:57 UTC (rev 17877)
+++ branches/blender2.5/blender/source/blender/editors/space_time/time_header.c	2008-12-15 18:09:55 UTC (rev 17878)
@@ -189,11 +189,11 @@
 			break;
 		case 11:
 			if(v2d) {
-			//v2d->flag ^= V2D_VIEWSYNC_X;
-			//if(v2d->flag & V2D_VIEWSYNC_X)
-			//	view2d_do_locks(curarea, 0);
+				v2d->flag ^= V2D_VIEWSYNC_X;
+				if(v2d->flag & V2D_VIEWSYNC_X)
+					WM_event_add_notifier(C, WM_NOTE_TIMELINE_SYNC, 0, v2d);	/* XXX can notifier be called after data free? */
 			}
-				break;
+			break;
 		case 12: /* only show keyframes from selected data */
 			stime->flag ^= TIME_ONLYACTSEL;
 			WM_event_add_notifier(C, WM_NOTE_AREA_REDRAW, 0, NULL);

Modified: branches/blender2.5/blender/source/blender/windowmanager/WM_types.h
===================================================================
--- branches/blender2.5/blender/source/blender/windowmanager/WM_types.h	2008-12-15 17:47:57 UTC (rev 17877)
+++ branches/blender2.5/blender/source/blender/windowmanager/WM_types.h	2008-12-15 18:09:55 UTC (rev 17878)
@@ -115,7 +115,11 @@
 	WM_NOTE_AREA_REDRAW,
 	WM_NOTE_REGION_REDRAW,
 	WM_NOTE_GESTURE_REDRAW,
+	
+	WM_NOTE_TIMELINE_SYNC,
+	
 	WM_NOTE_OBJECT_CHANGED,
+	
 	WM_NOTE_LAST
 };
 

Modified: branches/blender2.5/blender/source/blender/windowmanager/intern/wm_event_system.c
===================================================================
--- branches/blender2.5/blender/source/blender/windowmanager/intern/wm_event_system.c	2008-12-15 17:47:57 UTC (rev 17877)
+++ branches/blender2.5/blender/source/blender/windowmanager/intern/wm_event_system.c	2008-12-15 18:09:55 UTC (rev 17878)
@@ -102,13 +102,14 @@
 	
 	note->window= C->window;
 
-	/* catch global notifications here */
+	/* catch local notifications here */
 	switch (type) {
-		case WM_NOTE_WINDOW_REDRAW:
-		case WM_NOTE_SCREEN_CHANGED:
-			break;
-		default:
-			if(C->region) note->swinid= C->region->swinid;
+		case WM_NOTE_AREA_REDRAW:
+		case WM_NOTE_REGION_REDRAW:
+		case WM_NOTE_GESTURE_REDRAW:
+			if(C->region) 
+				note->swinid= C->region->swinid;
+		break;
 	}
 	
 	note->type= type;
@@ -174,8 +175,7 @@
 			C->window= NULL;
 			C->screen= NULL;
 		}
-		if(note->data)
-			MEM_freeN(note->data);
+		
 		MEM_freeN(note);
 	}	
 }





More information about the Bf-blender-cvs mailing list