[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [57714] trunk/blender/source/blender: Fix unnecessary 3D viewport redraws in various cases, in particular when editing

Brecht Van Lommel brechtvanlommel at pandora.be
Tue Jun 25 00:41:33 CEST 2013


Revision: 57714
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=57714
Author:   blendix
Date:     2013-06-24 22:41:33 +0000 (Mon, 24 Jun 2013)
Log Message:
-----------
Fix unnecessary 3D viewport redraws in various cases, in particular when editing
node materials.

Area and region listener callbacks now get the screen and area pointers passed, so
they can do more fine grained checks to see if redraw is really needed, for example
depending on the 3D view drawtype.

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/BKE_screen.h
    trunk/blender/source/blender/editors/include/ED_screen.h
    trunk/blender/source/blender/editors/interface/interface_templates.c
    trunk/blender/source/blender/editors/screen/area.c
    trunk/blender/source/blender/editors/space_action/space_action.c
    trunk/blender/source/blender/editors/space_buttons/space_buttons.c
    trunk/blender/source/blender/editors/space_clip/space_clip.c
    trunk/blender/source/blender/editors/space_console/space_console.c
    trunk/blender/source/blender/editors/space_file/space_file.c
    trunk/blender/source/blender/editors/space_graph/space_graph.c
    trunk/blender/source/blender/editors/space_image/space_image.c
    trunk/blender/source/blender/editors/space_info/space_info.c
    trunk/blender/source/blender/editors/space_logic/space_logic.c
    trunk/blender/source/blender/editors/space_nla/space_nla.c
    trunk/blender/source/blender/editors/space_node/node_draw.c
    trunk/blender/source/blender/editors/space_node/space_node.c
    trunk/blender/source/blender/editors/space_outliner/space_outliner.c
    trunk/blender/source/blender/editors/space_script/space_script.c
    trunk/blender/source/blender/editors/space_sequencer/space_sequencer.c
    trunk/blender/source/blender/editors/space_text/space_text.c
    trunk/blender/source/blender/editors/space_time/space_time.c
    trunk/blender/source/blender/editors/space_userpref/space_userpref.c
    trunk/blender/source/blender/editors/space_view3d/space_view3d.c
    trunk/blender/source/blender/makesrna/intern/rna_material.c
    trunk/blender/source/blender/windowmanager/WM_types.h
    trunk/blender/source/blender/windowmanager/intern/wm_event_system.c

Modified: trunk/blender/source/blender/blenkernel/BKE_screen.h
===================================================================
--- trunk/blender/source/blender/blenkernel/BKE_screen.h	2013-06-24 22:41:27 UTC (rev 57713)
+++ trunk/blender/source/blender/blenkernel/BKE_screen.h	2013-06-24 22:41:33 UTC (rev 57714)
@@ -78,7 +78,7 @@
 	/* exit is called when the area is hidden or removed */
 	void (*exit)(struct wmWindowManager *, struct ScrArea *);
 	/* Listeners can react to bContext changes */
-	void (*listener)(struct ScrArea *, struct wmNotifier *);
+	void (*listener)(struct bScreen *sc, struct ScrArea *, struct wmNotifier *);
 	
 	/* refresh context, called after filereads, ED_area_tag_refresh() */
 	void (*refresh)(const struct bContext *, struct ScrArea *);
@@ -123,7 +123,7 @@
 	/* draw entirely, view changes should be handled here */
 	void (*draw)(const struct bContext *, struct ARegion *);
 	/* contextual changes should be handled here */
-	void (*listener)(struct ARegion *, struct wmNotifier *);
+	void (*listener)(struct bScreen *sc, struct ScrArea *, struct ARegion *, struct wmNotifier *);
 	
 	void (*free)(struct ARegion *);
 

Modified: trunk/blender/source/blender/editors/include/ED_screen.h
===================================================================
--- trunk/blender/source/blender/editors/include/ED_screen.h	2013-06-24 22:41:27 UTC (rev 57713)
+++ trunk/blender/source/blender/editors/include/ED_screen.h	2013-06-24 22:41:33 UTC (rev 57714)
@@ -50,7 +50,7 @@
 struct rcti;
 
 /* regions */
-void    ED_region_do_listen(struct ARegion *ar, struct wmNotifier *note);
+void    ED_region_do_listen(struct bScreen *sc, struct ScrArea *sa, struct ARegion *ar, struct wmNotifier *note);
 void    ED_region_do_draw(struct bContext *C, struct ARegion *ar);
 void    ED_region_exit(struct bContext *C, struct ARegion *ar);
 void    ED_region_pixelspace(struct ARegion *ar);
@@ -80,7 +80,7 @@
 void    ED_area_initialize(struct wmWindowManager *wm, struct wmWindow *win, struct ScrArea *sa);
 void    ED_area_exit(struct bContext *C, struct ScrArea *sa);
 int     ED_screen_area_active(const struct bContext *C);
-void    ED_area_do_listen(ScrArea *sa, struct wmNotifier *note);
+void    ED_area_do_listen(struct bScreen *sc, ScrArea *sa, struct wmNotifier *note);
 void    ED_area_tag_redraw(ScrArea *sa);
 void    ED_area_tag_redraw_regiontype(ScrArea *sa, int type);
 void    ED_area_tag_refresh(ScrArea *sa);

Modified: trunk/blender/source/blender/editors/interface/interface_templates.c
===================================================================
--- trunk/blender/source/blender/editors/interface/interface_templates.c	2013-06-24 22:41:27 UTC (rev 57713)
+++ trunk/blender/source/blender/editors/interface/interface_templates.c	2013-06-24 22:41:33 UTC (rev 57714)
@@ -1284,7 +1284,7 @@
 {
 	switch (event) {
 		case B_MATPRV:
-			WM_event_add_notifier(C, NC_MATERIAL | ND_SHADING, arg);
+			WM_event_add_notifier(C, NC_MATERIAL | ND_SHADING_PREVIEW, arg);
 			break;
 	}
 }

Modified: trunk/blender/source/blender/editors/screen/area.c
===================================================================
--- trunk/blender/source/blender/editors/screen/area.c	2013-06-24 22:41:27 UTC (rev 57713)
+++ trunk/blender/source/blender/editors/screen/area.c	2013-06-24 22:41:33 UTC (rev 57714)
@@ -116,7 +116,7 @@
 }
 
 /* only exported for WM */
