[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [56763] trunk/blender/source/blender: Fix #35337: sculpt performance regression, partial redraw was not working anymore

Brecht Van Lommel brechtvanlommel at pandora.be
Mon May 13 15:32:42 CEST 2013


Revision: 56763
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=56763
Author:   blendix
Date:     2013-05-13 13:32:42 +0000 (Mon, 13 May 2013)
Log Message:
-----------
Fix #35337: sculpt performance regression, partial redraw was not working anymore
due to paint cursor redraw problem.

Modified Paths:
--------------
    trunk/blender/source/blender/editors/screen/area.c
    trunk/blender/source/blender/editors/sculpt_paint/paint_stroke.c
    trunk/blender/source/blender/windowmanager/WM_api.h
    trunk/blender/source/blender/windowmanager/intern/wm_draw.c
    trunk/blender/source/blender/windowmanager/intern/wm_event_system.c

Modified: trunk/blender/source/blender/editors/screen/area.c
===================================================================
--- trunk/blender/source/blender/editors/screen/area.c	2013-05-13 12:58:25 UTC (rev 56762)
+++ trunk/blender/source/blender/editors/screen/area.c	2013-05-13 13:32:42 UTC (rev 56763)
@@ -454,6 +454,14 @@
 
 	ED_region_draw_cb_draw(C, ar, REGION_DRAW_POST_PIXEL);
 
+	/* for debugging unneeded area redraws and partial redraw */
+#if 0
+	glEnable(GL_BLEND);
+	glColor4f(drand48(), drand48(), drand48(), 0.1f);
+	glRectf(ar->drawrct.xmin - 1, ar->drawrct.ymin - 1, ar->drawrct.xmax + 1, ar->drawrct.ymax + 1);
+	glDisable(GL_BLEND);
+#endif
+
 	ar->do_draw = FALSE;
 	memset(&ar->drawrct, 0, sizeof(ar->drawrct));
 	

Modified: trunk/blender/source/blender/editors/sculpt_paint/paint_stroke.c
===================================================================
--- trunk/blender/source/blender/editors/sculpt_paint/paint_stroke.c	2013-05-13 12:58:25 UTC (rev 56762)
+++ trunk/blender/source/blender/editors/sculpt_paint/paint_stroke.c	2013-05-13 13:32:42 UTC (rev 56763)
@@ -255,6 +255,7 @@
 static void paint_brush_stroke_add_step(bContext *C, wmOperator *op, const wmEvent *event, const float mouse_in[2])
 {
 	Scene *scene = CTX_data_scene(C);
+	wmWindow *window = CTX_wm_window(C);
 	ARegion *ar = CTX_wm_region(C);
 	Paint *paint = BKE_paint_get_active_from_context(C);
 	PaintMode mode = BKE_paintmode_get_active_from_context(C);
@@ -328,7 +329,7 @@
 
 	/* always redraw region if brush is shown */
 	if (ar && (paint->flags & PAINT_SHOW_BRUSH))
-		ED_region_tag_redraw(ar);
+		WM_paint_cursor_tag_redraw(window, ar);
 }
 
 /* Returns zero if no sculpt changes should be made, non-zero otherwise */

Modified: trunk/blender/source/blender/windowmanager/WM_api.h
===================================================================
--- trunk/blender/source/blender/windowmanager/WM_api.h	2013-05-13 12:58:25 UTC (rev 56762)
+++ trunk/blender/source/blender/windowmanager/WM_api.h	2013-05-13 13:32:42 UTC (rev 56763)
@@ -63,6 +63,7 @@
 struct wmDrag;
 struct ImBuf;
 struct ImageFormatData;
+struct ARegion;
 
 typedef struct wmJob wmJob;
 
@@ -130,6 +131,7 @@
                                       void *customdata);
 
 void		WM_paint_cursor_end(struct wmWindowManager *wm, void *handle);
+void		WM_paint_cursor_tag_redraw(struct wmWindow *win, struct ARegion *ar);
 
 void		WM_cursor_warp		(struct wmWindow *win, int x, int y);
 float		WM_cursor_pressure	(const struct wmWindow *win);

Modified: trunk/blender/source/blender/windowmanager/intern/wm_draw.c
===================================================================
--- trunk/blender/source/blender/windowmanager/intern/wm_draw.c	2013-05-13 12:58:25 UTC (rev 56762)
+++ trunk/blender/source/blender/windowmanager/intern/wm_draw.c	2013-05-13 13:32:42 UTC (rev 56763)
@@ -798,6 +798,12 @@
 	}
 }
 
+void WM_paint_cursor_tag_redraw(wmWindow *win, ARegion *ar)
+{
+	win->screen->do_draw_paintcursor = TRUE;
+	wm_tag_redraw_overlay(win, ar);
+}
+
 void wm_draw_update(bContext *C)
 {
 	wmWindowManager *wm = CTX_wm_manager(C);

Modified: trunk/blender/source/blender/windowmanager/intern/wm_event_system.c
===================================================================
--- trunk/blender/source/blender/windowmanager/intern/wm_event_system.c	2013-05-13 12:58:25 UTC (rev 56762)
+++ trunk/blender/source/blender/windowmanager/intern/wm_event_system.c	2013-05-13 13:32:42 UTC (rev 56763)
@@ -2002,8 +2002,7 @@
 		for (; pc; pc = pc->next) {
 			if (pc->poll == NULL || pc->poll(C)) {
 				wmWindow *win = CTX_wm_window(C);
-				win->screen->do_draw_paintcursor = TRUE;
-				wm_tag_redraw_overlay(win, ar);
+				WM_paint_cursor_tag_redraw(win, ar);
 			}
 		}
 	}




More information about the Bf-blender-cvs mailing list