Display::Display(const string &):
primary_monitor(0),
- priv(new Private)
+ priv(new Private),
+ focus_window(0)
{
static ErrorDialog err_dlg(0);
monitors.push_back(Monitor());
Monitor &monitor = monitors.back();
monitor.index = monitors.size()-1;
+ monitor.name = adapter_dev.DeviceString;
priv->monitors.push_back(adapter_dev.DeviceName);
if(adapter_dev.StateFlags&DISPLAY_DEVICE_PRIMARY_DEVICE)
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);
monitor.video_modes.push_back(&modes.back());
if(have_current && info.dmPelsWidth==current.dmPelsWidth && info.dmPelsHeight==current.dmPelsHeight && info.dmDisplayFrequency==current.dmDisplayFrequency)
- monitor.desktop_mode = &modes.back();
+ monitor.desktop_settings.mode = &modes.back();
}
}
}
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);
DEVMODE info;
+ info.dmDeviceName[0] = 0;
+ info.dmSpecVersion = DM_SPECVERSION;
+ info.dmDriverVersion = 0;
info.dmSize = sizeof(DEVMODE);
+ info.dmDriverExtra = 0;
info.dmFields = DM_PELSWIDTH|DM_PELSHEIGHT;
info.dmPelsWidth = mode->width;
info.dmPelsHeight = mode->height;
for(list<Monitor>::iterator i=monitors.begin(); i!=monitors.end(); ++i)
if(&*i==mode->monitor)
- i->current_mode = mode;
+ i->current_settings.mode = mode;
}
bool Display::process_events()
MSG msg;
if(PeekMessage(&msg, 0, 0, 0, PM_REMOVE))
{
+ TranslateMessage(&msg);
DispatchMessage(&msg);
return true;
}