From 883ad19a50e3d26cd0e6cef43c6d3de1e2e63d50 Mon Sep 17 00:00:00 2001 From: zvon Date: Sat, 26 Sep 2020 20:13:27 +0200 Subject: [PATCH] Tetris: move generating of new blocks after restart to main thread --- tetris/functions.cpp | 4 ---- tetris/tetris.cpp | 5 +++++ 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/tetris/functions.cpp b/tetris/functions.cpp index dd41c16..4e20dc1 100644 --- a/tetris/functions.cpp +++ b/tetris/functions.cpp @@ -121,10 +121,6 @@ void resetGame() { g_main_scene->setPrevTicks( SDL_GetTicks() ); // TODO maybe move to main thread - g_next_object = g_tetrisFunctions[std::rand() / ( ( RAND_MAX + 1u ) / 7 )]( - g_main_scene->getRendererShared(), g_main_scene ); - g_next_object->setPos( 0.9, 0.5 ); - g_active_scenes.push_back( g_main_scene ); g_active_scenes = {g_main_scene}; g_input_functions = {mainSceneInput}; for(int i = 0; i < 7; i++) diff --git a/tetris/tetris.cpp b/tetris/tetris.cpp index 564c06b..64e52ae 100644 --- a/tetris/tetris.cpp +++ b/tetris/tetris.cpp @@ -89,6 +89,11 @@ int main() { SDL_framerateDelay( &gFPS ); if ( !g_cur_object && g_checked_line ) { std::lock_guard< std::mutex > guard( g_movement_mutex ); + if ( !g_next_object ) { + g_next_object = g_tetrisFunctions[std::rand() / ( ( RAND_MAX + 1u ) / 7 )]( + g_main_scene->getRendererShared(), g_main_scene ); + g_next_object->setPos( 0.9, 0.5 ); + } g_cur_object = g_next_object; g_cur_object->setPos( 0.5, TOP_BORDER - BLOCK_SIZE );