Browse Source

Fix crash in DisplayManager

This was caused by the DisplayManger code assuming no gaps between
displayId's in displays map. This caused issues on windows multimonitor
setups where the displayIds could skip one port on one GPU.

Related to #9
Tobias Hieta 9 năm trước cách đây
mục cha
commit
f7da4ab261
2 tập tin đã thay đổi với 2 bổ sung2 xóa
  1. 1 1
      src/display/DisplayManager.cpp
  2. 1 1
      src/display/win/DisplayManagerWin.cpp

+ 1 - 1
src/display/DisplayManager.cpp

@@ -19,7 +19,7 @@ bool DisplayManager::initialize()
   QLOG_INFO() << QString("DisplayManager found %1 Display(s).").arg(displays.size());
 
   // list video modes
-  for (int displayid = 0; displayid < displays.size(); displayid++)
+  foreach(int displayid, displays.keys())
   {
     DMDisplayPtr display = displays[displayid];
     QLOG_INFO() << QString("Available modes for Display #%1 (%2)").arg(displayid).arg(display->name);

+ 1 - 1
src/display/win/DisplayManagerWin.cpp

@@ -150,7 +150,7 @@ DisplayManagerWin::~DisplayManagerWin()
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 int DisplayManagerWin::getDisplayFromPoint(int x, int y)
 {
-  for (int displayId = 0; displayId < displays.size(); displayId++)
+  foreach (int displayId, displays.keys())
   {
     int currentMode = getCurrentDisplayMode(displayId);
     if (currentMode > 0)