From 634fbb0bf63f6ea165c7a1daf068b81385144e87 Mon Sep 17 00:00:00 2001 From: ValdikSS Date: Thu, 25 Dec 2025 22:24:47 +0300 Subject: [PATCH] When waiting for last page, wait exact page number to be printed --- captbackend/Core/CaptPrinter.cpp | 10 +++++++--- captbackend/Core/CaptPrinter.hpp | 1 + 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/captbackend/Core/CaptPrinter.cpp b/captbackend/Core/CaptPrinter.cpp index eb4a410..c42e481 100644 --- a/captbackend/Core/CaptPrinter.cpp +++ b/captbackend/Core/CaptPrinter.cpp @@ -98,10 +98,10 @@ std::optional CaptPrinter::WritePage(StopTokenTy } // Has value if error -std::optional CaptPrinter::WaitLastPage(StopTokenType stopToken, Capt::Utility::BufferedPage& page) { +std::optional CaptPrinter::WaitLastPage(StopTokenType stopToken, Capt::Utility::BufferedPage& page, unsigned pageNum) { while (!stopToken.stop_requested()) { std::this_thread::sleep_for(1s); - auto status = this->WaitPrintEnd(stopToken); + auto status = this->WaitPrintEnd(stopToken, pageNum); if (!status) { return std::nullopt; } @@ -118,6 +118,10 @@ std::optional CaptPrinter::WaitLastPage(StopToke return std::nullopt; } +std::optional CaptPrinter::WaitLastPage(StopTokenType stopToken, Capt::Utility::BufferedPage& page) { + return CaptPrinter::WaitLastPage(stopToken, page, 0); +} + bool CaptPrinter::Print(StopTokenType stopToken, RasterStreambuf& rasterStr) { unsigned page = 0; Capt::Utility::BufferedPage prevPage; @@ -150,7 +154,7 @@ bool CaptPrinter::Print(StopTokenType stopToken, RasterStreambuf& rasterStr) { Log::Info() << "Waiting for last page..."; if (page != 0) { - auto res = this->WaitLastPage(stopToken, prevPage); + auto res = this->WaitLastPage(stopToken, prevPage, page); if (res.has_value()) { Log::Debug() << "WaitLastPage failed: " << *res; Log::Critical() << "Failed to write page (" << StatusMessage(*res) << ')'; diff --git a/captbackend/Core/CaptPrinter.hpp b/captbackend/Core/CaptPrinter.hpp index 8c87497..08eb810 100644 --- a/captbackend/Core/CaptPrinter.hpp +++ b/captbackend/Core/CaptPrinter.hpp @@ -23,6 +23,7 @@ class CaptPrinter : public Capt::BasicCaptPrinter { std::optional WritePage(StopTokenType stopToken, Capt::Utility::BufferedPage& page, Capt::Utility::BufferedPage* prev); // Has value if error + std::optional WaitLastPage(StopTokenType stopToken, Capt::Utility::BufferedPage& page, unsigned pageNum); std::optional WaitLastPage(StopTokenType stopToken, Capt::Utility::BufferedPage& page); bool Print(StopTokenType stopToken, RasterStreambuf& rasterStr);