change BLO_library_append_begin to take a main argument rather then a context, means...
authorCampbell Barton <ideasman42@gmail.com>
Fri, 5 Aug 2011 05:26:19 +0000 (05:26 +0000)
committerCampbell Barton <ideasman42@gmail.com>
Fri, 5 Aug 2011 05:26:19 +0000 (05:26 +0000)
added doxygen description too.

this quiets the print when the BGE does linking.

source/blender/blenloader/BLO_readfile.h
source/blender/blenloader/intern/readfile.c
source/blender/python/intern/bpy_library.c
source/blender/windowmanager/intern/wm_operators.c
source/gameengine/Converter/KX_BlenderSceneConverter.cpp

index 85d4b936c518fc6f47eb66611b726cbb574b14cd..479314777284ac5639c098c919f00f844dff0cd8 100644 (file)
@@ -211,7 +211,16 @@ int BLO_has_bfile_extension(char *str);
  */
 int BLO_is_a_library(const char *path, char *dir, char *group);
 
-struct Main* BLO_library_append_begin(const struct bContext *C, BlendHandle** bh, const char *filepath);
+
+/**
+ * Initialize the BlendHandle for appending or linking library data.
+ *
+ * @param mainvar The current main database eg G.main or CTX_data_main(C).
+ * @param bh A blender file handle as returned by BLO_blendhandle_from_file or BLO_blendhandle_from_memory.
+ * @param filepath Used for relative linking, copied to the lib->name
+ * @return the library Main, to be passed to BLO_library_append_named_part as mainl.
+ */
+struct Main* BLO_library_append_begin(struct Main *mainvar, BlendHandle** bh, const char *filepath);
 
 
 /**
@@ -243,11 +252,6 @@ void BLO_library_append_end(const struct bContext *C, struct Main *mainl, BlendH
 
 void *BLO_library_read_struct(struct FileData *fd, struct BHead *bh, const char *blockname);
 
-/* deprecated */
-#if 1
-void BLO_script_library_append(BlendHandle **bh, char *dir, char *name, int idcode, short flag, struct Main *mainvar, struct Scene *scene, struct ReportList *reports);
-#endif
-
 BlendFileData* blo_read_blendafterruntime(int file, char *name, int actualsize, struct ReportList *reports);
 
 #ifdef __cplusplus
index d60ac492f975a7c311b8268ca719566163f3f3ff..44c8ca97be9d4d99373df0217024882d90225521 100644 (file)
@@ -12975,9 +12975,8 @@ static void append_id_part(FileData *fd, Main *mainvar, ID *id, ID **id_r)
 
 /* common routine to append/link something from a library */
 
