From 42eeec12bfdf548b15a2f85d586ef037eab88a00 Mon Sep 17 00:00:00 2001 From: Shauren Date: Wed, 23 Jul 2014 19:04:07 +0200 Subject: Core/Mains: Handle SIGBREAK to achieve clean shutdown when users click X button on windows --- src/server/worldserver/Main.cpp | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) (limited to 'src/server/worldserver/Main.cpp') diff --git a/src/server/worldserver/Main.cpp b/src/server/worldserver/Main.cpp index 0c051eae37a..87eb3bae074 100644 --- a/src/server/worldserver/Main.cpp +++ b/src/server/worldserver/Main.cpp @@ -158,6 +158,9 @@ extern int main(int argc, char** argv) // Set signal handlers (this must be done before starting io_service threads, because otherwise they would unblock and exit) boost::asio::signal_set signals(_ioService, SIGINT, SIGTERM); +#if PLATFORM == PLATFORM_WINDOWS + signals.add(SIGBREAK); +#endif signals.async_wait(SignalHandler); // Start the Boost based thread pool @@ -367,18 +370,10 @@ void WorldUpdateLoop() } } -void SignalHandler(const boost::system::error_code& error, int signalNumber) +void SignalHandler(const boost::system::error_code& error, int /*signalNumber*/) { if (!error) - { - switch (signalNumber) - { - case SIGINT: - case SIGTERM: - World::StopNow(SHUTDOWN_EXIT_CODE); - break; - } - } + World::StopNow(SHUTDOWN_EXIT_CODE); } void FreezeDetectorHandler(const boost::system::error_code& error) -- cgit v1.2.3 From 11ecd851a1432082516bde082063065ec615d5ba Mon Sep 17 00:00:00 2001 From: "Jared P. Jones" Date: Wed, 23 Jul 2014 16:13:30 -0500 Subject: Core/Misc: Silenced 500 OS X Warnings and removed deprecated finite() method. *Mac OS X fires off over 200 warnings related to gsoap about the deprecated register method. CMake has been patched to remove this warning. *Updated all occurences of finite() to std::isfinite. The method finite() is not standardized by anyone aside from BSD. std::isfinite() however is standarized by C++ *Removed -ncurses and -pthread from OS X compilation. Now that we use Boost and C++11 there is no longer a need for pthread in OS X. All it does is throw a warning. However, ncurses isn't needed either as it's built into the OS X SDK and linked by default. Note: There are only 5 remaining warnings left when compiling on OS X. I did not attempt to fix these as they were related to 3rd party libraries statically linked into the code. The 5 warnings left are all related to unused variables. --- cmake/compiler/clang/settings.cmake | 3 ++- src/server/game/Grids/GridDefines.h | 6 +++--- src/server/shared/Common.h | 2 +- src/server/shared/Threading/ProcessPriority.h | 5 +++++ src/server/worldserver/CMakeLists.txt | 2 +- src/server/worldserver/Main.cpp | 3 +++ 6 files changed, 15 insertions(+), 6 deletions(-) (limited to 'src/server/worldserver/Main.cpp') diff --git a/cmake/compiler/clang/settings.cmake b/cmake/compiler/clang/settings.cmake index 2de9e79ad88..87f8a2f82c8 100644 --- a/cmake/compiler/clang/settings.cmake +++ b/cmake/compiler/clang/settings.cmake @@ -15,4 +15,5 @@ if(WITH_COREDEBUG) endif() # -Wno-narrowing needed to suppress a warning in g3d -set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wno-narrowing") +# -Wno-deprecated-register is needed to suppress 185 gsoap warnings on Unix systems. +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wno-narrowing -Wno-deprecated-register") diff --git a/src/server/game/Grids/GridDefines.h b/src/server/game/Grids/GridDefines.h index 5279f437f89..013d0ef5794 100644 --- a/src/server/game/Grids/GridDefines.h +++ b/src/server/game/Grids/GridDefines.h @@ -213,7 +213,7 @@ namespace Trinity inline bool IsValidMapCoord(float c) { - return finite(c) && (std::fabs(c) <= MAP_HALFSIZE - 0.5f); + return std::isfinite(c) && (std::fabs(c) <= MAP_HALFSIZE - 0.5f); } inline bool IsValidMapCoord(float x, float y) @@ -223,12 +223,12 @@ namespace Trinity inline bool IsValidMapCoord(float x, float y, float z) { - return IsValidMapCoord(x, y) && finite(z); + return IsValidMapCoord(x, y) && std::isfinite(z); } inline bool IsValidMapCoord(float x, float y, float z, float o) { - return IsValidMapCoord(x, y, z) && finite(o); + return IsValidMapCoord(x, y, z) && std::isfinite(o); } } #endif diff --git a/src/server/shared/Common.h b/src/server/shared/Common.h index 8cab769ec8a..7c0990ddb76 100644 --- a/src/server/shared/Common.h +++ b/src/server/shared/Common.h @@ -111,7 +111,7 @@ #endif -inline float finiteAlways(float f) { return finite(f) ? f : 0.0f; } +inline float finiteAlways(float f) { return std::isfinite(f) ? f : 0.0f; } #define STRINGIZE(a) #a diff --git a/src/server/shared/Threading/ProcessPriority.h b/src/server/shared/Threading/ProcessPriority.h index cd116ccbbc8..06a5622fb9d 100644 --- a/src/server/shared/Threading/ProcessPriority.h +++ b/src/server/shared/Threading/ProcessPriority.h @@ -28,6 +28,11 @@ void SetProcessPriority(const std::string logChannel) { +// Suppresses Mac OS X Warning since logChannel isn't used. +#if PLATFORM_APPLE + (void)logChannel; +#endif + #if defined(_WIN32) || defined(__linux__) ///- Handle affinity for multiple processors and process priority diff --git a/src/server/worldserver/CMakeLists.txt b/src/server/worldserver/CMakeLists.txt index 80c76352b36..a7c2b9ebedc 100644 --- a/src/server/worldserver/CMakeLists.txt +++ b/src/server/worldserver/CMakeLists.txt @@ -153,7 +153,7 @@ endif() add_dependencies(worldserver revision.h) -if( UNIX AND NOT NOJEM ) +if( UNIX AND NOT NOJEM AND NOT APPLE ) set(worldserver_LINK_FLAGS "-pthread -lncurses ${worldserver_LINK_FLAGS}") endif() diff --git a/src/server/worldserver/Main.cpp b/src/server/worldserver/Main.cpp index 87eb3bae074..206103608a4 100644 --- a/src/server/worldserver/Main.cpp +++ b/src/server/worldserver/Main.cpp @@ -535,6 +535,9 @@ void ClearOnlineAccounts() variables_map GetConsoleArguments(int argc, char** argv, std::string& configFile, std::string& configService) { + // Silences warning about configService not be used if the OS is not Windows + (void)configService; + options_description all("Allowed options"); all.add_options() ("help,h", "print usage message") -- cgit v1.2.3