X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FMain%2FWindowBuilder.cxx;h=79fff968f98a1b9ccd04b536218cf1dc7ba0ccec;hb=b587400846111cc4d6713dcdd38b715c97923d5a;hp=aaabbb2dbb58734e82b05e7f8efb6693ad5a7e03;hpb=6f802959cef6ed5d00640c80b6209a994ff871b5;p=flightgear.git diff --git a/src/Main/WindowBuilder.cxx b/src/Main/WindowBuilder.cxx index aaabbb2db..79fff968f 100644 --- a/src/Main/WindowBuilder.cxx +++ b/src/Main/WindowBuilder.cxx @@ -35,6 +35,8 @@ string makeName(const string& prefix, int num) ref_ptr WindowBuilder::windowBuilder; +const string WindowBuilder::defaultWindowName("FlightGear"); + void WindowBuilder::initWindowBuilder(bool stencil) { windowBuilder = new WindowBuilder(stencil); @@ -71,7 +73,7 @@ WindowBuilder::makeDefaultTraits(bool stencil) traits->windowName = "FlightGear"; // XXX should check per window too. traits->sampleBuffers = fgGetBool("/sim/rendering/multi-sample-buffers", traits->sampleBuffers); - traits->samples = fgGetBool("/sim/rendering/multi-samples", traits->samples); + traits->samples = fgGetInt("/sim/rendering/multi-samples", traits->samples); traits->vsync = fgGetBool("/sim/rendering/vsync-enable", traits->vsync); if (fullscreen) { unsigned width = 0; @@ -194,7 +196,6 @@ GraphicsWindow* WindowBuilder::buildWindow(const SGPropertyNode* winNode) if (traitsSet) { GraphicsContext* gc = GraphicsContext::createGraphicsContext(traits); if (gc) { - gc->realize(); GraphicsWindow* window = WindowSystemAdapter::getWSA() ->registerWindow(gc, traits->windowName); if (drawGUI) @@ -204,23 +205,26 @@ GraphicsWindow* WindowBuilder::buildWindow(const SGPropertyNode* winNode) return 0; } } else { + // XXX What if the window has no traits, but does have a name? + // We should create a "default window" registered with that name. return getDefaultWindow(); } } GraphicsWindow* WindowBuilder::getDefaultWindow() { - if (defaultWindow.valid()) - return defaultWindow.get(); + GraphicsWindow* defaultWindow + = WindowSystemAdapter::getWSA()->findWindow(defaultWindowName); + if (defaultWindow) + return defaultWindow; GraphicsContext::Traits* traits = new GraphicsContext::Traits(*defaultTraits); traits->windowName = "FlightGear"; GraphicsContext* gc = GraphicsContext::createGraphicsContext(traits); if (gc) { - gc->realize(); defaultWindow = WindowSystemAdapter::getWSA() - ->registerWindow(gc, traits->windowName); - return defaultWindow.get(); + ->registerWindow(gc, defaultWindowName); + return defaultWindow; } else { return 0; }