-static Main* library_append_begin(const bContext *C, FileData **fd, const char *filepath)
+static Main* library_append_begin(Main *mainvar, FileData **fd, const char *filepath)
 {
-       Main *mainvar= CTX_data_main(C);
        Main *mainl;
 
        /* make mains */
@@ -12993,10 +12992,10 @@ static Main* library_append_begin(const bContext *C, FileData **fd, const char *
        return mainl;
 }
 
-Main* BLO_library_append_begin(const bContext *C, BlendHandle** bh, const char *filepath)
+Main* BLO_library_append_begin(Main *mainvar, BlendHandle** bh, const char *filepath)
 {
        FileData *fd= (FileData*)(*bh);
-       return library_append_begin(C, &fd, filepath);
+       return library_append_begin(mainvar, &fd, filepath);
 }
 
 
index 85bffb5a8cc056196c531fb6615d2c1de41cdbf8..4ce3e0356e27600ef00f1cb9fb79fdc9e951cb40 100644 (file)
@@ -39,6 +39,7 @@
 #include "BKE_library.h"
 #include "BKE_idcode.h"
 #include "BKE_report.h"
+#include "BKE_context.h"
 
 #include "BLI_utildefines.h"
 #include "BLI_string.h"
@@ -317,7 +318,7 @@ static PyObject *bpy_lib_exit(BPy_Library *self, PyObject *UNUSED(args))
        flag_all_listbases_ids(LIB_PRE_EXISTING, 1);
 
        /* here appending/linking starts */
-       mainl= BLO_library_append_begin(BPy_GetContext(), &(self->blo_handle), self->relpath);
+       mainl= BLO_library_append_begin(CTX_data_main(BPy_GetContext()), &(self->blo_handle), self->relpath);
 
        {
                int i= 0, code;
index a47dfacf3586f6a38e4c016ccfca1f78fb2627ee..5a05be0fefc0a19c56cc2ce31eb0e1b151aa3bad 100644 (file)
@@ -1690,7 +1690,7 @@ static int wm_link_append_exec(bContext *C, wmOperator *op)
        flag_all_listbases_ids(LIB_PRE_EXISTING, 1);
 
        /* here appending/linking starts */
-       mainl = BLO_library_append_begin(C, &bh, libname);
+       mainl = BLO_library_append_begin(bmain, &bh, libname);
        if(totfiles == 0) {
                BLO_library_append_named_part_ex(C, mainl, &bh, name, idcode, flag);
        }
index 58089cc4b2d2503cba979ec0cbaa4bf8280eb4c7..b04a0d24e7820b265ba08d4f57a773ff0f42feb4 100644 (file)
@@ -950,7 +950,6 @@ bool KX_BlenderSceneConverter::LinkBlendFilePath(const char *path, char *group,
 
 bool KX_BlenderSceneConverter::LinkBlendFile(BlendHandle *bpy_openlib, const char *path, char *group, KX_Scene *scene_merge, char **err_str, short options)
 {
-       bContext *C;
        Main *main_newlib; /* stored as a dynamic 'main' until we free it */
        Main *main_tmp= NULL; /* created only for linking, then freed */
        LinkNode *names = NULL;
@@ -981,12 +980,10 @@ bool KX_BlenderSceneConverter::LinkBlendFile(BlendHandle *bpy_openlib, const cha
        }
        
        main_newlib= (Main *)MEM_callocN( sizeof(Main), "BgeMain");
-       C= CTX_create();
-       CTX_data_main_set(C, main_newlib);
        BKE_reports_init(&reports, RPT_STORE);  
 
        /* here appending/linking starts */
-       main_tmp = BLO_library_append_begin(C, &bpy_openlib, (char *)path);
+       main_tmp = BLO_library_append_begin(main_newlib, &bpy_openlib, (char *)path);
 
        int totnames_dummy;
        names = BLO_blendhandle_get_datablock_names( bpy_openlib, idcode, &totnames_dummy);
@@ -1000,11 +997,11 @@ bool KX_BlenderSceneConverter::LinkBlendFile(BlendHandle *bpy_openlib, const cha
        }
        BLI_linklist_free(names, free); /* free linklist *and* each node's data */
        
-       BLO_library_append_end(C, main_tmp, &bpy_openlib, idcode, flag);
+       BLO_library_append_end(NULL, main_tmp, &bpy_openlib, idcode, flag);
 
        /* now do another round of linking for Scenes so all actions are properly loaded */
        if (idcode==ID_SCE && options & LIB_LOAD_LOAD_ACTIONS) {
-               main_tmp = BLO_library_append_begin(C, &bpy_openlib, (char *)path);
+               main_tmp = BLO_library_append_begin(main_newlib, &bpy_openlib, (char *)path);
 
                int totnames_dummy;
                names = BLO_blendhandle_get_datablock_names( bpy_openlib, ID_AC, &totnames_dummy);
@@ -1018,12 +1015,11 @@ bool KX_BlenderSceneConverter::LinkBlendFile(BlendHandle *bpy_openlib, const cha
                }
                BLI_linklist_free(names, free); /* free linklist *and* each node's data */
        
-               BLO_library_append_end(C, main_tmp, &bpy_openlib, ID_AC, flag);
+               BLO_library_append_end(NULL, main_tmp, &bpy_openlib, ID_AC, flag);
        }
        
        BLO_blendhandle_close(bpy_openlib);
-       
-       CTX_free(C);
+
        BKE_reports_clear(&reports);
        /* done linking */