+ for(unsigned i=0; i<monitors.size(); ++i)
+ {
+ int j = desktop_mode_indices[i];
+ if(j>=0)
+ monitors[i].desktop_settings.mode = &modes[j];
+ monitors[i].current_settings = monitors[i].desktop_settings;
+ }
+
+ sort(monitors, [](const Msp::Graphics::Monitor &m1, const Msp::Graphics::Monitor &m2){
+ if(m1.desktop_settings.mode && !m2.desktop_settings.mode)
+ return true;
+ if(!m1.desktop_settings.mode && m2.desktop_settings.mode)
+ return false;
+ return m1.desktop_settings.x<m2.desktop_settings.x;
+ });
+
+ for(unsigned i=0; i<modes.size(); ++i)
+ {
+ auto j = find_member(monitors, mode_monitor_indices[i], &Monitor::index);
+ modes[i].monitor = &*j;
+ j->video_modes.push_back(&modes[i]);
+ }
+
+ Monitor *prev_enabled = nullptr;