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

Ton Roosendaal ton at blender.org
Tue Dec 16 13:28:03 CET 2008


Revision: 17890
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=17890
Author:   ton
Date:     2008-12-16 13:28:00 +0100 (Tue, 16 Dec 2008)

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

Work on getting notifiers in shape.

- Most important: local (to own region or area) redraw notifiers 
  have been depricated. This is not a good or correct notifier anyway. 
  Notifiers should be signals to other areas.

- Instead use these 2 functions:
    ED_area_tag_redraw(area);
    ED_region_tag_redraw(region);
  It seems to me good convention to keep the area/region redraw tag
  itself protected everywhere, for future improvements.

- Also added a basic WM function that checks overlapping regions,
  and flushes redraws to underlying regions. This makes menus and
  buttons allow to only send local region redraws.
  (Brought back two "swapbuffer indicators" to test this. 

- Todo: area 'action zone' redraws, and fixing other notifiers...
  sending data pointers in a notifier seems to be bad idea.

Modified Paths:
--------------
    branches/blender2.5/blender/source/blender/editors/include/ED_screen.h
    branches/blender2.5/blender/source/blender/editors/include/UI_view2d.h
    branches/blender2.5/blender/source/blender/editors/interface/interface_handlers.c
    branches/blender2.5/blender/source/blender/editors/interface/interface_regions.c
    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/screen/screen_edit.c
    branches/blender2.5/blender/source/blender/editors/space_buttons/space_buttons.c
    branches/blender2.5/blender/source/blender/editors/space_time/ed_markers.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/editors/space_view3d/space_view3d.c
    branches/blender2.5/blender/source/blender/windowmanager/WM_types.h
    branches/blender2.5/blender/source/blender/windowmanager/intern/wm_event_system.c
    branches/blender2.5/blender/source/blender/windowmanager/intern/wm_operators.c

Modified: branches/blender2.5/blender/source/blender/editors/include/ED_screen.h
===================================================================
--- branches/blender2.5/blender/source/blender/editors/include/ED_screen.h	2008-12-16 11:26:55 UTC (rev 17889)
+++ branches/blender2.5/blender/source/blender/editors/include/ED_screen.h	2008-12-16 12:28:00 UTC (rev 17890)
@@ -47,6 +47,7 @@
 void	ED_region_exit(struct bContext *C, struct ARegion *ar);
 void	ED_region_pixelspace(const struct bContext *C, struct ARegion *ar);
 void	ED_region_init(struct bContext *C, struct ARegion *ar);
+void	ED_region_tag_redraw(struct ARegion *ar);
 
 /* spaces */
 void	ED_spacetypes_init(void);
@@ -59,6 +60,7 @@
 void	ED_area_exit(struct bContext *C, struct ScrArea *sa);
 void	ED_area_do_draw(struct bContext *C, struct ScrArea *sa);
 int		ED_screen_area_active(const struct bContext *C);
+void	ED_area_tag_redraw(ScrArea *sa);
 
 /* screens */
 void	ED_screens_initialize(struct wmWindowManager *wm);

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-16 11:26:55 UTC (rev 17889)
+++ branches/blender2.5/blender/source/blender/editors/include/UI_view2d.h	2008-12-16 12:28:00 UTC (rev 17890)
@@ -101,7 +101,9 @@
 
 /* ------ Define for UI_view2d_sync ----- */
 
-/* means copy it from the other v2d */
+/* means copy it from another v2d */
+#define V2D_LOCK_SET	0
+/* means copy it to the other v2ds */
 #define V2D_LOCK_COPY	1
 
 

Modified: branches/blender2.5/blender/source/blender/editors/interface/interface_handlers.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/interface/interface_handlers.c	2008-12-16 11:26:55 UTC (rev 17889)
+++ branches/blender2.5/blender/source/blender/editors/interface/interface_handlers.c	2008-12-16 12:28:00 UTC (rev 17890)
@@ -47,6 +47,8 @@
 #include "BKE_texture.h"
 #include "BKE_utildefines.h"
 
+#include "ED_screen.h"
+
 #include "UI_interface.h"
 #include "UI_text.h"
 #include "interface.h"
@@ -1272,7 +1274,7 @@
 	}
 
 	if(changed || (retval == WM_UI_HANDLER_BREAK))
-		WM_event_add_notifier(C, WM_NOTE_WINDOW_REDRAW, 0, NULL);
+		ED_region_tag_redraw(data->region);
 }
 
 static void ui_do_but_textedit_select(bContext *C, uiBlock *block, uiBut *but, uiHandleButtonData *data, wmEvent *event)
@@ -1298,7 +1300,7 @@
 
 	if(retval == WM_UI_HANDLER_BREAK) {
 		ui_check_but(but);
-		WM_event_add_notifier(C, WM_NOTE_WINDOW_REDRAW, 0, NULL);
+		ED_region_tag_redraw(data->region);
 	}
 }
 
