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:
authorSergey Sharybin <sergey.vfx@gmail.com>2014-08-07 18:01:20 +0400
committerSergey Sharybin <sergey.vfx@gmail.com>2014-08-07 19:45:24 +0400
commit0e9c67734388b91b55fbf968b778d0c68586b6c8 (patch)
tree45866780e61a925bfca416d54da514683db21eda /source/creator
parent26dc8b7c18c88ae7604745eb02800424b7dd5a6c (diff)
Add blender launcher application when building with MSVC
Main idea of this change is to make a small executable which will set OMP_WAIT_POLICY environment variable and then will launch blender itself. This is a teporary solution for the time being we'll have a more clear solution to high CPU usage with OpenMP when building with MSVC. Reviewers: campbellbarton, juicyfruit Reviewed By: juicyfruit Differential Revision: https://developer.blender.org/D717
Diffstat (limited to 'source/creator')
-rw-r--r--source/creator/CMakeLists.txt15
-rw-r--r--source/creator/creator_launch_win.c63
2 files changed, 78 insertions, 0 deletions
diff --git a/source/creator/CMakeLists.txt b/source/creator/CMakeLists.txt
index e427fff0e02..fbda69225b3 100644
--- a/source/creator/CMakeLists.txt
+++ b/source/creator/CMakeLists.txt
@@ -932,3 +932,18 @@ setup_blender_sorted_libs()
target_link_libraries(blender ${BLENDER_SORTED_LIBS})
setup_liblinks(blender)
+
+# -----------------------------------------------------------------------------
+# Setup launcher
+
+if(WIN32 AND NOT WITH_PYTHON_MODULE)
+ set(LAUNCHER_SRC
+ creator_launch_win.c
+ ../icons/winblender.rc
+ )
+ add_executable(blender-launcher ${LAUNCHER_SRC})
+ target_link_libraries(blender-launcher ${PLATFORM_LINKLIBS})
+
+ set_target_properties(blender PROPERTIES OUTPUT_NAME blender-app)
+ set_target_properties(blender-launcher PROPERTIES OUTPUT_NAME blender)
+endif()
diff --git a/source/creator/creator_launch_win.c b/source/creator/creator_launch_win.c
new file mode 100644
index 00000000000..0f186f643db
--- /dev/null
+++ b/source/creator/creator_launch_win.c
@@ -0,0 +1,63 @@
+/*
+ * ***** BEGIN GPL LICENSE BLOCK *****
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * The Original Code is Copyright (C) 2014 by Blender Foundation.
+ * All rights reserved.
+ *
+ * Contributor(s): Sergey Sharybin.
+ *
+ * ***** END GPL LICENSE BLOCK *****
+ */
+
+#pragma comment(linker, "/subsystem:windows")
+
+/* Binary name to launch. */
+#define BLENDER_BINARY "blender-app.exe"
+
+#define WIN32_LEAN_AND_MEAN
+#include <stdio.h>
+#include <stdlib.h>
+#include <windows.h>
+
+int WINAPI WinMain(HINSTANCE hInstance,
+ HINSTANCE hPrevInstance,
+ LPSTR lpCmdLine,
+ int nCmdShow)
+{
+ PROCESS_INFORMATION processInformation = {0};
+ STARTUPINFOA startupInfo = {0};
+ BOOL result;
+
+ _putenv_s("OMP_WAIT_POLICY", "PASSIVE");
+
+ startupInfo.cb = sizeof(startupInfo);
+ result = CreateProcessA(NULL, BLENDER_BINARY, NULL, NULL, FALSE,
+ 0, NULL, NULL,
+ &startupInfo, &processInformation);
+
+ if (!result) {
+ fprintf(stderr, "Error launching " BLENDER_BINARY "\n");
+ return EXIT_FAILURE;
+ }
+
+ WaitForSingleObject(processInformation.hProcess, INFINITE);
+
+ CloseHandle(processInformation.hProcess);
+ CloseHandle(processInformation.hThread);
+
+ return EXIT_SUCCESS;
+}