From d4d72f15fb3bde4efb86c4877900d91136ae7f37 Mon Sep 17 00:00:00 2001 From: Hopson97 Date: Fri, 28 Jul 2017 10:36:12 +0100 Subject: [PATCH] Fix a crash --- Source/Application.cpp | 17 +++++++++++------ Source/Application.h | 2 ++ Source/Display.cpp | 6 ------ Source/Display.h | 1 - Source/Renderer/MasterRenderer.cpp | 8 +++----- Source/Renderer/MasterRenderer.h | 2 -- 6 files changed, 16 insertions(+), 20 deletions(-) diff --git a/Source/Application.cpp b/Source/Application.cpp index 3286961..9a427e6 100755 --- a/Source/Application.cpp +++ b/Source/Application.cpp @@ -54,10 +54,19 @@ void Application::runMainGameLoop() m_camera.update(); state.update(m_camera, elapsed.asSeconds()); - m_renderer.clear(); state.draw(m_renderer); m_renderer.update(m_camera); handleEvents(); + + if (m_shouldPop) + { + m_shouldPop = false; + m_states.pop_back(); + if (!m_states.empty()) + { + currentState().onOpen(); + } + } } } @@ -85,11 +94,7 @@ void Application::handleEvents() void Application::popState() { - m_states.pop_back(); - if (!m_states.empty()) - { - currentState().onOpen(); - } + m_shouldPop = true; } StateBase& Application::currentState() diff --git a/Source/Application.h b/Source/Application.h index 6c21b2a..c2bf4cb 100755 --- a/Source/Application.h +++ b/Source/Application.h @@ -43,6 +43,8 @@ class Application std::vector> m_states; MasterRenderer m_renderer; Camera m_camera; + + bool m_shouldPop = false; }; #endif // APPLICATION_H_INCLUDED diff --git a/Source/Display.cpp b/Source/Display.cpp index 276c4e0..8f4018a 100755 --- a/Source/Display.cpp +++ b/Source/Display.cpp @@ -36,12 +36,6 @@ void Display::close() m_window.close(); } -void Display::clear() -{ - glClearColor(0.1, 0.5, 1.0, 1.0); - glClear(GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT); -} - void Display::update() { m_window.display(); diff --git a/Source/Display.h b/Source/Display.h index a1c831b..331b440 100755 --- a/Source/Display.h +++ b/Source/Display.h @@ -17,7 +17,6 @@ class Display : public Singleton void close(); - void clear(); void update(); bool isOpen(); diff --git a/Source/Renderer/MasterRenderer.cpp b/Source/Renderer/MasterRenderer.cpp index 5c7f735..7756285 100644 --- a/Source/Renderer/MasterRenderer.cpp +++ b/Source/Renderer/MasterRenderer.cpp @@ -7,13 +7,11 @@ #include "../Camera.h" -void MasterRenderer::clear() -{ - Display::get().clear(); -} - void MasterRenderer::update(const Camera& camera) { + glClearColor(0.1, 0.5, 1.0, 1.0); + glClear(GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT); + BlockDatabase::get().getTextureAtlas().bind(); glEnable(GL_DEPTH_TEST); diff --git a/Source/Renderer/MasterRenderer.h b/Source/Renderer/MasterRenderer.h index dad7a34..bc937ff 100644 --- a/Source/Renderer/MasterRenderer.h +++ b/Source/Renderer/MasterRenderer.h @@ -9,8 +9,6 @@ struct Camera; class MasterRenderer { public: - void clear(); - void update(const Camera& camera); void draw(const Vector3& location);