@@ -1354,7 +1356,7 @@
 	if(data->interactive) ui_apply_button(C, block, but, data, 1);
 	else ui_check_but(but);
 
-	WM_event_add_notifier(C, WM_NOTE_WINDOW_REDRAW, 0, NULL);
+	ED_region_tag_redraw(data->region);
 }
 
 /* ****************** menu opening for various types **************** */
@@ -2808,7 +2810,6 @@
 	}
 
 	data->state= state;
-	WM_event_add_notifier(C, WM_NOTE_WINDOW_REDRAW, 0, NULL);
 }
 
 static void button_activate_init(bContext *C, ARegion *ar, uiBut *but, uiButtonActivateType type)
@@ -2880,7 +2881,7 @@
 	but->flag &= ~(UI_ACTIVE|UI_SELECT);
 
 	/* redraw */
-	WM_event_add_notifier(C, WM_NOTE_WINDOW_REDRAW, 0, NULL);
+	ED_region_tag_redraw(data->region);
 
 	/* adds empty mousemove in queue for re-init handler, in case mouse is
 	 * still over a button. we cannot just check for this ourselfs because
@@ -2978,7 +2979,7 @@
 
 					if(!data->tooltip) {
 						data->tooltip= ui_tooltip_create(C, data->region, but);
-						WM_event_add_notifier(C, WM_NOTE_WINDOW_REDRAW, 0, NULL);
+						ED_region_tag_redraw(data->region);
 					}
 				}
 				/* handle menu auto open timer */
@@ -3014,14 +3015,14 @@
 					if(!(but->flag & UI_SELECT)) {
 						but->flag |= UI_SELECT;
 						data->cancel= 0;
-						WM_event_add_notifier(C, WM_NOTE_WINDOW_REDRAW, 0, NULL);
+						ED_region_tag_redraw(data->region);
 					}
 				}
 				else {
 					if(but->flag & UI_SELECT) {
 						but->flag &= ~UI_SELECT;
 						data->cancel= 1;
-						WM_event_add_notifier(C, WM_NOTE_WINDOW_REDRAW, 0, NULL);
+						ED_region_tag_redraw(data->region);
 					}
 				}
 				break;

Modified: branches/blender2.5/blender/source/blender/editors/interface/interface_regions.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/interface/interface_regions.c	2008-12-16 11:26:55 UTC (rev 17889)
+++ branches/blender2.5/blender/source/blender/editors/interface/interface_regions.c	2008-12-16 12:28:00 UTC (rev 17890)
@@ -355,7 +355,7 @@
 	ED_region_init(C, ar);
 	
 	/* notify change and redraw */
-	WM_event_add_notifier(C, WM_NOTE_WINDOW_REDRAW, 0, NULL);
+	ED_region_tag_redraw(ar);
 
 	return ar;
 }
@@ -671,7 +671,7 @@
 	wm_subwindow_getmatrix(C->window, ar->swinid, block->winmat);
 	
 	/* notify change and redraw */
-	WM_event_add_notifier(C, WM_NOTE_WINDOW_REDRAW, 0, NULL);
+	ED_region_tag_redraw(ar);
 
 	return handle;
 }

Modified: branches/blender2.5/blender/source/blender/editors/interface/view2d.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/interface/view2d.c	2008-12-16 11:26:55 UTC (rev 17889)
+++ branches/blender2.5/blender/source/blender/editors/interface/view2d.c	2008-12-16 12:28:00 UTC (rev 17890)
@@ -1526,7 +1526,7 @@
 	if (y) *y = (v2d->mask.ymax - v2d->mask.ymin) / (v2d->cur.ymax - v2d->cur.ymin);
 }
 
-
+/* called by notifier WM_NOTE_TIMELINE_SYNC */
 void UI_view2d_sync(View2D *v2d, View2D *v2dfrom, int flag)
 {
 	

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-16 11:26:55 UTC (rev 17889)
+++ branches/blender2.5/blender/source/blender/editors/interface/view2d_ops.c	2008-12-16 12:28:00 UTC (rev 17890)
@@ -48,6 +48,8 @@
 
 #include "BIF_gl.h"
 
+#include "ED_screen.h"
+
 #include "UI_resources.h"
 #include "UI_view2d.h"
 
@@ -164,7 +166,7 @@
 	UI_view2d_curRect_validate(v2d);
 	
 	/* request updates to be done... */
-	WM_event_add_notifier(C, WM_NOTE_AREA_REDRAW, 0, NULL);
+	ED_area_tag_redraw(C->area);
 	if(v2d->flag & V2D_VIEWSYNC_X)
 		WM_event_add_notifier(C, WM_NOTE_TIMELINE_SYNC, V2D_LOCK_COPY, v2d);
 }
@@ -493,7 +495,7 @@
 	UI_view2d_curRect_validate(v2d);
 	
 	/* request updates to be done... */
