Skip to content

Commit 9fcf904

Browse files
committed
Merge branch 'main' into preview
2 parents 5cd5e4b + 0c30aed commit 9fcf904

File tree

7 files changed

+48
-18
lines changed

7 files changed

+48
-18
lines changed

CollapseLauncher/Classes/RegistryMonitor/RegistryMonitor.cs

Lines changed: 22 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -253,7 +253,7 @@ public void Start()
253253
}
254254

255255
_eventTerminate.Reset();
256-
_thread = new Thread(MonitorThread)
256+
_thread = new Thread(MonitorThread)
257257
{
258258
IsBackground = true
259259
};
@@ -296,36 +296,42 @@ private void MonitorThread()
296296

297297
private void ThreadLoop()
298298
{
299-
int result = PInvoke.RegOpenKeyEx(_registryHive, _registrySubName, 0,
299+
int result = PInvoke.RegOpenKeyEx(_registryHive,
300+
_registrySubName,
301+
0,
300302
(uint)ACCESS_MASK.STANDARD_RIGHTS_READ | (uint)RegKeyAccess.KEY_QUERY_VALUE | (uint)RegKeyAccess.KEY_NOTIFY,
301303
out var registryKey);
302304
if (result != 0)
303305
throw new Win32Exception(result);
304306

305-
WaitHandle[] waitHandles = null;
307+
AutoResetEvent eventNotify = new AutoResetEvent(false);
306308
try
307309
{
308-
AutoResetEvent eventNotify = new AutoResetEvent(false);
309-
waitHandles = [eventNotify, _eventTerminate];
310+
WaitHandle[] waitHandles = [eventNotify, _eventTerminate];
311+
310312
while (!_eventTerminate.WaitOne(0, true))
311313
{
312314
if (_disposed) break;
313-
#pragma warning disable CS0618 // Type or member is obsolete
314-
result = PInvoke.RegNotifyChangeKeyValue(registryKey, true, _regFilter, eventNotify.Handle, true);
315-
#pragma warning restore CS0618 // Type or member is obsolete
316-
if (result != 0)
317-
throw new Win32Exception(result);
318-
319-
if (WaitHandle.WaitAny(waitHandles) != 0
320-
|| _regFilter != RegChangeNotifyFilter.Value)
315+
316+
int resultNotify = PInvoke.RegNotifyChangeKeyValue(registryKey,
317+
true,
318+
_regFilter,
319+
eventNotify.SafeWaitHandle,
320+
true);
321+
if (resultNotify != 0)
322+
throw new Win32Exception(resultNotify);
323+
324+
int waitHandlerAny = WaitHandle.WaitAny(waitHandles);
325+
if (waitHandlerAny != 0)
321326
{
322327
continue;
323328
}
324-
#if DEBUG
329+
330+
#if DEBUG
325331
LogWriteLine($"[RegistryMonitor] Found change(s) in registry!\r\n" +
326332
$" Hive: {_registryHive}\r\n" +
327333
$" subName: {_registrySubName}", LogType.Debug, true);
328-
#endif
334+
#endif
329335
OnRegChanged();
330336
}
331337
}
@@ -336,7 +342,7 @@ private void ThreadLoop()
336342
((HResult)PInvoke.RegCloseKey(registryKey)).ThrowOnFailure();
337343
}
338344

339-
for (int i = 0; i < waitHandles?.Length; i++) waitHandles[i]?.Dispose();
345+
eventNotify.Dispose();
340346
}
341347
}
342348
}

CollapseLauncher/XAMLs/MainApp/Pages/GameSettingsPages/GenshinGameSettingsPage.xaml.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,9 +95,15 @@ public GenshinGameSettingsPage()
9595
private void ToggleRegistrySubscribe(bool doSubscribe)
9696
{
9797
if (doSubscribe)
98+
{
9899
RegistryWatcher.RegChanged += RegistryListener;
100+
RegistryWatcher.Start();
101+
}
99102
else
103+
{
104+
RegistryWatcher.Stop();
100105
RegistryWatcher.RegChanged -= RegistryListener;
106+
}
101107
}
102108

103109
private void RegistryListener(object sender, EventArgs e)

CollapseLauncher/XAMLs/MainApp/Pages/GameSettingsPages/HonkaiGameSettingsPage.xaml.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,9 +53,15 @@ public HonkaiGameSettingsPage()
5353
private void ToggleRegistrySubscribe(bool doSubscribe)
5454
{
5555
if (doSubscribe)
56+
{
5657
RegistryWatcher.RegChanged += RegistryListener;
58+
RegistryWatcher.Start();
59+
}
5760
else
61+
{
62+
RegistryWatcher.Stop();
5863
RegistryWatcher.RegChanged -= RegistryListener;
64+
}
5965
}
6066

6167
private void RegistryListener(object sender, EventArgs e)

CollapseLauncher/XAMLs/MainApp/Pages/GameSettingsPages/StarRailGameSettingsPage.xaml.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,9 +59,15 @@ public StarRailGameSettingsPage()
5959
private void ToggleRegistrySubscribe(bool doSubscribe)
6060
{
6161
if (doSubscribe)
62+
{
6263
RegistryWatcher.RegChanged += RegistryListener;
64+
RegistryWatcher.Start();
65+
}
6366
else
67+
{
68+
RegistryWatcher.Stop();
6469
RegistryWatcher.RegChanged -= RegistryListener;
70+
}
6571
}
6672

6773
private void RegistryListener(object sender, EventArgs e)

CollapseLauncher/XAMLs/MainApp/Pages/GameSettingsPages/ZenlessGameSettingsPage.xaml.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,9 +62,15 @@ public ZenlessGameSettingsPage()
6262
private void ToggleRegistrySubscribe(bool doSubscribe)
6363
{
6464
if (doSubscribe)
65+
{
6566
RegistryWatcher.RegChanged += RegistryListener;
67+
RegistryWatcher.Start();
68+
}
6669
else
70+
{
71+
RegistryWatcher.Stop();
6772
RegistryWatcher.RegChanged -= RegistryListener;
73+
}
6874
}
6975

7076
private void RegistryListener(object sender, EventArgs e)

CollapseLauncher/XAMLs/MainApp/Pages/HomePage.xaml.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1178,7 +1178,7 @@ private async void CheckRunningGameInstance(CancellationToken token)
11781178
#region Community Button
11791179
private void OpenCommunityButtonLink(object sender, RoutedEventArgs e)
11801180
{
1181-
DispatcherQueue?.TryEnqueue(CommunityToolsBtn.Flyout.Hide);
1181+
CommunityToolsBtn.Flyout.Hide();
11821182
OpenButtonLinkFromTag(sender, e);
11831183
}
11841184
#endregion

Hi3Helper.Win32

0 commit comments

Comments
 (0)