From eee84a338e22e4f660dd28d808b560fa682648fc Mon Sep 17 00:00:00 2001 From: DismissedLight <1686188646@qq.com> Date: Fri, 15 Mar 2024 20:24:32 +0800 Subject: [PATCH] significantly reduce uniformstaggeredlayout resize lag --- .../Control/Layout/UniformStaggeredLayout.cs | 15 ++------------- .../Control/Layout/UniformStaggeredLayoutState.cs | 1 - ...cutionBetterGenshinImpactAutomationHandlder.cs | 2 +- ...hExecutionStarwardPlayTimeStatisticsHandler.cs | 2 +- .../Handler/LaunchExecutionUnlockFpsHandler.cs | 5 +---- 5 files changed, 5 insertions(+), 20 deletions(-) diff --git a/src/Snap.Hutao/Snap.Hutao/Control/Layout/UniformStaggeredLayout.cs b/src/Snap.Hutao/Snap.Hutao/Control/Layout/UniformStaggeredLayout.cs index 8edbf364..1258fc42 100644 --- a/src/Snap.Hutao/Snap.Hutao/Control/Layout/UniformStaggeredLayout.cs +++ b/src/Snap.Hutao/Snap.Hutao/Control/Layout/UniformStaggeredLayout.cs @@ -81,13 +81,6 @@ internal sealed partial class UniformStaggeredLayout : VirtualizingLayout (int numberOfColumns, double columnWidth) = GetNumberOfColumnsAndWidth(availableWidth, MinItemWidth, MinColumnSpacing); - if (columnWidth != state.ColumnWidth) - { - // Remeasure items later - // Rearrange items later - state.Clear(); - } - state.ColumnWidth = columnWidth; double totalWidth = ((state.ColumnWidth + MinColumnSpacing) * numberOfColumns) - MinColumnSpacing; @@ -103,15 +96,11 @@ internal sealed partial class UniformStaggeredLayout : VirtualizingLayout if (numberOfColumns != state.NumberOfColumns) { - // Remeasure items later - // Rearrange items later - state.Clear(); + state.ClearColumns(); } if (MinRowSpacing != state.RowSpacing) { - // Rearrange items later - // If the RowSpacing changes the height of the rows will be different. // The columns stores the height so we'll want to clear them out to // get the proper height @@ -209,7 +198,7 @@ internal sealed partial class UniformStaggeredLayout : VirtualizingLayout double bottom = item.Top + item.Height; if (bottom < context.RealizationRect.Top) { - // element is above the realization bounds + // Element is above the realization bounds continue; } diff --git a/src/Snap.Hutao/Snap.Hutao/Control/Layout/UniformStaggeredLayoutState.cs b/src/Snap.Hutao/Snap.Hutao/Control/Layout/UniformStaggeredLayoutState.cs index 205de7d9..3004b3db 100644 --- a/src/Snap.Hutao/Snap.Hutao/Control/Layout/UniformStaggeredLayoutState.cs +++ b/src/Snap.Hutao/Snap.Hutao/Control/Layout/UniformStaggeredLayoutState.cs @@ -1,7 +1,6 @@ // Copyright (c) DGP Studio. All rights reserved. // Licensed under the MIT license. -using Microsoft.UI.Xaml; using Microsoft.UI.Xaml.Controls; using System.Runtime.InteropServices; diff --git a/src/Snap.Hutao/Snap.Hutao/Service/Game/Launching/Handler/LaunchExecutionBetterGenshinImpactAutomationHandlder.cs b/src/Snap.Hutao/Snap.Hutao/Service/Game/Launching/Handler/LaunchExecutionBetterGenshinImpactAutomationHandlder.cs index aeeec854..79803342 100644 --- a/src/Snap.Hutao/Snap.Hutao/Service/Game/Launching/Handler/LaunchExecutionBetterGenshinImpactAutomationHandlder.cs +++ b/src/Snap.Hutao/Snap.Hutao/Service/Game/Launching/Handler/LaunchExecutionBetterGenshinImpactAutomationHandlder.cs @@ -9,7 +9,7 @@ internal sealed class LaunchExecutionBetterGenshinImpactAutomationHandlder : ILa { public async ValueTask OnExecutionAsync(LaunchExecutionContext context, LaunchExecutionDelegate next) { - if (context.Options.UseBetterGenshinImpactAutomation) + if (!context.Process.HasExited && context.Options.UseBetterGenshinImpactAutomation) { context.Logger.LogInformation("Using BetterGI to automate gameplay"); await LaunchBetterGenshinImpactAsync(context).ConfigureAwait(false); diff --git a/src/Snap.Hutao/Snap.Hutao/Service/Game/Launching/Handler/LaunchExecutionStarwardPlayTimeStatisticsHandler.cs b/src/Snap.Hutao/Snap.Hutao/Service/Game/Launching/Handler/LaunchExecutionStarwardPlayTimeStatisticsHandler.cs index 0ea629fd..c3362a55 100644 --- a/src/Snap.Hutao/Snap.Hutao/Service/Game/Launching/Handler/LaunchExecutionStarwardPlayTimeStatisticsHandler.cs +++ b/src/Snap.Hutao/Snap.Hutao/Service/Game/Launching/Handler/LaunchExecutionStarwardPlayTimeStatisticsHandler.cs @@ -9,7 +9,7 @@ internal sealed class LaunchExecutionStarwardPlayTimeStatisticsHandler : ILaunch { public async ValueTask OnExecutionAsync(LaunchExecutionContext context, LaunchExecutionDelegate next) { - if (context.Options.UseStarwardPlayTimeStatistics) + if (!context.Process.HasExited && context.Options.UseStarwardPlayTimeStatistics) { context.Logger.LogInformation("Using Starward to count game time"); await LaunchStarwardForPlayTimeStatisticsAsync(context).ConfigureAwait(false); diff --git a/src/Snap.Hutao/Snap.Hutao/Service/Game/Launching/Handler/LaunchExecutionUnlockFpsHandler.cs b/src/Snap.Hutao/Snap.Hutao/Service/Game/Launching/Handler/LaunchExecutionUnlockFpsHandler.cs index 3a88a2d6..4e932b64 100644 --- a/src/Snap.Hutao/Snap.Hutao/Service/Game/Launching/Handler/LaunchExecutionUnlockFpsHandler.cs +++ b/src/Snap.Hutao/Snap.Hutao/Service/Game/Launching/Handler/LaunchExecutionUnlockFpsHandler.cs @@ -41,9 +41,6 @@ internal sealed class LaunchExecutionUnlockFpsHandler : ILaunchExecutionDelegate } } - if (context.Result.Kind is LaunchExecutionResultKind.Ok) - { - await next().ConfigureAwait(false); - } + await next().ConfigureAwait(false); } } \ No newline at end of file