From 6870c8e7d20cbf915a9c9757f1d3e31828b15de1 Mon Sep 17 00:00:00 2001 From: goat Date: Sat, 27 May 2023 21:13:45 +0200 Subject: [PATCH] add a bunch of logging to IM setup --- Dalamud/Interface/Internal/InterfaceManager.cs | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/Dalamud/Interface/Internal/InterfaceManager.cs b/Dalamud/Interface/Internal/InterfaceManager.cs index 0c5f80c21..9645b44a8 100644 --- a/Dalamud/Interface/Internal/InterfaceManager.cs +++ b/Dalamud/Interface/Internal/InterfaceManager.cs @@ -20,12 +20,12 @@ using Dalamud.Interface.Internal.ManagedAsserts; using Dalamud.Interface.Internal.Notifications; using Dalamud.Interface.Style; using Dalamud.Interface.Windowing; +using Dalamud.Logging.Internal; using Dalamud.Utility; using Dalamud.Utility.Timing; using ImGuiNET; using ImGuiScene; using PInvoke; -using Serilog; // general dev notes, here because it's easiest @@ -47,6 +47,8 @@ namespace Dalamud.Interface.Internal; [ServiceManager.BlockingEarlyLoadedService] internal class InterfaceManager : IDisposable, IServiceType { + private static ModuleLog Log = new ModuleLog("IM"); + private const float DefaultFontSizePt = 12.0f; private const float DefaultFontSizePx = DefaultFontSizePt * 4.0f / 3.0f; private const ushort Fallback1Codepoint = 0x3013; // Geta mark; FFXIV uses this to indicate that a glyph is missing. @@ -78,23 +80,28 @@ internal class InterfaceManager : IDisposable, IServiceType [ServiceManager.ServiceConstructor] private InterfaceManager(SigScanner sigScanner) { + Log.Verbose("ctor called"); + this.dispatchMessageWHook = Hook.FromImport( null, "user32.dll", "DispatchMessageW", 0, this.DispatchMessageWDetour); this.setCursorHook = Hook.FromImport( null, "user32.dll", "SetCursor", 0, this.SetCursorDetour); + Log.Verbose("Import hooks applied"); this.fontBuildSignal = new ManualResetEvent(false); this.address = new SwapChainVtableResolver(); this.address.Setup(); - - this.presentHook = Hook.FromAddress(this.address.Present, this.PresentDetour); - this.resizeBuffersHook = Hook.FromAddress(this.address.ResizeBuffers, this.ResizeBuffersDetour); + Log.Verbose("Resolver setup complete"); Log.Verbose("===== S W A P C H A I N ====="); Log.Verbose($"Present address 0x{this.presentHook!.Address.ToInt64():X}"); Log.Verbose($"ResizeBuffers address 0x{this.resizeBuffersHook!.Address.ToInt64():X}"); + this.presentHook = Hook.FromAddress(this.address.Present, this.PresentDetour); + this.resizeBuffersHook = Hook.FromAddress(this.address.ResizeBuffers, this.ResizeBuffersDetour); + Log.Verbose("Present and ResizeBuffers hooked"); + var wndProcAddress = sigScanner.ScanText("E8 ?? ?? ?? ?? 80 7C 24 ?? ?? 74 ?? B8"); Log.Verbose($"WndProc address 0x{wndProcAddress.ToInt64():X}"); this.processMessageHook = Hook.FromAddress(wndProcAddress, this.ProcessMessageDetour); @@ -104,6 +111,7 @@ internal class InterfaceManager : IDisposable, IServiceType this.resizeBuffersHook.Enable(); this.dispatchMessageWHook.Enable(); this.processMessageHook.Enable(); + Log.Verbose("Hooks enabled"); } [UnmanagedFunctionPointer(CallingConvention.ThisCall)]