-void ED_region_do_listen(ARegion *ar, wmNotifier *note)
+void ED_region_do_listen(bScreen *sc, ScrArea *sa, ARegion *ar, wmNotifier *note)
 {
 	/* generic notes first */
 	switch (note->category) {
@@ -130,15 +130,15 @@
 	}
 
 	if (ar->type && ar->type->listener)
-		ar->type->listener(ar, note);
+		ar->type->listener(sc, sa, ar, note);
 }
 
 /* only exported for WM */
-void ED_area_do_listen(ScrArea *sa, wmNotifier *note)
+void ED_area_do_listen(bScreen *sc, ScrArea *sa, wmNotifier *note)
 {
 	/* no generic notes? */
 	if (sa->type && sa->type->listener) {
-		sa->type->listener(sa, note);
+		sa->type->listener(sc, sa, note);
 	}
 }
 

Modified: trunk/blender/source/blender/editors/space_action/space_action.c
===================================================================
--- trunk/blender/source/blender/editors/space_action/space_action.c	2013-06-24 22:41:27 UTC (rev 57713)
+++ trunk/blender/source/blender/editors/space_action/space_action.c	2013-06-24 22:41:33 UTC (rev 57714)
@@ -269,7 +269,7 @@
 	ED_region_header(C, ar);
 }
 
