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:
Diffstat (limited to 'source/creator/creator.c')
-rw-r--r--source/creator/creator.c32
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