Skip to content

Commit 8d5c50c

Browse files
committed
fix(enumAvailableDevices): exception when enumerating
1 parent aa72d11 commit 8d5c50c

File tree

2 files changed

+6
-5
lines changed

2 files changed

+6
-5
lines changed

src/windows/win_display_device_general.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,8 @@ namespace display_device {
4242
}
4343

4444
for (const auto &[device_id, data] : source_data) {
45-
const auto source_id_index {data.m_active_source.value_or(0)};
45+
// In case we have no active source, we will take the first available source id
46+
const auto source_id_index {data.m_active_source.value_or(data.m_source_id_to_path_index.begin()->first)};
4647
const auto &best_path {display_data->m_paths.at(data.m_source_id_to_path_index.at(source_id_index))};
4748
const auto friendly_name {m_w_api->getFriendlyName(best_path)};
4849
const bool is_active {win_utils::isActive(best_path)};

tests/unit/windows/utils/mock_win_api_layer.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ namespace {
1111
data.m_paths.back().flags = DISPLAYCONFIG_PATH_ACTIVE;
1212
data.m_paths.back().sourceInfo.sourceModeInfoIdx = data.m_modes.size();
1313
data.m_paths.back().sourceInfo.adapterId = {1, 1};
14-
data.m_paths.back().sourceInfo.id = 0;
14+
data.m_paths.back().sourceInfo.id = 1;
1515
data.m_paths.back().targetInfo.targetAvailable = TRUE;
1616
data.m_paths.back().targetInfo.refreshRate = {120, 1};
1717

@@ -29,7 +29,7 @@ namespace {
2929
data.m_paths.back().flags = DISPLAYCONFIG_PATH_ACTIVE;
3030
data.m_paths.back().sourceInfo.sourceModeInfoIdx = data.m_modes.size();
3131
data.m_paths.back().sourceInfo.adapterId = {2, 2};
32-
data.m_paths.back().sourceInfo.id = 0;
32+
data.m_paths.back().sourceInfo.id = 2;
3333
data.m_paths.back().targetInfo.targetAvailable = TRUE;
3434
data.m_paths.back().targetInfo.refreshRate = {119995, 1000};
3535

@@ -45,7 +45,7 @@ namespace {
4545
data.m_paths.back().flags = DISPLAYCONFIG_PATH_ACTIVE;
4646
data.m_paths.back().sourceInfo.sourceModeInfoIdx = data.m_modes.size();
4747
data.m_paths.back().sourceInfo.adapterId = {3, 3};
48-
data.m_paths.back().sourceInfo.id = 0;
48+
data.m_paths.back().sourceInfo.id = 3;
4949
data.m_paths.back().targetInfo.targetAvailable = TRUE;
5050
data.m_paths.back().targetInfo.refreshRate = {60, 1};
5151

@@ -64,7 +64,7 @@ namespace {
6464
data.m_paths.back().flags = DISPLAYCONFIG_PATH_ACTIVE;
6565
data.m_paths.back().sourceInfo.sourceModeInfoIdx = data.m_modes.size();
6666
data.m_paths.back().sourceInfo.adapterId = {4, 4};
67-
data.m_paths.back().sourceInfo.id = 0;
67+
data.m_paths.back().sourceInfo.id = 4;
6868
data.m_paths.back().targetInfo.targetAvailable = TRUE;
6969
data.m_paths.back().targetInfo.refreshRate = {90, 1};
7070

0 commit comments

Comments
 (0)