diff --git a/src/main/constants.ts b/src/main/constants.ts index 7f95d94..6cd0905 100644 --- a/src/main/constants.ts +++ b/src/main/constants.ts @@ -64,6 +64,7 @@ export function defaultSettings(): AppSettings { reconnectWaitSeconds: 45, completedCleanupPolicy: "never", maxParallel: 4, + maxParallelExtract: 2, retryLimit: 0, speedLimitEnabled: false, speedLimitKbps: 0, diff --git a/src/main/download-manager.ts b/src/main/download-manager.ts index 6b33a5b..6ad9d3a 100644 --- a/src/main/download-manager.ts +++ b/src/main/download-manager.ts @@ -2997,7 +2997,7 @@ export class DownloadManager extends EventEmitter { } private async acquirePostProcessSlot(): Promise { - const maxConcurrent = 2; + const maxConcurrent = this.settings.maxParallelExtract || 2; if (this.packagePostProcessActive < maxConcurrent) { this.packagePostProcessActive += 1; return; diff --git a/src/main/storage.ts b/src/main/storage.ts index f512b51..07776c0 100644 --- a/src/main/storage.ts +++ b/src/main/storage.ts @@ -96,6 +96,7 @@ export function normalizeSettings(settings: AppSettings): AppSettings { autoResumeOnStart: Boolean(settings.autoResumeOnStart), autoReconnect: Boolean(settings.autoReconnect), maxParallel: clampNumber(settings.maxParallel, defaults.maxParallel, 1, 50), + maxParallelExtract: clampNumber(settings.maxParallelExtract, defaults.maxParallelExtract, 1, 8), retryLimit: clampNumber(settings.retryLimit, defaults.retryLimit, 0, 99), reconnectWaitSeconds: clampNumber(settings.reconnectWaitSeconds, defaults.reconnectWaitSeconds, 10, 600), completedCleanupPolicy: settings.completedCleanupPolicy, diff --git a/src/renderer/App.tsx b/src/renderer/App.tsx index 29e97c0..7c42338 100644 --- a/src/renderer/App.tsx +++ b/src/renderer/App.tsx @@ -2431,6 +2431,7 @@ export function App(): ReactElement { +
setNum("maxParallelExtract", Math.max(1, Math.min(8, Number(e.target.value) || 2)))} />
diff --git a/src/shared/types.ts b/src/shared/types.ts index 9093cdc..4c2881c 100644 --- a/src/shared/types.ts +++ b/src/shared/types.ts @@ -65,6 +65,7 @@ export interface AppSettings { reconnectWaitSeconds: number; completedCleanupPolicy: FinishedCleanupPolicy; maxParallel: number; + maxParallelExtract: number; retryLimit: number; speedLimitEnabled: boolean; speedLimitKbps: number;