From f13125d5ca7c0e23953a131c0dbe661e478d60af Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20Vondru=C5=A1?= Date: Tue, 5 May 2015 22:26:40 +0200 Subject: [PATCH 1/3] Fix more annoying warnings on MSVC. --- src/CMakeLists.txt | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index f3322339e..c9b419124 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -30,6 +30,11 @@ if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" AND NOT CMAKE_CXX_COMPILER_VERSION VERSI set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-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}) From f7c440d6b0d866a46a9830ee1cd2afb7f26be7a0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20Vondru=C5=A1?= Date: Tue, 5 May 2015 23:00:54 +0200 Subject: [PATCH 2/3] modules: proper linking order for Font plugins. Fixes static build on NaCl. --- modules/FindMagnum.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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}) From 0b2cfae44a76dcaccd1ed9ff7e7ffa945fa89e18 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20Vondru=C5=A1?= Date: Fri, 8 May 2015 11:18:05 +0200 Subject: [PATCH 3/3] Platform: cleaned up NaClApplication. Leading underscore for private variables, std::unique_ptr instead of manual memory management. --- src/Magnum/Platform/NaClApplication.cpp | 83 +++++++++++-------------- src/Magnum/Platform/NaClApplication.h | 19 +++--- 2 files changed, 48 insertions(+), 54 deletions(-) diff --git a/src/Magnum/Platform/NaClApplication.cpp b/src/Magnum/Platform/NaClApplication.cpp index 8a7ad87b9..4ad50972f 100644 --- a/src/Magnum/Platform/NaClApplication.cpp +++ b/src/Magnum/Platform/NaClApplication.cpp @@ -66,8 +66,8 @@ NaClApplication::NaClApplication(const Arguments& arguments, const Configuration createContext(configuration); } -NaClApplication::NaClApplication(const Arguments& arguments, std::nullptr_t): Instance(arguments), Graphics3DClient(this), MouseLock(this), graphics(nullptr), fullscreen(nullptr), c(nullptr) { - debugOutput = new ConsoleDebugOutput(this); +NaClApplication::NaClApplication(const Arguments& arguments, std::nullptr_t): Instance(arguments), Graphics3DClient(this), MouseLock(this) { + _debugOutput.reset(new ConsoleDebugOutput{this}); } void NaClApplication::createContext() { createContext({}); } @@ -77,9 +77,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, @@ -92,69 +92,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 */ @@ -164,9 +157,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(); @@ -174,9 +167,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: @@ -218,11 +211,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(); } @@ -231,20 +224,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(); } } @@ -259,7 +252,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 d04e91406..8c874081a 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 @@ -274,7 +275,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: @@ -315,7 +316,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 @@ -377,7 +378,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; @@ -387,13 +388,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) };