summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/game.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/game.c b/src/game.c
index 7e8b841..efe65db 100644
--- a/src/game.c
+++ b/src/game.c
@@ -142,16 +142,24 @@ void start_game(const bool servermode, const char* addr, const char* port, const
{
assert(port != NULL); // addr can be NULL for server -> listen on every address
+#ifndef OXEN_DGLSERVER // No forking needed when running as dedicated server
bool server_process = false;
+#endif // !OXEN_DGLSERVER
if(servermode)
{
+#ifdef OXEN_DGLSERVER
+ #ifdef OXEN_DEBUG
+ printf("Running server in dgamelaunch mode\n");
+ #endif // OXEN_DEBUG
+#else // No forking needed when running as dedicated server
pid_t child = fork();
server_process = (child == 0); // start server as child
}
if(server_process) // Start server and connect to localhost
{
+#endif // !OXEN_DGLSERVER
int server_sock;
socket_list_t client_socks;
@@ -180,6 +188,12 @@ void start_game(const bool servermode, const char* addr, const char* port, const
}
main_loop_server(&client_socks);
+
+#ifdef OXEN_DGLSERVER
+ #ifdef OXEN_DEBUG
+ printf("Server in dgamelaunch mode finished.\n");
+ #endif // OXEN_DEBUG
+#endif // OXEN_DGLSERVER
}
else // Connect to server
{
@@ -219,8 +233,10 @@ void start_game(const bool servermode, const char* addr, const char* port, const
ui_fini();
+#ifndef OXEN_DGLSERVER
if(servermode) // wait until server (child) has exited
wait(NULL);
+#endif // !OXEN_DGLSERVER
}
destroy_data_store();