Fix possible segfault
This commit is contained in:
parent
0a06e1d841
commit
74e53a0d67
10
sdlpp.hpp
10
sdlpp.hpp
@ -113,6 +113,12 @@ public:
|
||||
bool getRenderColiders() {
|
||||
return render_coliders;
|
||||
}
|
||||
void clearRenderer() {
|
||||
SDL_RenderClear( getRendererPtr() );
|
||||
}
|
||||
void presentRenderer() {
|
||||
SDL_RenderPresent( getRendererPtr() );
|
||||
}
|
||||
|
||||
private:
|
||||
SDL_Renderer *renderer = NULL;
|
||||
@ -562,10 +568,10 @@ public:
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
void renderScene( bool clear_scene = true ) {
|
||||
void renderScene( bool clear_renderer = true ) {
|
||||
checkKilled();
|
||||
render_mutex.lock();
|
||||
if ( clear_scene )
|
||||
if ( clear_renderer )
|
||||
SDL_RenderClear( renderer->getRendererPtr() );
|
||||
if ( background && background->getTexturePtr() )
|
||||
SDL_RenderCopy( renderer->getRendererPtr(),
|
||||
|
@ -316,6 +316,11 @@ void handleKeyDownMain( SDL_Keycode key, SDLPP::Scene &scene ) {
|
||||
g_cur_shadow->rotate();
|
||||
updateShadow(scene);
|
||||
break;
|
||||
case SDLK_SPACE:
|
||||
if(!g_cur_object)
|
||||
break;
|
||||
g_cur_object->setPos(g_cur_shadow->getPos());
|
||||
break;
|
||||
case SDLK_r:
|
||||
scene.getRenderer().setRenderColiders(
|
||||
!scene.getRenderer().getRenderColiders() );
|
||||
@ -565,6 +570,16 @@ void gameOverSceneInput( std::shared_ptr< SDLPP::Scene > /*UNUSED*/, int /*UNUSE
|
||||
pollEventsGameOver();
|
||||
}
|
||||
|
||||
void saveOptions() {
|
||||
g_update_colors = true;
|
||||
if(g_cur_shadow)
|
||||
g_cur_shadow->setHidden(!g_show_shadow);
|
||||
g_pause = 0;
|
||||
g_main_scene->setPrevTicks( SDL_GetTicks() );
|
||||
g_active_scenes.pop_back();
|
||||
g_input_functions.pop_back();
|
||||
}
|
||||
|
||||
void handleKeyDownOptions( SDL_Keycode key ) {
|
||||
switch ( key ) {
|
||||
case SDLK_r:
|
||||
@ -626,24 +641,14 @@ void handleKeyDownOptions( SDL_Keycode key ) {
|
||||
case SDLK_RETURN:
|
||||
switch ( g_options_select ) {
|
||||
case 2:
|
||||
g_update_colors = true;
|
||||
g_cur_shadow->setHidden(!g_show_shadow);
|
||||
g_pause = 0;
|
||||
g_main_scene->setPrevTicks( SDL_GetTicks() );
|
||||
g_active_scenes.pop_back();
|
||||
g_input_functions.pop_back();
|
||||
saveOptions();
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case SDLK_ESCAPE:
|
||||
g_update_colors = true;
|
||||
g_cur_shadow->setHidden(!g_show_shadow);
|
||||
g_pause = 0;
|
||||
g_main_scene->setPrevTicks( SDL_GetTicks() );
|
||||
g_active_scenes.pop_back();
|
||||
g_input_functions.pop_back();
|
||||
saveOptions();
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
@ -107,12 +107,11 @@ int main() {
|
||||
g_update_colors = false;
|
||||
}
|
||||
|
||||
g_main_scene->renderScene();
|
||||
renderer->clearRenderer();
|
||||
for(auto &x : g_active_scenes) {
|
||||
if(x != g_main_scene)
|
||||
x->renderScene(false);
|
||||
}
|
||||
g_main_scene->presentScene();
|
||||
renderer->presentRenderer();
|
||||
g_wait_for_anim = false;
|
||||
frames++;
|
||||
if ( SDL_GetTicks() - base >= 1000 ) {
|
||||
|
Loading…
Reference in New Issue
Block a user