priv->windows.erase(wnd.get_private().window);
}
+const VideoMode &Display::get_desktop_mode() const
+{
+ if(!primary_monitor || !primary_monitor->desktop_mode)
+ throw logic_error("no desktop mode");
+ return *primary_monitor->desktop_mode;
+}
+
+void Display::restore_mode()
+{
+ for(list<Monitor>::const_iterator i=monitors.begin(); i!=monitors.end(); ++i)
+ if(i->desktop_mode)
+ set_mode(*i->desktop_mode, false);
+}
+
+const VideoMode *Display::find_matching_mode(const VideoMode &mode) const
+{
+ for(list<VideoMode>::const_iterator i=modes.begin(); i!=modes.end(); ++i)
+ {
+ if(mode.monitor && i->monitor!=mode.monitor)
+ continue;
+ if(mode.rate && i->rate!=mode.rate)
+ continue;
+ if(i->width==mode.width && i->height==mode.height)
+ return &*i;
+ }
+
+ return 0;
+}
+
void Display::tick()
{
check_error();