[Bf-blender-cvs] [689b52bf6a3] topbar: Clarify region size refreshing code in ED_screen_ensure_updated

Julian Eisel noreply at git.blender.org
Sat Oct 21 16:06:23 CEST 2017


Commit: 689b52bf6a37cbfdf826cd3885a9520f37ffb083
Author: Julian Eisel
Date:   Sat Oct 21 16:05:02 2017 +0200
Branches: topbar
https://developer.blender.org/rB689b52bf6a37cbfdf826cd3885a9520f37ffb083

Clarify region size refreshing code in ED_screen_ensure_updated

===================================================================

M	source/blender/editors/screen/screen_edit.c

===================================================================

diff --git a/source/blender/editors/screen/screen_edit.c b/source/blender/editors/screen/screen_edit.c
index 6544d42f6a8..a08ed449e25 100644
--- a/source/blender/editors/screen/screen_edit.c
+++ b/source/blender/editors/screen/screen_edit.c
@@ -811,6 +811,36 @@ void ED_screen_refresh(wmWindowManager *wm, wmWindow *win)
 	screen->context = ed_screen_context;
 }
 
+static bool screen_regions_need_size_refresh(
+        const wmWindow *win, const bScreen *screen)
+{
+	ED_screen_areas_iter(win, screen, area) {
+		if (area->flag & AREA_FLAG_REGION_SIZE_UPDATE) {
+			return true;
+		}
+	}
+
+	return false;
+}
+
+static void screen_refresh_region_sizes_only(
+        wmWindowManager *wm, wmWindow *win,
+        bScreen *screen)
+{
+	const int window_size_x = WM_window_pixels_x(win);
+	const int window_size_y = WM_window_pixels_y(win);
+	const int screen_size_x = WM_window_screen_pixels_x(win);
+	const int screen_size_y = WM_window_screen_pixels_y(win);
+
+	screen_vertices_scale(win, screen, window_size_x, window_size_y, screen_size_x, screen_size_y);
+
+	ED_screen_areas_iter(win, screen, area) {
+		screen_area_update_region_sizes(wm, win, area);
+		/* XXX hack to force drawing */
+		ED_area_tag_redraw(area);
+	}
+}
+
 /* file read, set all screens, ... */
 void ED_screens_initialize(wmWindowManager *wm)
 {
@@ -830,29 +860,8 @@ void ED_screen_ensure_updated(wmWindowManager *wm, wmWindow *win, bScreen *scree
 	if (screen->do_refresh) {
 		ED_screen_refresh(wm, win);
 	}
-	else {
-		const int window_size_x = WM_window_pixels_x(win);
-		const int window_size_y = WM_window_pixels_y(win);
-		const int screen_size_x = WM_window_screen_pixels_x(win);
-		const int screen_size_y = WM_window_screen_pixels_y(win);
-		bool has_updated = false;
-
-		screen_vertices_scale(win, screen, window_size_x, window_size_y, screen_size_x, screen_size_y);
-
-		ED_screen_areas_iter(win, screen, area) {
-			if (area->flag & AREA_FLAG_REGION_SIZE_UPDATE) {
-				has_updated = true;
-				break;
-			}
-		}
-
-		if (has_updated) {
-			ED_screen_areas_iter(win, screen, area) {
-				screen_area_update_region_sizes(wm, win, area);
-				/* XXX hack to force drawing */
-				ED_area_tag_redraw(area);
-			}
-		}
+	else if (screen_regions_need_size_refresh(win, screen)) {
+		screen_refresh_region_sizes_only(wm, win, screen);
 	}
 }



More information about the Bf-blender-cvs mailing list