Browse Source

Add Graphics::GetMonitorCount()

PredatorMF 8 years ago
parent
commit
41cca32000
2 changed files with 13 additions and 6 deletions
  1. 9 4
      Source/Urho3D/Graphics/Graphics.cpp
  2. 4 2
      Source/Urho3D/Graphics/Graphics.h

+ 9 - 4
Source/Urho3D/Graphics/Graphics.cpp

@@ -177,12 +177,12 @@ PODVector<IntVector3> Graphics::GetResolutions(int monitor) const
     PODVector<IntVector3> ret;
     // Emscripten is not able to return a valid list
 #ifndef __EMSCRIPTEN__
-    unsigned numModes = (unsigned)SDL_GetNumDisplayModes(0);
+    unsigned numModes = (unsigned)SDL_GetNumDisplayModes(monitor);
 
     for (unsigned i = 0; i < numModes; ++i)
     {
         SDL_DisplayMode mode;
-        SDL_GetDisplayMode(0, i, &mode);
+        SDL_GetDisplayMode(monitor, i, &mode);
         int width = mode.w;
         int height = mode.h;
         int rate = mode.refresh_rate;
@@ -206,11 +206,11 @@ PODVector<IntVector3> Graphics::GetResolutions(int monitor) const
     return ret;
 }
 
-IntVector2 Graphics::GetDesktopResolution() const
+IntVector2 Graphics::GetDesktopResolution(int monitor) const
 {
 #if !defined(__ANDROID__) && !defined(IOS)
     SDL_DisplayMode mode;
-    SDL_GetDesktopDisplayMode(0, &mode);
+    SDL_GetDesktopDisplayMode(monitor, &mode);
     return IntVector2(mode.w, mode.h);
 #else
     // SDL_GetDesktopDisplayMode() may not work correctly on mobile platforms. Rather return the window size
@@ -218,6 +218,11 @@ IntVector2 Graphics::GetDesktopResolution() const
 #endif
 }
 
+int Graphics::GetMonitorCount() const
+{
+    return SDL_GetNumVideoDisplays();
+}
+
 void Graphics::Maximize()
 {
     if (!window_)

+ 4 - 2
Source/Urho3D/Graphics/Graphics.h

@@ -367,11 +367,13 @@ public:
     bool GetSRGBWriteSupport() const { return sRGBWriteSupport_; }
 
     /// Return supported fullscreen resolutions (third component is refreshRate). Will be empty if listing the resolutions is not supported on the platform (e.g. Web).
-    PODVector<IntVector3> GetResolutions(int monitor = 0) const;
+    PODVector<IntVector3> GetResolutions(int monitor) const;
     /// Return supported multisampling levels.
     PODVector<int> GetMultiSampleLevels() const;
     /// Return the desktop resolution.
-    IntVector2 GetDesktopResolution() const;
+    IntVector2 GetDesktopResolution(int monitor) const;
+    /// Return the number of currently connected monitors
+    int GetMonitorCount() const;
     /// Return hardware format for a compressed image format, or 0 if unsupported.
     unsigned GetFormat(CompressedFormat format) const;
     /// Return a shader variation by name and defines.