diff --git a/Dalamud.Boot/rewrite_entrypoint.cpp b/Dalamud.Boot/rewrite_entrypoint.cpp index ba7b7ee1a..39863f17f 100644 --- a/Dalamud.Boot/rewrite_entrypoint.cpp +++ b/Dalamud.Boot/rewrite_entrypoint.cpp @@ -198,7 +198,7 @@ HWND try_find_game_window() { DWORD pid; GetWindowThreadProcessId(hwnd, &pid); - if (pid == GetCurrentProcessId()) + if (pid == GetCurrentProcessId() && IsWindowVisible(hwnd)) break; } return hwnd; diff --git a/Dalamud/DalamudStartInfo.cs b/Dalamud/DalamudStartInfo.cs index 5c82cf63c..891a57dca 100644 --- a/Dalamud/DalamudStartInfo.cs +++ b/Dalamud/DalamudStartInfo.cs @@ -51,5 +51,10 @@ namespace Dalamud /// Gets a value indicating whether or not market board information should be uploaded by default. /// public bool OptOutMbCollection { get; init; } + + /// + /// Gets a value that specifies how much to wait before a new Dalamud session. + /// + public int DelayInitializeMs { get; init; } = 0; } } diff --git a/Dalamud/EntryPoint.cs b/Dalamud/EntryPoint.cs index efba9a7ff..e9df6be92 100644 --- a/Dalamud/EntryPoint.cs +++ b/Dalamud/EntryPoint.cs @@ -79,6 +79,12 @@ namespace Dalamud try { + if (info.DelayInitializeMs > 0) + { + Log.Information(string.Format("Waiting for {0}ms before starting a session.", info.DelayInitializeMs)); + Thread.Sleep(info.DelayInitializeMs); + } + Log.Information(new string('-', 80)); Log.Information("Initializing a session..");