diff --git a/package.json b/package.json index 5aa6f7f..36b005c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "real-debrid-downloader", - "version": "1.5.19", + "version": "1.5.20", "description": "Real-Debrid Downloader Desktop (Electron + React + TypeScript)", "main": "build/main/main/main.js", "author": "Sucukdeluxe", diff --git a/src/main/download-manager.ts b/src/main/download-manager.ts index a337dd5..e4ec98b 100644 --- a/src/main/download-manager.ts +++ b/src/main/download-manager.ts @@ -3510,6 +3510,17 @@ export class DownloadManager extends EventEmitter { const maxStallRetries = maxItemRetries; while (true) { try { + // Wait while paused — don't check cooldown or unrestrict while paused + while (this.session.paused && this.session.running && !active.abortController.signal.aborted) { + item.status = "paused"; + item.fullStatus = "Pausiert"; + item.speedBps = 0; + this.emitState(); + await sleep(120); + } + if (active.abortController.signal.aborted) { + throw new Error(`aborted:${active.abortReason}`); + } // Check provider cooldown before attempting unrestrict const lastProvider = item.provider || ""; const cooldownProvider = lastProvider || this.settings.providerPrimary || "unknown"; diff --git a/src/main/extractor.ts b/src/main/extractor.ts index 8a38705..b913763 100644 --- a/src/main/extractor.ts +++ b/src/main/extractor.ts @@ -445,7 +445,9 @@ function lowerExtractProcessPriority(childPid: number | undefined): void { return; } try { - os.setPriority(pid, os.constants.priority.PRIORITY_BELOW_NORMAL); + // PRIORITY_LOW = IDLE_PRIORITY_CLASS on Windows, which also lowers I/O priority + // so extraction doesn't starve downloads or UI from disk bandwidth + os.setPriority(pid, os.constants.priority.PRIORITY_LOW); } catch { // ignore: priority lowering is best-effort }