-static void action_channel_area_listener(ARegion *ar, wmNotifier *wmn)
+static void action_channel_area_listener(bScreen *UNUSED(sc), ScrArea *UNUSED(sa), ARegion *ar, wmNotifier *wmn)
 {
 	/* context changes */
 	switch (wmn->category) {
@@ -307,7 +307,7 @@
 	}
 }
 
-static void action_main_area_listener(ARegion *ar, wmNotifier *wmn)
+static void action_main_area_listener(bScreen *UNUSED(sc), ScrArea *UNUSED(sa), ARegion *ar, wmNotifier *wmn)
 {
 	/* context changes */
 	switch (wmn->category) {
@@ -355,7 +355,7 @@
 }
 
 /* editor level listener */
-static void action_listener(ScrArea *sa, wmNotifier *wmn)
+static void action_listener(bScreen *UNUSED(sc), ScrArea *sa, wmNotifier *wmn)
 {
 	SpaceAction *saction = (SpaceAction *)sa->spacedata.first;
 	
@@ -448,7 +448,7 @@
 	}
 }
 
-static void action_header_area_listener(ARegion *ar, wmNotifier *wmn)
+static void action_header_area_listener(bScreen *UNUSED(sc), ScrArea *UNUSED(sa), ARegion *ar, wmNotifier *wmn)
 {
 	/* context changes */
 	switch (wmn->category) {

Modified: trunk/blender/source/blender/editors/space_buttons/space_buttons.c
===================================================================
--- trunk/blender/source/blender/editors/space_buttons/space_buttons.c	2013-06-24 22:41:27 UTC (rev 57713)
+++ trunk/blender/source/blender/editors/space_buttons/space_buttons.c	2013-06-24 22:41:33 UTC (rev 57714)
@@ -225,7 +225,7 @@
 }
 
 /* reused! */
-static void buttons_area_listener(ScrArea *sa, wmNotifier *wmn)
+static void buttons_area_listener(bScreen *UNUSED(sc), ScrArea *sa, wmNotifier *wmn)
 {
 	SpaceButs *sbuts = sa->spacedata.first;
 
@@ -295,6 +295,7 @@
 				case ND_SHADING:
 				case ND_SHADING_DRAW:
 				case ND_SHADING_LINKS:
+				case ND_SHADING_PREVIEW:
 					/* currently works by redraws... if preview is set, it (re)starts job */
 					sbuts->preview = 1;
 					break;
@@ -318,6 +319,7 @@
 				case ND_SHADING:
 				case ND_SHADING_DRAW:
 				case ND_SHADING_LINKS:
+				case ND_SHADING_PREVIEW:
 				case ND_NODES:
 					/* currently works by redraws... if preview is set, it (re)starts job */
 					sbuts->preview = 1;

Modified: trunk/blender/source/blender/editors/space_clip/space_clip.c
===================================================================
--- trunk/blender/source/blender/editors/space_clip/space_clip.c	2013-06-24 22:41:27 UTC (rev 57713)
+++ trunk/blender/source/blender/editors/space_clip/space_clip.c	2013-06-24 22:41:33 UTC (rev 57714)
@@ -340,7 +340,7 @@
 	return (SpaceLink *)scn;
 }
 
-static void clip_listener(ScrArea *sa, wmNotifier *wmn)
+static void clip_listener(bScreen *UNUSED(sc), ScrArea *sa, wmNotifier *wmn)
 {
 	/* context changes */
 	switch (wmn->category) {
@@ -1174,7 +1174,7 @@
 	}
 }
 
-static void clip_main_area_listener(ARegion *ar, wmNotifier *wmn)
+static void clip_main_area_listener(bScreen *UNUSED(sc), ScrArea *UNUSED(sa), ARegion *ar, wmNotifier *wmn)
 {
 	/* context changes */
 	switch (wmn->category) {
@@ -1283,7 +1283,7 @@
 		dopesheet_area_draw(C, ar);
 }
 
-static void clip_preview_area_listener(ARegion *UNUSED(ar), wmNotifier *UNUSED(wmn))
+static void clip_preview_area_listener(bScreen *UNUSED(sc), ScrArea *UNUSED(sa), ARegion *UNUSED(ar), wmNotifier *UNUSED(wmn))
 {
 }
 
@@ -1324,7 +1324,7 @@
 	UI_view2d_view_restore(C);
 }
 
-static void clip_channels_area_listener(ARegion *UNUSED(ar), wmNotifier *UNUSED(wmn))
+static void clip_channels_area_listener(bScreen *UNUSED(sc), ScrArea *UNUSED(sa), ARegion *UNUSED(ar), wmNotifier *UNUSED(wmn))
 {
 }
 
@@ -1341,7 +1341,7 @@
 	ED_region_header(C, ar);
 }
 
