]> git.tdb.fi Git - libs/gui.git/blobdiff - source/graphics/windows/display.cpp
Expose functions for finding video modes from Display
[libs/gui.git] / source / graphics / windows / display.cpp
index 43f86995b893343b1a2257053c5ac61b95773d9c..4c893335c9ec06cd3fafbef01f5c7618c482159e 100644 (file)
@@ -11,6 +11,8 @@ Display::Display(const string &):
        primary_monitor(0),
        priv(new Private)
 {
+       static ErrorDialog err_dlg(0);
+
        for(unsigned i=0;; ++i)
        {
                DISPLAY_DEVICE adapter_dev;
@@ -42,7 +44,7 @@ Display::Display(const string &):
                        mode.index = modes.size();
                        mode.monitor = &monitor;
                        mode.rate = info.dmDisplayFrequency;
-                       if(find_matching_mode(mode))
+                       if(find_mode(mode))
                                continue;
 
                        modes.push_back(mode);
@@ -60,7 +62,7 @@ Display::~Display()
 
 void Display::set_mode(const VideoMode &requested_mode, bool)
 {
-       const VideoMode *mode = find_matching_mode(requested_mode);
+       const VideoMode *mode = find_mode(requested_mode);
        if(!mode)
                throw unsupported_video_mode(requested_mode);
 
@@ -78,6 +80,10 @@ void Display::set_mode(const VideoMode &requested_mode, bool)
        LONG ret = ChangeDisplaySettingsEx(priv->monitors[mode->monitor->index].c_str(), &info, NULL, CDS_FULLSCREEN, NULL);
        if(ret!=DISP_CHANGE_SUCCESSFUL)
                throw unsupported_video_mode(requested_mode);
+
+       for(list<Monitor>::iterator i=monitors.begin(); i!=monitors.end(); ++i)
+               if(&*i==mode->monitor)
+                       i->current_mode = mode;
 }
 
 bool Display::process_events()