Add tool for server creation in the same process
For iOS or Android App Bundle (or other platform) where create process or fork is not possible or can not be easily done
This commit is contained in:
parent
d63c68af78
commit
b7f2a9614d
@ -1,5 +1,5 @@
|
||||
# Modify this file to change the last-modified date when you add/remove a file.
|
||||
# This will then trigger a new cmake run automatically.
|
||||
# This will then trigger a new cmake run automatically.
|
||||
file(GLOB_RECURSE STK_HEADERS RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "src/*.hpp")
|
||||
file(GLOB_RECURSE STK_SOURCES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "src/*.cpp")
|
||||
file(GLOB_RECURSE STK_SHADERS RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "data/shaders/*")
|
||||
|
@ -256,7 +256,7 @@
|
||||
#include "utils/log.hpp"
|
||||
#include "utils/mini_glm.hpp"
|
||||
#include "utils/profiler.hpp"
|
||||
#include "utils/separate_process.hpp"
|
||||
#include "utils/stk_process.hpp"
|
||||
#include "utils/string_utils.hpp"
|
||||
#include "utils/translation.hpp"
|
||||
|
||||
@ -1730,6 +1730,7 @@ void clearGlobalVariables()
|
||||
{
|
||||
// In android sometimes global variables is not reset when restart the app
|
||||
// we clear it here as much as possible
|
||||
STKProcess::reset();
|
||||
race_manager = NULL;
|
||||
music_manager = NULL;
|
||||
irr_driver = NULL;
|
||||
|
23
src/utils/stk_process.cpp
Normal file
23
src/utils/stk_process.cpp
Normal file
@ -0,0 +1,23 @@
|
||||
// SuperTuxKart - a fun racing game with go-kart
|
||||
// Copyright (C) 2020 SuperTuxKart-Team
|
||||
//
|
||||
// This program is free software; you can redistribute it and/or
|
||||
// modify it under the terms of the GNU General Public License
|
||||
// as published by the Free Software Foundation; either version 3
|
||||
// of the License, or (at your option) any later version.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
#include "utils/stk_process.hpp"
|
||||
|
||||
namespace STKProcess
|
||||
{
|
||||
thread_local ProcessType g_process_type = PT_MAIN;
|
||||
} // namespace STKProcess
|
45
src/utils/stk_process.hpp
Normal file
45
src/utils/stk_process.hpp
Normal file
@ -0,0 +1,45 @@
|
||||
// SuperTuxKart - a fun racing game with go-kart
|
||||
// Copyright (C) 2020 SuperTuxKart-Team
|
||||
//
|
||||
// This program is free software; you can redistribute it and/or
|
||||
// modify it under the terms of the GNU General Public License
|
||||
// as published by the Free Software Foundation; either version 3
|
||||
// of the License, or (at your option) any later version.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
#ifndef HEADER_STK_PROCESS_HPP
|
||||
#define HEADER_STK_PROCESS_HPP
|
||||
|
||||
#include "utils/tls.hpp"
|
||||
|
||||
enum ProcessType : unsigned int
|
||||
{
|
||||
PT_MAIN = 0, // Main process
|
||||
PT_CHILD = 1, // Child process inside main (can be server or ai instance)
|
||||
PT_COUNT = 2
|
||||
};
|
||||
|
||||
namespace STKProcess
|
||||
{
|
||||
// ========================================================================
|
||||
extern thread_local ProcessType g_process_type;
|
||||
// ------------------------------------------------------------------------
|
||||
/** Return which type (main or child) this thread belongs to. */
|
||||
inline ProcessType getType() { return g_process_type; }
|
||||
// ------------------------------------------------------------------------
|
||||
/** Called when any thread in main or child is created. */
|
||||
inline void init(ProcessType pt) { g_process_type = pt; }
|
||||
// ------------------------------------------------------------------------
|
||||
/** Reset when stk is started (for android mostly). */
|
||||
inline void reset() { g_process_type = PT_MAIN; }
|
||||
} // namespace STKProcess
|
||||
|
||||
#endif
|
Loading…
x
Reference in New Issue
Block a user