void Window::Create(VideoMode mode, const std::string& title, unsigned long style, const ContextSettings& settings) { // Destroy the previous window implementation Close(); // Fullscreen style requires some tests if (style & Style::Fullscreen) { // Make sure there's not already a fullscreen window (only one is allowed) if (fullscreenWindow) { Err() << "Creating two fullscreen windows is not allowed, switching to windowed mode" << std::endl; style &= ~Style::Fullscreen; } else { // Make sure that the chosen video mode is compatible if (!mode.IsValid()) { Err() << "The requested video mode is not available, switching to a valid mode" << std::endl; mode = VideoMode::GetFullscreenModes()[0]; } // Update the fullscreen window fullscreenWindow = this; } } // Check validity of style if ((style & Style::Close) || (style & Style::Resize)) style |= Style::Titlebar; // Recreate the window implementation myWindow = priv::WindowImpl::New(mode, title, style); // Recreate the context myContext = priv::GlContext::New(myWindow, mode.BitsPerPixel, settings); // Perform common initializations Initialize(); }
//////////////////////////////////////////////////////////// /// Create the window //////////////////////////////////////////////////////////// void Window::Create(VideoMode Mode, const std::string& Title, unsigned long WindowStyle, const WindowSettings& Params) { // Destroy the previous window implementation Close(); // Fullscreen style requires some tests if (WindowStyle & Style::Fullscreen) { // Make sure there's not already a fullscreen window (only one is allowed) if (FullscreenWindow) { std::cerr << "Creating two fullscreen windows is not allowed, switching to windowed mode" << std::endl; WindowStyle &= ~Style::Fullscreen; } else { // Make sure the chosen video mode is compatible if (!Mode.IsValid()) { std::cerr << "The requested video mode is not available, switching to a valid mode" << std::endl; Mode = VideoMode::GetMode(0); } // Update the fullscreen window FullscreenWindow = this; } } // Check validity of style if ((WindowStyle & Style::Close) || (WindowStyle & Style::Resize)) WindowStyle |= Style::Titlebar; // Activate the global context Context::GetGlobal().SetActive(true); mySettings = Params; Initialize(priv::WindowImpl::New(Mode, Title, WindowStyle, mySettings)); }