-static void clip_header_area_listener(ARegion *ar, wmNotifier *wmn)
+static void clip_header_area_listener(bScreen *UNUSED(sc), ScrArea *UNUSED(sa), ARegion *ar, wmNotifier *wmn)
 {
 	/* context changes */
 	switch (wmn->category) {
@@ -1381,7 +1381,7 @@
 
 /****************** tool properties region ******************/
 
-static void clip_props_area_listener(ARegion *ar, wmNotifier *wmn)
+static void clip_props_area_listener(bScreen *UNUSED(sc), ScrArea *UNUSED(sa), ARegion *ar, wmNotifier *wmn)
 {
 	/* context changes */
 	switch (wmn->category) {
@@ -1426,7 +1426,7 @@
 	ED_region_panels(C, ar, 1, NULL, -1);
 }
 
-static void clip_properties_area_listener(ARegion *ar, wmNotifier *wmn)
+static void clip_properties_area_listener(bScreen *UNUSED(sc), ScrArea *UNUSED(sa), ARegion *ar, wmNotifier *wmn)
 {
 	/* context changes */
 	switch (wmn->category) {

Modified: trunk/blender/source/blender/editors/space_console/space_console.c
===================================================================
--- trunk/blender/source/blender/editors/space_console/space_console.c	2013-06-24 22:41:27 UTC (rev 57713)
+++ trunk/blender/source/blender/editors/space_console/space_console.c	2013-06-24 22:41:33 UTC (rev 57714)
@@ -359,7 +359,7 @@
 	ED_region_header(C, ar);
 }
 
-static void console_main_area_listener(ARegion *ar, wmNotifier *wmn)
+static void console_main_area_listener(bScreen *UNUSED(sc), ScrArea *UNUSED(sa), ARegion *ar, wmNotifier *wmn)
 {
 	// SpaceInfo *sinfo = sa->spacedata.first;
 

Modified: trunk/blender/source/blender/editors/space_file/space_file.c
===================================================================
--- trunk/blender/source/blender/editors/space_file/space_file.c	2013-06-24 22:41:27 UTC (rev 57713)
+++ trunk/blender/source/blender/editors/space_file/space_file.c	2013-06-24 22:41:33 UTC (rev 57714)
@@ -255,7 +255,7 @@
 
 }
 
-static void file_listener(ScrArea *sa, wmNotifier *wmn)
+static void file_listener(bScreen *UNUSED(sc), ScrArea *sa, wmNotifier *wmn)
 {
 	/* SpaceFile *sfile = (SpaceFile *)sa->spacedata.first; */
 
@@ -291,7 +291,7 @@
 	WM_event_add_keymap_handler_bb(&ar->handlers, keymap, &ar->v2d.mask, &ar->winrct);
 }
 
-static void file_main_area_listener(ARegion *ar, wmNotifier *wmn)
+static void file_main_area_listener(bScreen *UNUSED(sc), ScrArea *UNUSED(sa), ARegion *ar, wmNotifier *wmn)
 {
 	/* context changes */
 	switch (wmn->category) {
@@ -500,7 +500,7 @@
 	ED_region_panels(C, ar, 1, NULL, -1);
 }
 

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list