diff --git a/src/Magnum/GL/Context.cpp b/src/Magnum/GL/Context.cpp index b9fb43676..f8b1ea138 100644 --- a/src/Magnum/GL/Context.cpp +++ b/src/Magnum/GL/Context.cpp @@ -626,9 +626,9 @@ Context& Context::current() { void Context::makeCurrent(Context* context) { currentContext = context; } -Context::Context(NoCreateT, Int argc, const char** argv, void functionLoader(Context&)): Context{NoCreate, Utility::Arguments{"magnum"}, argc, argv, functionLoader} {} +Context::Context(NoCreateT, Int argc, const char** argv, void functionLoader(Context&), InternalFlags flags): Context{NoCreate, Utility::Arguments{"magnum"}, argc, argv, functionLoader, flags} {} -Context::Context(NoCreateT, Utility::Arguments& args, Int argc, const char** argv, void functionLoader(Context&)): _functionLoader{functionLoader}, _version{Version::None} { +Context::Context(NoCreateT, Utility::Arguments& args, Int argc, const char** argv, void functionLoader(Context&), InternalFlags flags): Context{NoCreate, functionLoader, flags} { /* Parse arguments */ CORRADE_INTERNAL_ASSERT(args.prefix() == "magnum"); args.addOption("disable-workarounds").setHelp("disable-workarounds", "driver workarounds to disable\n (see https://doc.magnum.graphics/magnum/opengl-workarounds.html for detailed info)", "LIST") @@ -644,8 +644,8 @@ Context::Context(NoCreateT, Utility::Arguments& args, Int argc, const char** arg /* Decide how to display initialization log */ if(args.value("log") == "verbose" || args.value("log") == "VERBOSE") _internalFlags |= InternalFlag::DisplayVerboseInitializationLog; - else if(!(args.value("log") == "quiet" || args.value("log") == "QUIET")) - _internalFlags |= InternalFlag::DisplayInitializationLog; + else if(args.value("log") == "quiet" || args.value("log") == "QUIET") + _internalFlags &= ~InternalFlag::DisplayInitializationLog; /* Decide whether to enable GPU validation */ if(args.value("gpu-validation") == "on" || args.value("gpu-validation") == "ON") @@ -660,6 +660,8 @@ Context::Context(NoCreateT, Utility::Arguments& args, Int argc, const char** arg _disabledExtensions.push_back(extension); } +Context::Context(NoCreateT, void functionLoader(Context&), InternalFlags flags): _functionLoader{functionLoader}, _version{Version::None}, _internalFlags{flags} {} + Context::Context(Context&& other) noexcept: _version{other._version}, #ifndef MAGNUM_TARGET_WEBGL _flags{other._flags}, diff --git a/src/Magnum/GL/Context.h b/src/Magnum/GL/Context.h index 655e8168a..cc05e0371 100644 --- a/src/Magnum/GL/Context.h +++ b/src/Magnum/GL/Context.h @@ -745,7 +745,9 @@ class MAGNUM_GL_EXPORT Context { enum class InternalFlag: UnsignedByte { DisplayInitializationLog = 1 << 0, DisplayVerboseInitializationLog = DisplayInitializationLog|(1 << 1), - GpuValidation = 1 << 2 + GpuValidation = 1 << 2, + + Default = DisplayInitializationLog }; typedef Containers::EnumSet InternalFlags; CORRADE_ENUMSET_FRIEND_OPERATORS(InternalFlags) @@ -766,9 +768,10 @@ class MAGNUM_GL_EXPORT Context { #endif /* Made protected so it's possible to test the NoCreate constructor and also not needed to friend Platform::GLContext. */ - explicit Context(NoCreateT, Int argc, const char** argv, void functionLoader(Context&)); - explicit Context(NoCreateT, Utility::Arguments&& args, Int argc, const char** argv, void functionLoader(Context&)): Context{NoCreate, args, argc, argv, functionLoader} {} - explicit Context(NoCreateT, Utility::Arguments& args, Int argc, const char** argv, void functionLoader(Context&)); + explicit Context(NoCreateT, Int argc, const char** argv, void functionLoader(Context&), InternalFlags flags = InternalFlag::Default); + explicit Context(NoCreateT, Utility::Arguments&& args, Int argc, const char** argv, void functionLoader(Context&), InternalFlags flags = InternalFlag::Default): Context{NoCreate, args, argc, argv, functionLoader, flags} {} + explicit Context(NoCreateT, Utility::Arguments& args, Int argc, const char** argv, void functionLoader(Context&), InternalFlags flags = InternalFlag::Default); + explicit Context(NoCreateT, void functionLoader(Context&), InternalFlags flags = InternalFlag::Default); bool tryCreate(); void create();