[Bf-blender-cvs] [1c9c25e5ae1] topbar: Cleanup: Avoid duplicated topbar creation code in versioning code

Julian Eisel noreply at git.blender.org
Mon Oct 23 03:05:06 CEST 2017


Commit: 1c9c25e5ae177bfd44fb314a0dec54ff61af6874
Author: Julian Eisel
Date:   Mon Oct 23 03:04:24 2017 +0200
Branches: topbar
https://developer.blender.org/rB1c9c25e5ae177bfd44fb314a0dec54ff61af6874

Cleanup: Avoid duplicated topbar creation code in versioning code

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

M	source/blender/blenloader/intern/versioning_280.c
M	source/blender/editors/include/ED_screen.h
M	source/blender/editors/screen/screen_edit.c
M	source/blenderplayer/bad_level_call_stubs/stubs.c

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

diff --git a/source/blender/blenloader/intern/versioning_280.c b/source/blender/blenloader/intern/versioning_280.c
index a204f9fe6d3..e51c790dbcd 100644
--- a/source/blender/blenloader/intern/versioning_280.c
+++ b/source/blender/blenloader/intern/versioning_280.c
@@ -332,34 +332,14 @@ void do_versions_after_linking_280(Main *main)
 	}
 
 	if (!MAIN_VERSION_ATLEAST(main, 280, 2)) {
-		const short size_y = 2 * HEADERY;
+		/* Avoid including ED_ stuff here. */
+		extern void ED_screen_global_topbar_area_create(const struct bContext *, wmWindow *, const bScreen *);
 
 		for (wmWindowManager *wm = main->wm.first; wm; wm = wm->id.next) {
 			for (wmWindow *win = wm->windows.first; win; win = win->next) {
 				const bScreen *screen = BKE_workspace_active_screen_get(win->workspace_hook);
-
-				/* XXX duplicated from ED_screen_global_areas_create */
-				if (screen->temp == 0) {
-					ScrArea *sa = MEM_callocN(sizeof(*sa), "do version topbar area");
-					SpaceType *st = BKE_spacetype_from_id(SPACE_TOPBAR);
-					SpaceLink *sl = st->new(NULL); /* XXX passing NULL as context */
-
-					sa->v1 = MEM_callocN(sizeof(*sa->v1), "do_version topbar vert");
-					sa->v2 = MEM_callocN(sizeof(*sa->v2), "do_version topbar vert");
-					sa->v3 = MEM_callocN(sizeof(*sa->v3), "do_version topbar vert");
-					sa->v4 = MEM_callocN(sizeof(*sa->v4), "do_version topbar vert");
-					/* Actual coordinates of area verts are set later (screen_test_scale) */
-
-					sa->spacetype = sa->butspacetype = SPACE_TOPBAR;
-					sa->fixed_height = size_y;
-					sa->headertype = HEADERTOP;
-
-					BLI_addhead(&win->global_areas, sa);
-
-					BLI_addhead(&sa->spacedata, sl);
-					sa->regionbase = sl->regionbase;
-					BLI_listbase_clear(&sl->regionbase);
-				}
+				/* Not sure if passing NULL as context is so great... */
+				ED_screen_global_topbar_area_create(NULL, win, screen);
 			}
 		}
 
diff --git a/source/blender/editors/include/ED_screen.h b/source/blender/editors/include/ED_screen.h
index 55a5869c331..705154181a0 100644
--- a/source/blender/editors/include/ED_screen.h
+++ b/source/blender/editors/include/ED_screen.h
@@ -93,7 +93,13 @@ int     ED_area_header_switchbutton(const struct bContext *C, struct uiBlock *bl
 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_screen_global_areas_create(const struct bContext *C, struct wmWindow *win);
+void    ED_screen_global_topbar_area_create(
+            const struct bContext *C,
+            struct wmWindow *win,
+            const struct bScreen *screen);
+void    ED_screen_global_areas_create(
+            const struct bContext *C,
+            struct wmWindow *win);
 void    ED_area_do_listen(struct bScreen *sc, ScrArea *sa, struct wmNotifier *note, Scene *scene,
                           struct WorkSpace *workspace);
 void    ED_area_tag_redraw(ScrArea *sa);
diff --git a/source/blender/editors/screen/screen_edit.c b/source/blender/editors/screen/screen_edit.c
index a08ed449e25..0003d01df51 100644
--- a/source/blender/editors/screen/screen_edit.c
+++ b/source/blender/editors/screen/screen_edit.c
@@ -1100,15 +1100,13 @@ int ED_screen_area_active(const bContext *C)
 	return 0;
 }
 
-void ED_screen_global_areas_create(const bContext *C, wmWindow *win)
+void ED_screen_global_topbar_area_create(const bContext *C, wmWindow *win, const bScreen *screen)
 {
-	const bScreen *screen = BKE_workspace_active_screen_get(win->workspace_hook);
-	const short size_y = 2 * HEADERY;
-
 	if (screen->temp == 0) {
 		ScrArea *sa = MEM_callocN(sizeof(*sa), "top bar area");
 		SpaceType *st = BKE_spacetype_from_id(SPACE_TOPBAR);
 		SpaceLink *sl = st->new(C);
+		const short size_y = 2 * HEADERY;
 
 		sa->v1 = MEM_callocN(sizeof(*sa->v1), __func__);
 		sa->v2 = MEM_callocN(sizeof(*sa->v2), __func__);
@@ -1126,6 +1124,13 @@ void ED_screen_global_areas_create(const bContext *C, wmWindow *win)
 		sa->regionbase = sl->regionbase;
 		BLI_listbase_clear(&sl->regionbase);
 	}
+	/* Do not create more area types here! Function is called in versioning code (versioning_280.c). */
+}
+
+void ED_screen_global_areas_create(const bContext *C, wmWindow *win)
+{
+	const bScreen *screen = BKE_workspace_active_screen_get(win->workspace_hook);
+	ED_screen_global_topbar_area_create(C, win, screen);
 }
 
 
diff --git a/source/blenderplayer/bad_level_call_stubs/stubs.c b/source/blenderplayer/bad_level_call_stubs/stubs.c
index b7d8c08085c..d8ab6295f27 100644
--- a/source/blenderplayer/bad_level_call_stubs/stubs.c
+++ b/source/blenderplayer/bad_level_call_stubs/stubs.c
@@ -552,6 +552,7 @@ void ED_node_shader_default(const struct bContext *C, struct ID *id) RET_NONE
 void ED_screen_animation_timer_update(struct bScreen *screen, int redraws, int refresh) RET_NONE
 struct bScreen *ED_screen_animation_playing(const struct wmWindowManager *wm) RET_NULL
 struct Scene *ED_screen_scene_find(const struct bScreen *screen, const struct wmWindowManager *wm) RET_NULL
+void ED_screen_global_topbar_area_create(const struct bContext *C, struct wmWindow *win, const struct bScreen *screen) RET_NONE
 bool ED_scene_render_layer_delete(struct Main *bmain, Scene *scene, SceneLayer *layer, ReportList *reports) RET_ZERO
 void ED_base_object_select(struct BaseLegacy *base, short mode) RET_NONE
 void ED_object_base_select(struct Base *base, short mode) RET_NONE



More information about the Bf-blender-cvs mailing list