diff options
Diffstat (limited to 'source/creator/creator.c')
-rw-r--r-- | source/creator/creator.c | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/source/creator/creator.c b/source/creator/creator.c index eb5761bb095..63e25e1d820 100644 --- a/source/creator/creator.c +++ b/source/creator/creator.c @@ -40,6 +40,11 @@ #include <xmmintrin.h> #endif +#ifdef WIN32 +#include <Windows.h> +#include "utfconv.h" +#endif + #include <stdlib.h> #include <stddef.h> #include <string.h> @@ -1109,12 +1114,28 @@ char **environ = NULL; #endif + +#ifdef WIN32 +int main(int argc, const char **argv_c) /*Do not mess with const*/ +#else int main(int argc, const char **argv) +#endif { SYS_SystemHandle syshandle; bContext *C= CTX_create(); bArgs *ba; +#ifdef WIN32 + wchar_t ** argv_16 = CommandLineToArgvW(GetCommandLineW(), &argc); + int argci = 0; + char ** argv = MEM_mallocN(argc * sizeof(char*),"argv array"); + for(argci=0; argci<argc; argci++) + { + argv[argci] = alloc_utf_8_from_16(argv_16[argci],0); + } + LocalFree(argv_16); +#endif + #ifdef WITH_PYTHON_MODULE #ifdef __APPLE__ environ = *_NSGetEnviron(); @@ -1124,6 +1145,8 @@ int main(int argc, const char **argv) evil_C= C; #endif + + #ifdef WITH_BINRELOC br_init( NULL ); #endif @@ -1245,6 +1268,15 @@ int main(int argc, const char **argv) BLI_argsFree(ba); +#ifdef WIN32 + while(argci) + { + free(argv[--argci]); + } + MEM_freeN(argv); + argv = NULL; +#endif + #ifdef WITH_PYTHON_MODULE return 0; /* keep blender in background mode running */ #endif |