[Bf-blender-cvs] [992b8f6f5fc] master: Refactor: move Screen .blend data read to blenkernel

Jacques Lucke noreply at git.blender.org
Fri Nov 6 18:38:01 CET 2020


Commit: 992b8f6f5fce7f34139ad4acf4a2b74c0cf49185
Author: Jacques Lucke
Date:   Fri Nov 6 18:37:52 2020 +0100
Branches: master
https://developer.blender.org/rB992b8f6f5fce7f34139ad4acf4a2b74c0cf49185

Refactor: move Screen .blend data read to blenkernel

Ref T76372.

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

M	source/blender/blenkernel/BKE_screen.h
M	source/blender/blenkernel/intern/screen.c
M	source/blender/blenloader/intern/readfile.c

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

diff --git a/source/blender/blenkernel/BKE_screen.h b/source/blender/blenkernel/BKE_screen.h
index fd7f20d8839..7de276bb5fc 100644
--- a/source/blender/blenkernel/BKE_screen.h
+++ b/source/blender/blenkernel/BKE_screen.h
@@ -465,6 +465,7 @@ void BKE_screen_view3d_do_versions_250(struct View3D *v3d, ListBase *regions);
 void BKE_screen_area_blend_read_lib(struct BlendLibReader *reader,
                                     struct ID *parent_id,
                                     struct ScrArea *area);
+bool BKE_screen_blend_read_lib(struct BlendDataReader *reader, struct bScreen *screen);
 
 #ifdef __cplusplus
 }
diff --git a/source/blender/blenkernel/intern/screen.c b/source/blender/blenkernel/intern/screen.c
index 1b8360a1cec..d23dcfbb00a 100644
--- a/source/blender/blenkernel/intern/screen.c
+++ b/source/blender/blenkernel/intern/screen.c
@@ -254,6 +254,26 @@ static void screen_blend_write(BlendWriter *writer, ID *id, const void *id_addre
   }
 }
 
+/* Cannot use IDTypeInfo callback yet, because of the return value. */
+bool BKE_screen_blend_read_lib(BlendDataReader *reader, bScreen *screen)
+{
+  bool success = true;
+
+  screen->regionbase.first = screen->regionbase.last = NULL;
+  screen->context = NULL;
+  screen->active_region = NULL;
+
+  BLO_read_data_address(reader, &screen->preview);
+  BKE_previewimg_blend_read(reader, screen->preview);
+
+  if (!BKE_screen_area_map_blend_read_data(reader, AREAMAP_FROM_SCREEN(screen))) {
+    printf("Error reading Screen %s... removing it.\n", screen->id.name + 2);
+    success = false;
+  }
+
+  return success;
+}
+
 /* note: file read without screens option G_FILE_NO_UI;
  * check lib pointers in call below */
 static void screen_blend_read_lib(BlendLibReader *reader, ID *id)
diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c
index 02b419fc5fc..7c3baae5af5 100644
--- a/source/blender/blenloader/intern/readfile.c
+++ b/source/blender/blenloader/intern/readfile.c
@@ -3042,25 +3042,6 @@ void blo_lib_link_restore(Main *oldmain,
   BKE_main_idmap_destroy(id_map);
 }
 
-static bool direct_link_screen(BlendDataReader *reader, bScreen *screen)
-{
-  bool success = true;
-
-  screen->regionbase.first = screen->regionbase.last = NULL;
-  screen->context = NULL;
-  screen->active_region = NULL;
-
-  BLO_read_data_address(reader, &screen->preview);
-  BKE_previewimg_blend_read(reader, screen->preview);
-
-  if (!BKE_screen_area_map_blend_read_data(reader, AREAMAP_FROM_SCREEN(screen))) {
-    printf("Error reading Screen %s... removing it.\n", screen->id.name + 2);
-    success = false;
-  }
-
-  return success;
-}
-
 /** \} */
 
 /* -------------------------------------------------------------------- */
@@ -3305,7 +3286,7 @@ static bool direct_link_id(FileData *fd, Main *main, const int tag, ID *id, ID *
 
   switch (GS(id->name)) {
     case ID_SCR:
-      success = direct_link_screen(&reader, (bScreen *)id);
+      success = BKE_screen_blend_read_lib(&reader, (bScreen *)id);
       break;
     case ID_LI:
       direct_link_library(fd, (Library *)id, main);



More information about the Bf-blender-cvs mailing list