Make the crash handler work on wine properly (#1636)

* add LoadMethod to DalamudStartInfo
* add to_wstring utility function
* append full injector launch args for VEH
* remove usage of std::chrono::zoned_time
* fix injector arguments in crash handler restart
* enable VEH on wine
* remove dead wine detection code
* write out tspack with std::fstream
* fix off-by-one error in get_window_string()
* remove usage of std::chrono when writing tspack
* do not deadlock on crashing DalamudCrashHandler
This commit is contained in:
marzent 2024-02-11 22:01:34 +01:00 committed by GitHub
parent 16bc6b86e5
commit 386e5f245c
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
11 changed files with 148 additions and 77 deletions

View file

@ -680,11 +680,11 @@ namespace Dalamud.Injector
mode = mode == null ? "entrypoint" : mode.ToLowerInvariant();
if (mode.Length > 0 && mode.Length <= 10 && "entrypoint"[0..mode.Length] == mode)
{
mode = "entrypoint";
dalamudStartInfo.LoadMethod = LoadMethod.Entrypoint;
}
else if (mode.Length > 0 && mode.Length <= 6 && "inject"[0..mode.Length] == mode)
{
mode = "inject";
dalamudStartInfo.LoadMethod = LoadMethod.DllInject;
}
else
{
@ -796,7 +796,7 @@ namespace Dalamud.Injector
noFixAcl,
p =>
{
if (!withoutDalamud && mode == "entrypoint")
if (!withoutDalamud && dalamudStartInfo.LoadMethod == LoadMethod.Entrypoint)
{
var startInfo = AdjustStartInfo(dalamudStartInfo, gamePath);
Log.Information("Using start info: {0}", JsonConvert.SerializeObject(startInfo));
@ -813,7 +813,7 @@ namespace Dalamud.Injector
Log.Verbose("Game process started with PID {0}", process.Id);
if (!withoutDalamud && mode == "inject")
if (!withoutDalamud && dalamudStartInfo.LoadMethod == LoadMethod.DllInject)
{
var startInfo = AdjustStartInfo(dalamudStartInfo, gamePath);
Log.Information("Using start info: {0}", JsonConvert.SerializeObject(startInfo));