Fix inconsistent monitor id handling in DxgiDuplicatorController

In all the other functions `monitor_id` is a global id from range [0..total monitor count), but each DxgiAdapterDuplicator always assumes that it gets a local id from range [0..adapter monitor count).

Bug: chromium:395807060
Change-Id: I4bb232ee5d83f09859534f813111446763fe9fc9
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/376840
Commit-Queue: Ilya Nikolaevskiy <ilnik@webrtc.org>
Reviewed-by: Henrik Andreassson <henrika@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#43867}
This commit is contained in:
Ilya Nikolaevskiy 2025-02-11 12:43:23 +01:00 committed by WebRTC LUCI CQ
parent 9bbd4d34e9
commit 7f0c39115e

View File

@ -384,8 +384,18 @@ bool DxgiDuplicatorController::DoDuplicateOne(Context* context,
int64_t DxgiDuplicatorController::GetNumFramesCaptured(int monitor_id) const {
int64_t min = INT64_MAX;
if (monitor_id < 0) {
for (const auto& duplicator : duplicators_) {
min = std::min(min, duplicator.GetNumFramesCaptured(monitor_id));
}
return min;
}
for (const auto& duplicator : duplicators_) {
min = std::min(min, duplicator.GetNumFramesCaptured(monitor_id));
if (monitor_id >= duplicator.screen_count()) {
monitor_id -= duplicator.screen_count();
} else {
return duplicator.GetNumFramesCaptured(monitor_id);
}
}
return min;
}