Jelajahi Sumber

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 tahun lalu
induk
melakukan
f7da4ab261
2 mengubah file dengan 2 tambahan dan 2 penghapusan
  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)