refactor(app): one idle-loop wake predicate for background results
hasPendingRPCResults() becomes hasPendingBackgroundResults(): the one check the idle loop makes, every <= 200 ms, for work that finished on a background thread and still has to be applied by update(). Lanes added later put their term there. It still covers only the two RPC worker lanes; no behaviour change. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
+1
-1
@@ -7432,7 +7432,7 @@ void App::verifyDebugCredential(const std::string& secret, std::function<void(bo
|
|||||||
cb(true);
|
cb(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool App::hasPendingRPCResults() const {
|
bool App::hasPendingBackgroundResults() const {
|
||||||
return (worker_ && worker_->hasPendingResults())
|
return (worker_ && worker_->hasPendingResults())
|
||||||
|| (fast_worker_ && fast_worker_->hasPendingResults());
|
|| (fast_worker_ && fast_worker_->hasPendingResults());
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -738,8 +738,11 @@ public:
|
|||||||
bool debugGateRequiresAuth() const;
|
bool debugGateRequiresAuth() const;
|
||||||
void verifyDebugCredential(const std::string& secret, std::function<void(bool)> cb);
|
void verifyDebugCredential(const std::string& secret, std::function<void(bool)> cb);
|
||||||
|
|
||||||
/// @brief Check if RPC worker has queued results waiting to be processed
|
/// @brief Something finished on a background thread and waits for update() to apply it on the main thread
|
||||||
bool hasPendingRPCResults() const;
|
/// (the RPC worker lanes). main.cpp's idle loop polls this every <= 200 ms (hasImmediateWork) and renders a
|
||||||
|
/// frame when it is true, so the result shows without input, even while the window is hidden. A new lane whose
|
||||||
|
/// results are applied in update() adds its term HERE.
|
||||||
|
bool hasPendingBackgroundResults() const;
|
||||||
bool hasTransactionSendProgress() const { return send_progress_active_ || send_submissions_in_flight_ > 0 || !pending_opids_.empty(); }
|
bool hasTransactionSendProgress() const { return send_progress_active_ || send_submissions_in_flight_ > 0 || !pending_opids_.empty(); }
|
||||||
std::string transactionSendProgressText() const;
|
std::string transactionSendProgressText() const;
|
||||||
std::string transactionRefreshProgressText() const;
|
std::string transactionRefreshProgressText() const;
|
||||||
|
|||||||
+2
-2
@@ -1737,9 +1737,9 @@ int main(int argc, char* argv[])
|
|||||||
auto sinceLast = std::chrono::duration_cast<std::chrono::milliseconds>(
|
auto sinceLast = std::chrono::duration_cast<std::chrono::milliseconds>(
|
||||||
now - lastPeriodicFrame).count();
|
now - lastPeriodicFrame).count();
|
||||||
|
|
||||||
// Immediate triggers: async RPC results, visible notifications, work in progress
|
// Immediate triggers: background results, visible notifications, work in progress
|
||||||
// (also what keeps a hidden or occluded window responsive: ~5 fps while it lasts)
|
// (also what keeps a hidden or occluded window responsive: ~5 fps while it lasts)
|
||||||
bool hasImmediateWork = app.hasPendingRPCResults()
|
bool hasImmediateWork = app.hasPendingBackgroundResults()
|
||||||
|| app.hasTransactionSendProgress()
|
|| app.hasTransactionSendProgress()
|
||||||
|| app.isTransactionRefreshInProgress()
|
|| app.isTransactionRefreshInProgress()
|
||||||
|| app.isShuttingDown()
|
|| app.isShuttingDown()
|
||||||
|
|||||||
Reference in New Issue
Block a user