13 Commits

Author SHA1 Message Date
Martijn Laan
9e1b67740b
Add info about VerifyPrecompiledFiles to the errors. 2025-05-30 11:25:04 +02:00
Martijn Laan
273d83e2c3
Add CheckTrust setting at the right level. 2025-05-30 11:00:17 +02:00
Martijn Laan
5f02dcef32
Check trust of islzma*.exe. Todo: add directive to disable + doc this. 2025-05-29 21:18:00 +02:00
Martijn Laan
82a13227cf
Various tweaks. 2025-05-28 16:31:06 +02:00
Jordan Russell
b7a53ed9aa
LZMACompressor: Report any exception message if worker thread terminates unexpectedly. 2025-05-01 03:57:06 -05:00
Jordan Russell
63aaaa8dac
LZMACompressor: Report progress asynchronously.
Couple of improvements here:

1. Previously, ProgressProc was called whenever the LZMA encoder decided to report progress. This usually worked OK, but with some settings/data, there could be long delays between each progress report, e.g. half a second or more, and this made the IDE's UI slow to respond. Now, instead of waiting on progress reports, the main thread wakes itself up at a fixed interval to check for progress changes.

2. When progress was being reported, the worker thread previously waited until the main thread finished handling the event. (I can't recall exactly why it did that; it may have been an attempt to improve UI responsiveness on single-core systems by effectively forcing context switches.) This wait has been eliminated, allowing the main thread to update its UI while compression continues concurrently.
2024-11-14 02:58:48 -06:00
Jordan Russell
8c5e03cdfe
LZMACompressor: Use intrinsic InterlockedExchangeAdd. 2024-11-10 01:54:06 -06:00
Jordan Russell
1c085a090c
LZMACompressor: Replace Integer64 usage. 2024-11-09 23:56:08 -06:00
Jordan Russell
b445cf40a3
LZMACompressor: Add more barriers.
Again, not sure whether or not Windows on Arm's x86 emulator is weakly-ordered.
(In a native Arm64 build, they would be needed.)
2024-11-09 02:53:00 -06:00
Jordan Russell
0e3bd960f8
LZMACompressor: Release locks with InterlockedExchange.
Not sure if ordinary stores can be reordered under Windows on Arm's x86 emulator.
InterlockedExchange provides a full barrier.
2024-11-09 02:05:07 -06:00
Jordan Russell
f41bfe10b5
LZMACompressor: Fix race in NoMoreInput check.
Previously, it checked if the input buffer was empty and then if NoMoreInput=True. That's backwards; the input buffer could become non-empty in between. If that happened, compression could end with that remaining input unprocessed, leading to a "Setup files are corrupted" error.

It's likely nobody ever ran into this, though. I could only reproduce it by adding a Sleep between the input buffer and NoMoreInput checks, and a Sleep at the end of StartEncode.
2024-11-09 01:12:54 -06:00
Martijn Laan
529c1a1c31
Fix/update some comments. 2024-10-02 19:29:01 +02:00
Martijn Laan
7d3b4aa85a
Rename/group the compression units. Stop using Compression.Base (Shared.Compress) in Compil32. 2024-08-05 17:25:42 +02:00