--- a/src/input/CMakeLists.txt +++ b/src/input/CMakeLists.txt @@ -43,6 +43,7 @@ target_sources(CemuInput PRIVATE api/DSU/DSUControllerProvider.h api/DSU/DSUMessages.h api/DSU/DSUMessages.cpp + api/DSU/TimeoutSocketOption.h ) # Keyboard controller --- a/src/input/api/DSU/DSUControllerProvider.cpp +++ b/src/input/api/DSU/DSUControllerProvider.cpp @@ -1,5 +1,6 @@ #include "input/api/DSU/DSUControllerProvider.h" #include "input/api/DSU/DSUController.h" +#include "input/api/DSU/TimeoutSocketOption.h" DSUControllerProvider::DSUControllerProvider() : base_type(), m_uid(rand()), m_socket(m_io_service) @@ -77,8 +78,9 @@ bool DSUControllerProvider::connect() m_socket.close(); m_socket.open(ip::udp::v4()); + // set timeout for our threads to give a chance to exit - m_socket.set_option(boost::asio::detail::socket_option::integer{200}); + m_socket.set_option(TimeoutSocketOption{200}); // reset data m_state = {};