Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrecht Van Lommel <brechtvanlommel@pandora.be>2008-12-19 19:36:15 +0300
committerBrecht Van Lommel <brechtvanlommel@pandora.be>2008-12-19 19:36:15 +0300
commit92b1d3f9461e6d122d6523955cc8124559e5f36e (patch)
treefd93ba4c70fb8b693aae3784ba1068d0f098e178 /source/blender/blenloader
parent62a03ea1b6ef84ac80e40ab092393214c6032b88 (diff)
2.5: blenloader/ cleaning:
- removed context usage, should not be in this module - remove G.main usage, now is passed along - still some globals in use here, goal is to get rid of those too, so that it's possible to load/save blendfiles without having to think about some global state.
Diffstat (limited to 'source/blender/blenloader')
-rw-r--r--source/blender/blenloader/BLO_readfile.h9
-rw-r--r--source/blender/blenloader/BLO_writefile.h8
-rw-r--r--source/blender/blenloader/intern/readblenentry.c25
-rw-r--r--source/blender/blenloader/intern/readfile.c61
-rw-r--r--source/blender/blenloader/intern/readfile.h6
-rw-r--r--source/blender/blenloader/intern/writefile.c116
6 files changed, 120 insertions, 105 deletions
diff --git a/source/blender/blenloader/BLO_readfile.h b/source/blender/blenloader/BLO_readfile.h
index 38f8be58bf6..59289b7e74c 100644
--- a/source/blender/blenloader/BLO_readfile.h
+++ b/source/blender/blenloader/BLO_readfile.h
@@ -95,9 +95,10 @@ BlendFileData* BLO_read_from_file (char *file, struct ReportList *reports);
BlendFileData* BLO_read_from_memory(void *mem, int memsize, struct ReportList *reports);
/**
+ * oldmain is old main, from which we will keep libraries, images, ..
* file name is current file, only for retrieving library data */
-BlendFileData *BLO_read_from_memfile(const char *filename, struct MemFile *memfile, struct ReportList *reports);
+BlendFileData *BLO_read_from_memfile(struct Main *oldmain, const char *filename, struct MemFile *memfile, struct ReportList *reports);
/**
* Free's a BlendFileData structure and _all_ the
@@ -199,10 +200,10 @@ BLO_blendhandle_close(
char *BLO_gethome(void);
int BLO_has_bfile_extension(char *str);
-void BLO_library_append(struct SpaceFile *sfile, char *dir, int idcode, struct Scene *scene);
+void BLO_library_append(struct SpaceFile *sfile, char *dir, int idcode, struct Main *mainvar, struct Scene *scene);
void BLO_library_append_(BlendHandle **libfiledata, struct direntry* filelist, int totfile,
- char *dir, char* file, short flag, int idcode, struct Scene *scene);
-void BLO_script_library_append(BlendHandle **bh, char *dir, char *name, int idcode, short flag, struct Scene *scene);
+ char *dir, char* file, short flag, int idcode, struct Main *mainvar, struct Scene *scene);
+void BLO_script_library_append(BlendHandle **bh, char *dir, char *name, int idcode, short flag, struct Main *mainvar, struct Scene *scene);
BlendFileData* blo_read_blendafterruntime(int file, char *name, int actualsize, struct ReportList *reports);
diff --git a/source/blender/blenloader/BLO_writefile.h b/source/blender/blenloader/BLO_writefile.h
index 8205a43f39f..66ddffa9f19 100644
--- a/source/blender/blenloader/BLO_writefile.h
+++ b/source/blender/blenloader/BLO_writefile.h
@@ -32,13 +32,13 @@
#define BLO_WRITEFILE_H
struct MemFile;
-struct bContext;
+struct Main;
struct ReportList;
-extern int BLO_write_file(struct bContext *C, char *dir, int write_flags, struct ReportList *reports);
-extern int BLO_write_file_mem(struct bContext *C, struct MemFile *compare, struct MemFile *current,
+extern int BLO_write_file(struct Main *mainvar, char *dir, int write_flags, struct ReportList *reports);
+extern int BLO_write_file_mem(struct Main *mainvar, struct MemFile *compare, struct MemFile *current,
int write_flags, struct ReportList *reports);
-extern int BLO_write_runtime(struct bContext *C, char *file, char *exename, struct ReportList *reports);
+extern int BLO_write_runtime(struct Main *mainvar, char *file, char *exename, struct ReportList *reports);
#endif
diff --git a/source/blender/blenloader/intern/readblenentry.c b/source/blender/blenloader/intern/readblenentry.c
index d7acfc7eed0..e7e45597887 100644
--- a/source/blender/blenloader/intern/readblenentry.c
+++ b/source/blender/blenloader/intern/readblenentry.c
@@ -53,7 +53,6 @@
#include "BKE_utildefines.h" // for ENDB
#include "BKE_main.h"
-#include "BKE_global.h"
#include "BKE_library.h" // for free_main
#include "BKE_report.h"
@@ -360,7 +359,7 @@ BlendFileData *BLO_read_from_memory(void *mem, int memsize, ReportList *reports)
return bfd;
}
-BlendFileData *BLO_read_from_memfile(const char *filename, MemFile *memfile, ReportList *reports)
+BlendFileData *BLO_read_from_memfile(Main *oldmain, const char *filename, MemFile *memfile, ReportList *reports)
{
BlendFileData *bfd = NULL;
FileData *fd;
@@ -370,16 +369,16 @@ BlendFileData *BLO_read_from_memfile(const char *filename, MemFile *memfile, Rep
if (fd) {
strcpy(fd->filename, filename);
- /* clear ob->proxy_from pointers in G.main */
- blo_clear_proxy_pointers_from_lib(fd);
+ /* clear ob->proxy_from pointers in old main */
+ blo_clear_proxy_pointers_from_lib(fd, oldmain);
- /* separate libraries from G.main */
- blo_split_main(&mainlist, G.main);
+ /* separate libraries from old main */
+ blo_split_main(&mainlist, oldmain);
/* add the library pointers in oldmap lookup */
blo_add_library_pointer_map(&mainlist, fd);
- /* makes lookup of existing images in G.main */
- blo_make_image_pointer_map(fd);
+ /* makes lookup of existing images in old main */
+ blo_make_image_pointer_map(fd, oldmain);
bfd= blo_read_file_internal(fd, reports);
if (bfd) {
@@ -388,17 +387,17 @@ BlendFileData *BLO_read_from_memfile(const char *filename, MemFile *memfile, Rep
}
/* ensures relinked images are not freed */
- blo_end_image_pointer_map(fd);
+ blo_end_image_pointer_map(fd, oldmain);
- /* move libraries from G.main to new main */
+ /* move libraries from old main to new main */
if(bfd && mainlist.first!=mainlist.last) {
/* Library structs themselves */
- bfd->main->library= G.main->library;
- G.main->library.first= G.main->library.last= NULL;
+ bfd->main->library= oldmain->library;
+ oldmain->library.first= oldmain->library.last= NULL;
/* add the Library mainlist to the new main */
- BLI_remlink(&mainlist, G.main);
+ BLI_remlink(&mainlist, oldmain);
BLI_addhead(&mainlist, bfd->main);
}
blo_join_main(&mainlist);
diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c
index 2e969a71b0c..89a71f1fbb4 100644
--- a/source/blender/blenloader/intern/readfile.c
+++ b/source/blender/blenloader/intern/readfile.c
@@ -1123,20 +1123,19 @@ static void change_idid_adr(ListBase *mainlist, FileData *basefd, void *old, voi
* to clear that pointer before reading the undo memfile since
* the object might be removed, it is set again in reading
* if the local object still exists */
-void blo_clear_proxy_pointers_from_lib(FileData *fd)
+void blo_clear_proxy_pointers_from_lib(FileData *fd, Main *oldmain)
{
- Object *ob= G.main->object.first;
+ Object *ob= oldmain->object.first;
for(;ob; ob= ob->id.next)
if(ob->id.lib)
ob->proxy_from= NULL;
}
-/* assumed; G.main still exists */
-void blo_make_image_pointer_map(FileData *fd)
+void blo_make_image_pointer_map(FileData *fd, Main *oldmain)
{
- Image *ima= G.main->image.first;
- Scene *sce= G.main->scene.first;
+ Image *ima= oldmain->image.first;
+ Scene *sce= oldmain->scene.first;
fd->imamap= oldnewmap_new();
@@ -1156,13 +1155,13 @@ void blo_make_image_pointer_map(FileData *fd)
}
}
-/* set G.main image ibufs to zero if it has been restored */
-/* this works because freeing G.main only happens after this call */
-void blo_end_image_pointer_map(FileData *fd)
+/* set old main image ibufs to zero if it has been restored */
+/* this works because freeing old main only happens after this call */
+void blo_end_image_pointer_map(FileData *fd, Main *oldmain)
{
OldNew *entry= fd->imamap->entries;
- Image *ima= G.main->image.first;
- Scene *sce= G.main->scene.first;
+ Image *ima= oldmain->image.first;
+ Scene *sce= oldmain->scene.first;
int i;
/* used entries were restored, so we put them to zero */
@@ -9246,24 +9245,24 @@ static void expand_main(FileData *fd, Main *mainvar)
}
}
-static int object_in_any_scene(Object *ob)
+static int object_in_any_scene(Main *mainvar, Object *ob)
{
Scene *sce;
- for(sce= G.main->scene.first; sce; sce= sce->id.next)
+ for(sce= mainvar->scene.first; sce; sce= sce->id.next)
if(object_in_scene(ob, sce))
return 1;
return 0;
}
/* when *lib set, it also does objects that were in the appended group */
-static void give_base_to_objects(Scene *sce, ListBase *lb, Library *lib, int is_group_append)
+static void give_base_to_objects(Main *mainvar, Scene *sce, Library *lib, int is_group_append)
{
Object *ob;
Base *base;
/* give all objects which are LIB_INDIRECT a base, or for a group when *lib has been set */
- for(ob= lb->first; ob; ob= ob->id.next) {
+ for(ob= mainvar->object.first; ob; ob= ob->id.next) {
if( ob->id.flag & LIB_INDIRECT ) {
@@ -9279,7 +9278,7 @@ static void give_base_to_objects(Scene *sce, ListBase *lb, Library *lib, int is_
if(ob->id.us==0)
do_it= 1;
else if(ob->id.us==1 && lib)
- if(ob->id.lib==lib && (ob->flag & OB_FROMGROUP) && object_in_any_scene(ob)==0)
+ if(ob->id.lib==lib && (ob->flag & OB_FROMGROUP) && object_in_any_scene(mainvar, ob)==0)
do_it= 1;
if(do_it) {
@@ -9380,14 +9379,14 @@ static void append_id_part(FileData *fd, Main *mainvar, ID *id, ID **id_r)
/* common routine to append/link something from a library */
-static Library* library_append(Scene *scene, char* file, char *dir, int idcode,
+static Library* library_append(Main *mainvar, Scene *scene, char* file, char *dir, int idcode,
int totsel, FileData **fd, struct direntry* filelist, int totfile, short flag)
{
Main *mainl;
Library *curlib;
/* make mains */
- blo_split_main(&(*fd)->mainlist, G.main);
+ blo_split_main(&(*fd)->mainlist, mainvar);
/* which one do we need? */
mainl = blo_find_main(*fd, &(*fd)->mainlist, dir, G.sce);
@@ -9424,21 +9423,21 @@ static Library* library_append(Scene *scene, char* file, char *dir, int idcode,
}
blo_join_main(&(*fd)->mainlist);
- G.main= (*fd)->mainlist.first;
+ mainvar= (*fd)->mainlist.first;
- lib_link_all(*fd, G.main);
- lib_verify_nodetree(G.main, 0);
- fix_relpaths_library(G.sce, G.main); /* make all relative paths, relative to the open blend file */
+ lib_link_all(*fd, mainvar);
+ lib_verify_nodetree(mainvar, 0);
+ fix_relpaths_library(G.sce, mainvar); /* make all relative paths, relative to the open blend file */
/* give a base to loose objects. If group append, do it for objects too */
if(idcode==ID_GR) {
if (flag & FILE_LINK) {
- give_base_to_objects(scene, &(G.main->object), NULL, 0);
+ give_base_to_objects(mainvar, scene, NULL, 0);
} else {
- give_base_to_objects(scene, &(G.main->object), curlib, 1);
+ give_base_to_objects(mainvar, scene, curlib, 1);
}
} else {
- give_base_to_objects(scene, &(G.main->object), NULL, 0);
+ give_base_to_objects(mainvar, scene, NULL, 0);
}
/* has been removed... erm, why? s..ton) */
/* 20040907: looks like they are give base already in append_named_part(); -Nathan L */
@@ -9459,10 +9458,10 @@ static Library* library_append(Scene *scene, char* file, char *dir, int idcode,
/* this should probably be moved into the Python code anyway */
void BLO_script_library_append(BlendHandle **bh, char *dir, char *name,
- int idcode, short flag, Scene *scene )
+ int idcode, short flag, Main *mainvar, Scene *scene)
{
/* try to append the requested object */
- library_append(scene, name, dir, idcode, 0, (FileData **)bh, NULL, 0, flag );
+ library_append(mainvar, scene, name, dir, idcode, 0, (FileData **)bh, NULL, 0, flag );
/* do we need to do this? */
DAG_scene_sort(scene);
@@ -9470,14 +9469,14 @@ void BLO_script_library_append(BlendHandle **bh, char *dir, char *name,
/* append to scene */
/* dir is a full path */
-void BLO_library_append(SpaceFile *sfile, char *dir, int idcode, Scene *scene)
+void BLO_library_append(SpaceFile *sfile, char *dir, int idcode, Main *mainvar, Scene *scene)
{
BLO_library_append_(&sfile->libfiledata, sfile->filelist, sfile->totfile,
- dir, sfile->file, sfile->flag, idcode, scene);
+ dir, sfile->file, sfile->flag, idcode, mainvar, scene);
}
void BLO_library_append_(BlendHandle** libfiledata, struct direntry* filelist, int totfile,
- char *dir, char* file, short flag, int idcode, Scene *scene)
+ char *dir, char* file, short flag, int idcode, Main *mainvar, Scene *scene)
{
Library *curlib;
Base *centerbase;
@@ -9511,7 +9510,7 @@ void BLO_library_append_(BlendHandle** libfiledata, struct direntry* filelist, i
if(flag & FILE_AUTOSELECT) scene_deselect_all(scene);
- curlib = library_append(scene, file, dir, idcode, totsel, (FileData**) libfiledata, filelist, totfile,flag );
+ curlib = library_append(mainvar, scene, file, dir, idcode, totsel, (FileData**) libfiledata, filelist, totfile,flag );
/* when not linking (appending)... */
if((flag & FILE_LINK)==0) {
diff --git a/source/blender/blenloader/intern/readfile.h b/source/blender/blenloader/intern/readfile.h
index f53f3c6c883..08797d36084 100644
--- a/source/blender/blenloader/intern/readfile.h
+++ b/source/blender/blenloader/intern/readfile.h
@@ -113,9 +113,9 @@ FileData *blo_openblenderfile( char *name, struct ReportList *reports);
FileData *blo_openblendermemory( void *buffer, int buffersize, struct ReportList *reports);
FileData *blo_openblendermemfile(struct MemFile *memfile, struct ReportList *reports);
-void blo_clear_proxy_pointers_from_lib(FileData *fd);
-void blo_make_image_pointer_map(FileData *fd);
-void blo_end_image_pointer_map(FileData *fd);
+void blo_clear_proxy_pointers_from_lib(FileData *fd, Main *oldmain);
+void blo_make_image_pointer_map(FileData *fd, Main *oldmain);
+void blo_end_image_pointer_map(FileData *fd, Main *oldmain);
void blo_add_library_pointer_map(ListBase *mainlist, FileData *fd);
void blo_freefiledata( FileData *fd);
diff --git a/source/blender/blenloader/intern/writefile.c b/source/blender/blenloader/intern/writefile.c
index 6cd2d328c82..c5fa2f8d282 100644
--- a/source/blender/blenloader/intern/writefile.c
+++ b/source/blender/blenloader/intern/writefile.c
@@ -145,14 +145,13 @@ Any case: direct data is ALWAYS after the lib block
#include "BKE_action.h"
#include "BKE_blender.h"
-#include "BKE_context.h"
#include "BKE_cloth.h"
#include "BKE_curve.h"
#include "BKE_customdata.h"
#include "BKE_constraint.h"
#include "BKE_global.h" // for G
#include "BKE_library.h" // for set_listbasepointers
-#include "BKE_main.h" // G.main
+#include "BKE_main.h"
#include "BKE_node.h"
#include "BKE_packedFile.h" // for packAll
#include "BKE_report.h"
@@ -480,14 +479,29 @@ static void write_scriptlink(WriteData *wd, ScriptLink *slink)
writedata(wd, DATA, sizeof(short)*slink->totscript, slink->flag);
}
-static void write_renderinfo(bContext *C, WriteData *wd) /* for renderdeamon */
+static void current_screen_compat(Main *mainvar, bScreen **screen)
{
+ wmWindowManager *wm;
+ wmWindow *window;
+
+ /* find a global current screen in the first open window, to have
+ * a reasonable default for reading in older versions */
+ wm= mainvar->wm.first;
+ window= (wm)? wm->windows.first: NULL;
+ *screen= (window)? window->screen: NULL;
+}
+
+static void write_renderinfo(WriteData *wd, Main *mainvar) /* for renderdeamon */
+{
+ bScreen *curscreen;
Scene *sce;
int data[8];
- sce= CTX_data_main(C)->scene.first;
+ current_screen_compat(mainvar, &curscreen);
+
+ sce= mainvar->scene.first;
while(sce) {
- if(sce->id.lib==0 && ( sce==CTX_data_scene(C) || (sce->r.scemode & R_BG_RENDER)) ) {
+ if(sce->id.lib==0 && ( sce==G.scene || (sce->r.scemode & R_BG_RENDER)) ) {
data[0]= sce->r.sfra;
data[1]= sce->r.efra;
@@ -2018,14 +2032,17 @@ static void write_scripts(WriteData *wd, ListBase *idbase)
/* context is usually defined by WM, two cases where no WM is available:
* - for forward compatibility, curscreen has to be saved
* - for undofile, curscene needs to be saved */
-/* XXX still remap G */
-static void write_global(bContext *C, WriteData *wd)
+static void write_global(WriteData *wd, Main *mainvar)
{
FileGlobal fg;
+ bScreen *screen;
char subvstr[8];
- fg.curscreen= CTX_wm_screen(C);
- fg.curscene= CTX_data_scene(C);
+ current_screen_compat(mainvar, &screen);
+
+ /* XXX still remap G */
+ fg.curscreen= screen;
+ fg.curscene= G.scene;
fg.displaymode= G.displaymode;
fg.winpos= G.winpos;
fg.fileflags= (G.fileflags & ~G_FILE_NO_UI); // prevent to save this, is not good convention, and feature with concerns...
@@ -2042,7 +2059,7 @@ static void write_global(bContext *C, WriteData *wd)
}
/* if MemFile * there's filesave to memory */
-static int write_file_handle(bContext *C, int handle, MemFile *compare, MemFile *current,
+static int write_file_handle(Main *mainvar, int handle, MemFile *compare, MemFile *current,
int write_user_block, int write_flags)
{
BHead bhead;
@@ -2050,47 +2067,47 @@ static int write_file_handle(bContext *C, int handle, MemFile *compare, MemFile
char buf[16];
WriteData *wd;
- blo_split_main(&mainlist, G.main);
+ blo_split_main(&mainlist, mainvar);
wd= bgnwrite(handle, compare, current, write_flags);
sprintf(buf, "BLENDER%c%c%.3d", (sizeof(void*)==8)?'-':'_', (G.order==B_ENDIAN)?'V':'v', G.version);
mywrite(wd, buf, 12);
- write_renderinfo(C, wd);
- write_global(C, wd);
+ write_renderinfo(wd, mainvar);
+ write_global(wd, mainvar);
/* no UI save in undo */
if(current==NULL) {
- write_windowmanagers(wd, &G.main->wm);
- write_screens (wd, &G.main->screen);
- }
- write_scenes (wd, &G.main->scene);
- write_curves (wd, &G.main->curve);
- write_mballs (wd, &G.main->mball);
- write_images (wd, &G.main->image);
- write_cameras (wd, &G.main->camera);
- write_lamps (wd, &G.main->lamp);
- write_lattices (wd, &G.main->latt);
- write_vfonts (wd, &G.main->vfont);
- write_ipos (wd, &G.main->ipo);
- write_keys (wd, &G.main->key);
- write_worlds (wd, &G.main->world);
- write_texts (wd, &G.main->text);
- write_sounds (wd, &G.main->sound);
- write_groups (wd, &G.main->group);
- write_armatures(wd, &G.main->armature);
- write_actions (wd, &G.main->action);
- write_objects (wd, &G.main->object);
- write_materials(wd, &G.main->mat);
- write_textures (wd, &G.main->tex);
- write_meshs (wd, &G.main->mesh);
- write_particlesettings(wd, &G.main->particle);
- write_nodetrees(wd, &G.main->nodetree);
- write_brushes (wd, &G.main->brush);
- write_scripts (wd, &G.main->script);
+ write_windowmanagers(wd, &mainvar->wm);
+ write_screens (wd, &mainvar->screen);
+ }
+ write_scenes (wd, &mainvar->scene);
+ write_curves (wd, &mainvar->curve);
+ write_mballs (wd, &mainvar->mball);
+ write_images (wd, &mainvar->image);
+ write_cameras (wd, &mainvar->camera);
+ write_lamps (wd, &mainvar->lamp);
+ write_lattices (wd, &mainvar->latt);
+ write_vfonts (wd, &mainvar->vfont);
+ write_ipos (wd, &mainvar->ipo);
+ write_keys (wd, &mainvar->key);
+ write_worlds (wd, &mainvar->world);
+ write_texts (wd, &mainvar->text);
+ write_sounds (wd, &mainvar->sound);
+ write_groups (wd, &mainvar->group);
+ write_armatures(wd, &mainvar->armature);
+ write_actions (wd, &mainvar->action);
+ write_objects (wd, &mainvar->object);
+ write_materials(wd, &mainvar->mat);
+ write_textures (wd, &mainvar->tex);
+ write_meshs (wd, &mainvar->mesh);
+ write_particlesettings(wd, &mainvar->particle);
+ write_nodetrees(wd, &mainvar->nodetree);
+ write_brushes (wd, &mainvar->brush);
+ write_scripts (wd, &mainvar->script);
if(current==NULL)
- write_libraries(wd, G.main->next); /* no library save in undo */
+ write_libraries(wd, mainvar->next); /* no library save in undo */
if (write_user_block) {
write_userdef(wd);
@@ -2105,13 +2122,12 @@ static int write_file_handle(bContext *C, int handle, MemFile *compare, MemFile
mywrite(wd, &bhead, sizeof(BHead));
blo_join_main(&mainlist);
- G.main= mainlist.first;
return endwrite(wd);
}
/* return: success (1) */
-int BLO_write_file(bContext *C, char *dir, int write_flags, ReportList *reports)
+int BLO_write_file(Main *mainvar, char *dir, int write_flags, ReportList *reports)
{
char userfilename[FILE_MAXDIR+FILE_MAXFILE];
char tempname[FILE_MAXDIR+FILE_MAXFILE];
@@ -2129,7 +2145,7 @@ int BLO_write_file(bContext *C, char *dir, int write_flags, ReportList *reports)
write_user_block= BLI_streq(dir, userfilename);
- err= write_file_handle(C, file, NULL,NULL, write_user_block, write_flags);
+ err= write_file_handle(mainvar, file, NULL,NULL, write_user_block, write_flags);
close(file);
if(!err) {
@@ -2166,11 +2182,11 @@ int BLO_write_file(bContext *C, char *dir, int write_flags, ReportList *reports)
}
/* return: success (1) */
-int BLO_write_file_mem(bContext *C, MemFile *compare, MemFile *current, int write_flags, ReportList *reports)
+int BLO_write_file_mem(Main *mainvar, MemFile *compare, MemFile *current, int write_flags, ReportList *reports)
{
int err;
- err= write_file_handle(C, 0, compare, current, 0, write_flags);
+ err= write_file_handle(mainvar, 0, compare, current, 0, write_flags);
if(err==0) return 1;
return 0;
@@ -2264,7 +2280,7 @@ cleanup:
return !(reports->flag & RPT_HAS_ERROR);
}
-int BLO_write_runtime(bContext *C, char *file, char *exename, ReportList *reports)
+int BLO_write_runtime(Main *mainvar, char *file, char *exename, ReportList *reports)
{
char gamename[FILE_MAXDIR+FILE_MAXFILE];
int outfd = -1;
@@ -2282,7 +2298,7 @@ int BLO_write_runtime(bContext *C, char *file, char *exename, ReportList *report
outfd= open(gamename, O_BINARY|O_WRONLY|O_CREAT|O_TRUNC, 0777);
if (outfd != -1) {
- write_file_handle(C, outfd, NULL,NULL, 0, G.fileflags);
+ write_file_handle(mainvar, outfd, NULL,NULL, 0, G.fileflags);
if (write(outfd, " ", 1) != 1) {
BKE_report(reports, RPT_ERROR, "Unable to write to output file.");
@@ -2346,7 +2362,7 @@ static int handle_write_msb_int(int handle, int i)
return (write(handle, buf, 4)==4);
}
-int BLO_write_runtime(bContext *C, char *file, char *exename, ReportList *reports)
+int BLO_write_runtime(Main *mainvar, char *file, char *exename, ReportList *reports)
{
int outfd= open(file, O_BINARY|O_WRONLY|O_CREAT|O_TRUNC, 0777);
int datastart;
@@ -2360,7 +2376,7 @@ int BLO_write_runtime(bContext *C, char *file, char *exename, ReportList *report
datastart= lseek(outfd, 0, SEEK_CUR);
- write_file_handle(C, outfd, NULL,NULL, 0, G.fileflags);
+ write_file_handle(mainvar, outfd, NULL,NULL, 0, G.fileflags);
if (!handle_write_msb_int(outfd, datastart) || (write(outfd, "BRUNTIME", 8)!=8)) {
BKE_report(reports, RPT_ERROR, "Unable to write to output file.");