diff --git a/modules/FindMagnum.cmake b/modules/FindMagnum.cmake index ba59b13c9..fc91d54c5 100644 --- a/modules/FindMagnum.cmake +++ b/modules/FindMagnum.cmake @@ -246,7 +246,7 @@ foreach(component ${Magnum_FIND_COMPONENTS}) if(component MATCHES ".+AudioImporter") set(_MAGNUM_${_COMPONENT}_DEPENDENCIES Audio) elseif(component MATCHES ".+(Font|FontConverter)") - set(_MAGNUM_${_COMPONENT}_DEPENDENCIES TextureTools Text) + set(_MAGNUM_${_COMPONENT}_DEPENDENCIES Text TextureTools) endif() list(APPEND _MAGNUM_ADDITIONAL_COMPONENTS ${_MAGNUM_${_COMPONENT}_DEPENDENCIES}) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 3810d9c9f..36223c897 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -49,6 +49,11 @@ elseif(CORRADE_GCC45_COMPATIBILITY AND NOT CORRADE_GCC44_COMPATIBILITY) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-strict-aliasing") endif() +# On MSVC remove /W3, as we are replacing it with /W4 +if(MSVC) + string(REPLACE "/W3" "" CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS}) +endif() + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CORRADE_CXX_FLAGS}") include_directories(${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR} ${CORRADE_INCLUDE_DIR}) diff --git a/src/Magnum/Platform/NaClApplication.cpp b/src/Magnum/Platform/NaClApplication.cpp index 6359758aa..8574efba6 100644 --- a/src/Magnum/Platform/NaClApplication.cpp +++ b/src/Magnum/Platform/NaClApplication.cpp @@ -58,16 +58,14 @@ NaClApplication::ConsoleDebugOutput::ConsoleDebugOutput(pp::Instance* instance): Error::setOutput(&errorOutput); } -/** @todo Delegating constructor when support for GCC 4.6 is dropped */ - -NaClApplication::NaClApplication(const Arguments& arguments, const Configuration& configuration): Instance(arguments), Graphics3DClient(this), MouseLock(this), graphics(nullptr), fullscreen(nullptr), c(nullptr) { - debugOutput = new ConsoleDebugOutput(this); +NaClApplication::NaClApplication(const Arguments& arguments, const Configuration& configuration): Instance(arguments), Graphics3DClient(this), MouseLock(this) { + _debugOutput.reset(new ConsoleDebugOutput{this}); createContext(configuration); } #ifndef DOXYGEN_GENERATING_OUTPUT -NaClApplication::NaClApplication(const Arguments& arguments): Instance(arguments), Graphics3DClient(this), MouseLock(this), c(nullptr) { - debugOutput = new ConsoleDebugOutput(this); +NaClApplication::NaClApplication(const Arguments& arguments): Instance(arguments), Graphics3DClient(this), MouseLock(this) { + _debugOutput.reset(new ConsoleDebugOutput{this}); createContext(); } #endif @@ -77,9 +75,9 @@ NaClApplication::NaClApplication(const Arguments& arguments, std::nullptr_t) #else NaClApplication::NaClApplication(const Arguments& arguments, void*) #endif - : Instance(arguments), Graphics3DClient(this), MouseLock(this), c(nullptr) + : Instance(arguments), Graphics3DClient(this), MouseLock(this) { - debugOutput = new ConsoleDebugOutput(this); + _debugOutput.reset(new ConsoleDebugOutput{this}); } void NaClApplication::createContext() { createContext({}); } @@ -89,9 +87,9 @@ void NaClApplication::createContext(const Configuration& configuration) { } bool NaClApplication::tryCreateContext(const Configuration& configuration) { - CORRADE_ASSERT(!c, "Platform::NaClApplication::tryCreateContext(): context already created", false); + CORRADE_ASSERT(!_context, "Platform::NaClApplication::tryCreateContext(): context already created", false); - viewportSize = configuration.size(); + _viewportSize = configuration.size(); const std::int32_t attributes[] = { PP_GRAPHICS3DATTRIB_ALPHA_SIZE, 8, @@ -104,69 +102,62 @@ bool NaClApplication::tryCreateContext(const Configuration& configuration) { PP_GRAPHICS3DATTRIB_NONE }; - graphics = new pp::Graphics3D(this, attributes); - if(graphics->is_null()) { + _graphics.reset(new pp::Graphics3D(this, attributes)); + if(_graphics->is_null()) { Error() << "Platform::NaClApplication::tryCreateContext(): cannot create context"; - delete graphics; - graphics = nullptr; + _graphics.reset(); return false; } - if(!BindGraphics(*graphics)) { + if(!BindGraphics(*_graphics)) { Error() << "Platform::NaClApplication::tryCreateContext(): cannot bind graphics"; - delete graphics; - graphics = nullptr; + _graphics.reset(); return false; } - fullscreen = new pp::Fullscreen(this); + _fullscreen.reset(new pp::Fullscreen(this)); - glSetCurrentContextPPAPI(graphics->pp_resource()); + glSetCurrentContextPPAPI(_graphics->pp_resource()); /* Enable input handling for mouse and keyboard */ RequestInputEvents(PP_INPUTEVENT_CLASS_MOUSE|PP_INPUTEVENT_CLASS_WHEEL); RequestFilteringInputEvents(PP_INPUTEVENT_CLASS_KEYBOARD); - c = new Platform::Context; + _context.reset(new Platform::Context); return true; } -NaClApplication::~NaClApplication() { - delete c; - delete fullscreen; - delete graphics; - delete debugOutput; -} +NaClApplication::~NaClApplication() = default; bool NaClApplication::isFullscreen() { - return fullscreen->IsFullscreen(); + return _fullscreen->IsFullscreen(); } bool NaClApplication::setFullscreen(bool enabled) { /* Given fullscreen mode already set or switching to it is in progress, done */ - if(isFullscreen() == enabled || ((flags & Flag::FullscreenSwitchInProgress) && (flags & Flag::WillBeFullscreen) == enabled)) + if(isFullscreen() == enabled || ((_flags & Flag::FullscreenSwitchInProgress) && (_flags & Flag::WillBeFullscreen) == enabled)) return true; /* Switch to opposite fullscreen mode is in progress, can't revert it back */ - if((flags & Flag::FullscreenSwitchInProgress) && (flags & Flag::WillBeFullscreen) != enabled) + if((_flags & Flag::FullscreenSwitchInProgress) && (_flags & Flag::WillBeFullscreen) != enabled) return false; /* Set fullscreen */ - if(!fullscreen->SetFullscreen(enabled)) + if(!_fullscreen->SetFullscreen(enabled)) return false; /* Set flags */ - flags |= Flag::FullscreenSwitchInProgress; - enabled ? flags |= Flag::WillBeFullscreen : flags &= ~Flag::WillBeFullscreen; + _flags |= Flag::FullscreenSwitchInProgress; + enabled ? _flags |= Flag::WillBeFullscreen : _flags &= ~Flag::WillBeFullscreen; return true; } void NaClApplication::DidChangeView(const pp::View& view) { /* Fullscreen switch in progress */ - if(flags & Flag::FullscreenSwitchInProgress) { + if(_flags & Flag::FullscreenSwitchInProgress) { /* Done, remove the progress flag */ - if(isFullscreen() == bool(flags & Flag::WillBeFullscreen)) { - flags &= ~Flag::FullscreenSwitchInProgress; - flags |= Flag::Redraw; + if(isFullscreen() == bool(_flags & Flag::WillBeFullscreen)) { + _flags &= ~Flag::FullscreenSwitchInProgress; + _flags |= Flag::Redraw; } /* Don't process anything during the switch */ @@ -176,9 +167,9 @@ void NaClApplication::DidChangeView(const pp::View& view) { Vector2i size(view.GetRect().width(), view.GetRect().height()); /* Canvas resized */ - if(viewportSize != size) { - graphics->ResizeBuffers(size.x(), size.y()); - viewportEvent(viewportSize = size); + if(_viewportSize != size) { + _graphics->ResizeBuffers(size.x(), size.y()); + viewportEvent(_viewportSize = size); } drawEvent(); @@ -186,9 +177,9 @@ void NaClApplication::DidChangeView(const pp::View& view) { bool NaClApplication::HandleInputEvent(const pp::InputEvent& event) { /* Don't handle anything during switch from/to fullscreen */ - if(flags & Flag::FullscreenSwitchInProgress) return false; + if(_flags & Flag::FullscreenSwitchInProgress) return false; - Flags tmpFlags = flags; + Flags tmpFlags = _flags; switch(event.GetType()) { case PP_INPUTEVENT_TYPE_KEYDOWN: @@ -230,11 +221,11 @@ bool NaClApplication::HandleInputEvent(const pp::InputEvent& event) { } /* Assume everything is properly sequential here */ - CORRADE_INTERNAL_ASSERT((tmpFlags & Flag::SwapInProgress) == (flags & Flag::SwapInProgress)); + CORRADE_INTERNAL_ASSERT((tmpFlags & Flag::SwapInProgress) == (_flags & Flag::SwapInProgress)); /* Redraw, if it won't be handled after swap automatically */ - if((flags & Flag::Redraw) && !(flags & Flag::SwapInProgress)) { - flags &= ~Flag::Redraw; + if((_flags & Flag::Redraw) && !(_flags & Flag::SwapInProgress)) { + _flags &= ~Flag::Redraw; drawEvent(); } @@ -243,20 +234,20 @@ bool NaClApplication::HandleInputEvent(const pp::InputEvent& event) { void NaClApplication::swapBuffers() { /* Swap already in progress, do nothing */ - if(flags & Flag::SwapInProgress) return; + if(_flags & Flag::SwapInProgress) return; /* Swap buffers and call swapCallback() when done */ - flags |= Flag::SwapInProgress; - graphics->SwapBuffers(pp::CompletionCallback(&swapCallback, this)); + _flags |= Flag::SwapInProgress; + _graphics->SwapBuffers(pp::CompletionCallback(&swapCallback, this)); } void NaClApplication::swapCallback(void* applicationInstance, std::int32_t) { NaClApplication* instance = static_cast(applicationInstance); - instance->flags &= ~Flag::SwapInProgress; + instance->_flags &= ~Flag::SwapInProgress; /* Redraw, if requested */ - if(instance->flags & Flag::Redraw) { - instance->flags &= ~Flag::Redraw; + if(instance->_flags & Flag::Redraw) { + instance->_flags &= ~Flag::Redraw; instance->drawEvent(); } } @@ -271,7 +262,7 @@ void NaClApplication::setMouseLocked(bool enabled) { void NaClApplication::mouseLockCallback(void* applicationInstance, std::int32_t) { NaClApplication* instance = static_cast(applicationInstance); - instance->flags |= Flag::MouseLocked; + instance->_flags |= Flag::MouseLocked; } void NaClApplication::viewportEvent(const Vector2i&) {} diff --git a/src/Magnum/Platform/NaClApplication.h b/src/Magnum/Platform/NaClApplication.h index 2c4b864df..f3bd5bbe1 100644 --- a/src/Magnum/Platform/NaClApplication.h +++ b/src/Magnum/Platform/NaClApplication.h @@ -29,6 +29,7 @@ * @brief Class @ref Magnum::Platform::NaClApplication, macro @ref MAGNUM_NACLAPPLICATION_MAIN() */ +#include #include #include #include @@ -283,7 +284,7 @@ class NaClApplication: public pp::Instance, public pp::Graphics3DClient, public void swapBuffers(); /** @copydoc Sdl2Application::redraw() */ - void redraw() { flags |= Flag::Redraw; } + void redraw() { _flags |= Flag::Redraw; } #ifdef DOXYGEN_GENERATING_OUTPUT protected: @@ -324,7 +325,7 @@ class NaClApplication: public pp::Instance, public pp::Graphics3DClient, public public: /** @brief Whether mouse is locked */ - bool isMouseLocked() const { return flags & Flag::MouseLocked; } + bool isMouseLocked() const { return _flags & Flag::MouseLocked; } /** * @brief Enable or disable mouse locking @@ -386,7 +387,7 @@ class NaClApplication: public pp::Instance, public pp::Graphics3DClient, public } void MouseLockLost() override { - flags &= ~Flag::MouseLocked; + _flags &= ~Flag::MouseLocked; } void DidChangeView(const pp::View& view) override; @@ -396,13 +397,13 @@ class NaClApplication: public pp::Instance, public pp::Graphics3DClient, public static void swapCallback(void* applicationInstance, std::int32_t); static void mouseLockCallback(void* applicationInstance, std::int32_t); - pp::Graphics3D* graphics; - pp::Fullscreen* fullscreen; - Platform::Context* c; - Vector2i viewportSize; - Flags flags; + std::unique_ptr _graphics; + std::unique_ptr _fullscreen; + Vector2i _viewportSize; + Flags _flags; - ConsoleDebugOutput* debugOutput; + std::unique_ptr _debugOutput; + std::unique_ptr _context; CORRADE_ENUMSET_FRIEND_OPERATORS(Flags) };