diff options
author | Sergey Sharybin <sergey.vfx@gmail.com> | 2014-08-07 18:01:20 +0400 |
---|---|---|
committer | Sergey Sharybin <sergey.vfx@gmail.com> | 2014-08-07 19:45:24 +0400 |
commit | 0e9c67734388b91b55fbf968b778d0c68586b6c8 (patch) | |
tree | 45866780e61a925bfca416d54da514683db21eda /source/creator | |
parent | 26dc8b7c18c88ae7604745eb02800424b7dd5a6c (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.txt | 15 | ||||
-rw-r--r-- | source/creator/creator_launch_win.c | 63 |
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; +} |