|
@@ -1,127 +0,0 @@
|
|
|
-diff --git a/methods.py b/methods.py
|
|
|
-index 7ede259..4e0b2e6 100644
|
|
|
---- a/methods.py
|
|
|
-+++ b/methods.py
|
|
|
-@@ -809,6 +809,7 @@ def generate_vs_project(env, num_jobs):
|
|
|
- "platform=windows",
|
|
|
- f"target={configuration_getter}",
|
|
|
- "progress=no",
|
|
|
-+ "livepp=%s" % env["livepp"],
|
|
|
- "-j%s" % num_jobs,
|
|
|
- ]
|
|
|
-
|
|
|
-diff --git a/platform/windows/detect.py b/platform/windows/detect.py
|
|
|
-index 1b55574..8bc0fb1 100644
|
|
|
---- a/platform/windows/detect.py
|
|
|
-+++ b/platform/windows/detect.py
|
|
|
-@@ -164,7 +164,7 @@ def detect_build_env_arch():
|
|
|
-
|
|
|
-
|
|
|
- def get_opts():
|
|
|
-- from SCons.Variables import BoolVariable, EnumVariable
|
|
|
-+ from SCons.Variables import BoolVariable, EnumVariable, PathVariable
|
|
|
-
|
|
|
- mingw = os.getenv("MINGW_PREFIX", "")
|
|
|
-
|
|
|
-@@ -189,6 +189,7 @@ def get_opts():
|
|
|
- BoolVariable("use_static_cpp", "Link MinGW/MSVC C++ runtime libraries statically", True),
|
|
|
- BoolVariable("use_asan", "Use address sanitizer (ASAN)", False),
|
|
|
- BoolVariable("debug_crt", "Compile with MSVC's debug CRT (/MDd)", False),
|
|
|
-+ PathVariable("livepp", "Path to the Live++ installation", "", PathVariable.PathAccept),
|
|
|
- ]
|
|
|
-
|
|
|
-
|
|
|
-@@ -458,6 +459,21 @@ def configure_msvc(env, vcvars_msvc_config):
|
|
|
-
|
|
|
- env.AppendUnique(LINKFLAGS=["/STACK:" + str(STACK_SIZE)])
|
|
|
-
|
|
|
-+ # Check if LIVEPP_PATH is set and add #define. Perform
|
|
|
-+ # some sanity checks.
|
|
|
-+ if env.get("livepp"):
|
|
|
-+ if env["target"] == "editor":
|
|
|
-+ if os.path.exists(env.get("livepp")):
|
|
|
-+ print("Found Live++ at %s" % env.get("livepp"))
|
|
|
-+ env.AppendUnique(CPPDEFINES=["LIVEPP_PATH=%s" % env.get("livepp")])
|
|
|
-+ env.AppendUnique(CPPPATH=[env.get("livepp")])
|
|
|
-+ env.AppendUnique(LINKFLAGS=["/FUNCTIONPADMIN"])
|
|
|
-+ else:
|
|
|
-+ print("Specified Live++ path does not exist")
|
|
|
-+ else:
|
|
|
-+ print("Live++ can only be used with targets 'editor'")
|
|
|
-+ else:
|
|
|
-+ print("No Live++ specified.")
|
|
|
-
|
|
|
- def configure_mingw(env):
|
|
|
- # Workaround for MinGW. See:
|
|
|
-diff --git a/platform/windows/godot_windows.cpp b/platform/windows/godot_windows.cpp
|
|
|
-index a26d3ba..8b8e2a8 100644
|
|
|
---- a/platform/windows/godot_windows.cpp
|
|
|
-+++ b/platform/windows/godot_windows.cpp
|
|
|
-@@ -34,6 +34,11 @@
|
|
|
- #include <locale.h>
|
|
|
- #include <stdio.h>
|
|
|
-
|
|
|
-+#ifdef LIVEPP_PATH
|
|
|
-+#include "API/LPP_API.h"
|
|
|
-+HMODULE livePP;
|
|
|
-+#endif
|
|
|
-+
|
|
|
- // For export templates, add a section; the exporter will patch it to enclose
|
|
|
- // the data appended to the executable (bundled PCK)
|
|
|
- #ifndef TOOLS_ENABLED
|
|
|
-@@ -149,6 +154,16 @@ char *wc_to_utf8(const wchar_t *wc) {
|
|
|
- }
|
|
|
-
|
|
|
- int widechar_main(int argc, wchar_t **argv) {
|
|
|
-+#ifdef LIVEPP_PATH
|
|
|
-+#define _MKSTR_L(x) _STR_L(x)
|
|
|
-+#define _STR_L(x) L#x
|
|
|
-+ livePP = lpp::lppLoadAndRegister(_MKSTR_L(LIVEPP_PATH), "Godot");
|
|
|
-+ lpp::lppEnableAllCallingModulesSync(livePP);
|
|
|
-+ lpp::lppInstallExceptionHandler(livePP);
|
|
|
-+#undef _MKSTR_L
|
|
|
-+#undef _STR_L
|
|
|
-+#endif
|
|
|
-+
|
|
|
- OS_Windows os(nullptr);
|
|
|
-
|
|
|
- setlocale(LC_CTYPE, "");
|
|
|
-@@ -185,6 +200,11 @@ int widechar_main(int argc, wchar_t **argv) {
|
|
|
- }
|
|
|
- delete[] argv_utf8;
|
|
|
-
|
|
|
-+#ifdef LIVEPP_PATH
|
|
|
-+ lpp::lppShutdown(livePP);
|
|
|
-+ ::FreeLibrary(livePP);
|
|
|
-+#endif
|
|
|
-+
|
|
|
- return os.get_exit_code();
|
|
|
- }
|
|
|
-
|
|
|
-diff --git a/platform/windows/os_windows.cpp b/platform/windows/os_windows.cpp
|
|
|
-index 08299d9..362de3b 100644
|
|
|
---- a/platform/windows/os_windows.cpp
|
|
|
-+++ b/platform/windows/os_windows.cpp
|
|
|
-@@ -55,6 +55,11 @@
|
|
|
- #include <shlobj.h>
|
|
|
- #include <wbemcli.h>
|
|
|
-
|
|
|
-+#ifdef LIVEPP_PATH
|
|
|
-+#include "API/LPP_API.h"
|
|
|
-+extern HMODULE livePP;
|
|
|
-+#endif
|
|
|
-+
|
|
|
- extern "C" {
|
|
|
- __declspec(dllexport) DWORD NvOptimusEnablement = 1;
|
|
|
- __declspec(dllexport) int AmdPowerXpressRequestHighPerformance = 1;
|
|
|
-@@ -1296,6 +1301,10 @@ void OS_Windows::run() {
|
|
|
- if (Main::iteration()) {
|
|
|
- break;
|
|
|
- }
|
|
|
-+
|
|
|
-+#ifdef LIVEPP_PATH
|
|
|
-+ lpp::lppSyncPoint(livePP);
|
|
|
-+#endif
|
|
|
- }
|
|
|
-
|
|
|
- main_loop->finalize();
|