[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