summaryrefslogtreecommitdiffhomepage
path: root/proto-wine/ftnoir_protocol_wine.cpp
diff options
context:
space:
mode:
authorStanislaw Halik <sthalik@tehran.lain.pl>2019-10-30 05:40:21 +0100
committerGitHub <noreply@github.com>2019-10-30 05:40:21 +0100
commitebf9de109b86336b8844fc6fd15a34760481de5e (patch)
tree2543e9a2e5f3ca5133141e11b2962c26fdaf3951 /proto-wine/ftnoir_protocol_wine.cpp
parent2716d8e2ae7df7fb99d9d64d1efaa554d1d38034 (diff)
parent29591277d9cae18895ef03cb858b2b327813830e (diff)
Merge pull request #996 from opentrack/pr/proton-wine-proto
add support for proton wine
Diffstat (limited to 'proto-wine/ftnoir_protocol_wine.cpp')
-rw-r--r--proto-wine/ftnoir_protocol_wine.cpp37
1 files changed, 36 insertions, 1 deletions
diff --git a/proto-wine/ftnoir_protocol_wine.cpp b/proto-wine/ftnoir_protocol_wine.cpp
index 2e618ff9..bed1fed3 100644
--- a/proto-wine/ftnoir_protocol_wine.cpp
+++ b/proto-wine/ftnoir_protocol_wine.cpp
@@ -55,8 +55,43 @@ module_status wine::initialize()
{
#ifndef OTR_WINE_NO_WRAPPER
static const QString library_path(OPENTRACK_BASE_PATH + OPENTRACK_LIBRARY_PATH);
+
+ QString wine_path = "wine";
+ auto env = QProcessEnvironment::systemEnvironment();
+
+ if (s.variant_proton)
+ {
+ if (s.proton_appid == 0)
+ return error(tr("Must specify application id for Proton (Steam Play)"));
+
+ QProcessEnvironment make_steam_environ(const QString& proton_version, int appid);
+ QString proton_path(const QString& proton_version);
+
+ wine_path = proton_path(s.proton_version);
+ env = make_steam_environ(s.proton_version, s.proton_appid);
+ }
+ else
+ {
+ QString wineprefix = "~/.wine";
+ if (!s.wineprefix->isEmpty())
+ wineprefix = s.wineprefix;
+ if (wineprefix[0] == '~')
+ wineprefix = qgetenv("HOME") + wineprefix.mid(1);
+
+ if (wineprefix[0] != '/')
+ error(tr("Wine prefix must be an absolute path (given '%1')").arg(wineprefix));
+
+ env.insert("WINEPREFIX", wineprefix);
+ }
+
+ if (s.esync)
+ env.insert("WINEESYNC", "1");
+ if (s.fsync)
+ env.insert("WINEFSYNC", "1");
+
+ wrapper.setProcessEnvironment(env);
wrapper.setWorkingDirectory(OPENTRACK_BASE_PATH);
- wrapper.start("wine", { library_path + "opentrack-wrapper-wine.exe.so" });
+ wrapper.start(wine_path, { library_path + "opentrack-wrapper-wine.exe.so" });
#endif
if (lck_shm.success())