-	WM_event_add_notifier(C, WM_NOTE_AREA_REDRAW, 0, NULL);
+	ED_area_tag_redraw(C->area);
 	if(v2d->flag & V2D_VIEWSYNC_X)
 		WM_event_add_notifier(C, WM_NOTE_TIMELINE_SYNC, V2D_LOCK_COPY, v2d);
 }
@@ -646,7 +648,7 @@
 	UI_view2d_curRect_validate(v2d);
 	
 	/* request updates to be done... */
-	WM_event_add_notifier(C, WM_NOTE_AREA_REDRAW, 0, NULL);
+	ED_area_tag_redraw(C->area);
 	if(v2d->flag & V2D_VIEWSYNC_X)
 		WM_event_add_notifier(C, WM_NOTE_TIMELINE_SYNC, V2D_LOCK_COPY, v2d);
 }
@@ -1027,7 +1029,7 @@
 	UI_view2d_curRect_validate(v2d);
 	
 	/* request updates to be done... */
-	WM_event_add_notifier(C, WM_NOTE_AREA_REDRAW, 0, NULL);
+	ED_area_tag_redraw(C->area);
 	if(v2d->flag & V2D_VIEWSYNC_X)
 		WM_event_add_notifier(C, WM_NOTE_TIMELINE_SYNC, V2D_LOCK_COPY, v2d);
 }

Modified: branches/blender2.5/blender/source/blender/editors/screen/area.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/screen/area.c	2008-12-16 11:26:55 UTC (rev 17889)
+++ branches/blender2.5/blender/source/blender/editors/screen/area.c	2008-12-16 12:28:00 UTC (rev 17890)
@@ -108,11 +108,9 @@
 	/* generic notes first */
 	switch(note->type) {
 		case WM_NOTE_WINDOW_REDRAW:
-		case WM_NOTE_AREA_REDRAW:
-		case WM_NOTE_REGION_REDRAW:
 		case WM_NOTE_GESTURE_REDRAW:
 		case WM_NOTE_SCREEN_CHANGED:
-			ar->do_draw= 1;
+			ED_region_tag_redraw(ar);
 			break;
 		default:
 			if(ar->type->listener)
@@ -175,6 +173,26 @@
 	ar->do_draw= 0;
 }
 
+/* **********************************
+   maybe silly, but let's try for now
+   to keep do_draw tags protected
+   ********************************** */
+
+void ED_region_tag_redraw(ARegion *ar)
+{
+	ar->do_draw= 1;
+}
+
+void ED_area_tag_redraw(ScrArea *sa)
+{
+	ARegion *ar;
+	
+	for(ar= sa->regionbase.first; ar; ar= ar->next)
+		ar->do_draw= 1;
+}
+
+
+
 /* *************************************************************** */
 
 /* dir is direction to check, not the splitting edge direction! */
@@ -489,7 +507,7 @@
 /* *********** Space switching code, local now *********** */
 /* XXX make operator for this */
 
-static void newspace(bContext *C, ScrArea *sa, int type)
+static void area_newspace(bContext *C, ScrArea *sa, int type)
 {
 	if(sa->spacetype != type) {
 		SpaceType *st;
@@ -538,11 +556,11 @@
 				slold->regionbase= sa->regionbase;
 				sa->regionbase= sl->regionbase;
 				sl->regionbase.first= sl->regionbase.last= NULL;
-				
-				ED_area_initialize(C->wm, C->window, sa);
 			}
 		}
 		
+		ED_area_initialize(C->wm, C->window, sa);
+		
 		/* tell WM to refresh, cursor types etc */
 		WM_event_add_mousemove(C);
 	}
@@ -588,8 +606,8 @@
 
 static void spacefunc(struct bContext *C, void *arg1, void *arg2)
 {
-	newspace(C, C->area, C->area->butspacetype);
-	WM_event_add_notifier(C, WM_NOTE_SCREEN_CHANGED, 0, NULL);
+	area_newspace(C, C->area, C->area->butspacetype);
+	ED_area_tag_redraw(C->area);
 }
 
 /* returns offset for next button in header */

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-16 11:26:55 UTC (rev 17889)
+++ branches/blender2.5/blender/source/blender/editors/screen/screen_edit.c	2008-12-16 12:28:00 UTC (rev 17890)
@@ -924,7 +924,7 @@
 	}
 }
 
-
+/* only for edge lines between areas, and the blended join arrows */
 void ED_screen_draw(wmWindow *win)
 {
 	ScrArea *sa;
@@ -1010,6 +1010,9 @@
 	}
 }
 
+
+/* *********** exit calls are for closing running stuff ******** */
+
 void ED_region_exit(bContext *C, ARegion *ar)
 {
 	ARegion *prevar= C->region;
@@ -1110,7 +1113,7 @@
 				if(do_draw) {
 					for(ar= sa->regionbase.first; ar; ar= ar->next)
 						if(ar->regiontype==RGN_TYPE_HEADER)
-							ar->do_draw= 1; /* XXX */
+							ED_region_tag_redraw(ar);
 				}
 			}
 		}


@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list