X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fpbd%2Fpbd.cc;h=13383c27d1116d373f2a257bc5ef7c596300ed9b;hb=5b40e073e9c973479c3d286a007c57e1e0fa3d0f;hp=17d15887889fbac4ee98c373bb054d77b5556b2a;hpb=55c4889c9a210fc20b8603f8d5337dfd6a7655e2;p=ardour.git diff --git a/libs/pbd/pbd.cc b/libs/pbd/pbd.cc index 17d1588788..13383c27d1 100644 --- a/libs/pbd/pbd.cc +++ b/libs/pbd/pbd.cc @@ -34,9 +34,12 @@ #include "pbd/error.h" #include "pbd/id.h" #include "pbd/enumwriter.h" +#include "pbd/fpu.h" #ifdef PLATFORM_WINDOWS #include +#include "pbd/windows_timer_utils.h" +#include "pbd/windows_mmcss.h" #endif #include "i18n.h" @@ -47,8 +50,7 @@ namespace { static bool libpbd_initialized = false; -} - +static void set_debug_options_from_env () { @@ -57,11 +59,32 @@ set_debug_options_from_env () options = Glib::getenv ("PBD_DEBUG", set); if (set) { - std::cerr << "PBD_DEBUG=" << options << std::endl; + std::cerr << X_("PBD_DEBUG=") << options << std::endl; PBD::parse_debug_options (options.c_str()); } } +#ifdef PLATFORM_WINDOWS +static +void +test_timers_from_env () +{ + bool set; + std::string options; + + options = Glib::getenv ("PBD_TEST_TIMERS", set); + if (set) { + if (!PBD::QPC::check_timer_valid ()) { + PBD::error << X_("Windows QPC Timer source not usable") << endmsg; + } else { + PBD::info << X_("Windows QPC Timer source usable") << endmsg; + } + } +} +#endif + +} // namespace + bool PBD::init () { @@ -78,13 +101,22 @@ PBD::init () /* Initialize windows socket DLL for PBD::CrossThreadChannel */ - + if (WSAStartup(MAKEWORD(1,1),&wsaData) != 0) { - fatal << "Windows socket initialization failed with error: " << WSAGetLastError() << endmsg; + fatal << X_("Windows socket initialization failed with error: ") << WSAGetLastError() << endmsg; abort(); /*NOTREACHED*/ return false; } + + QPC::initialize(); + test_timers_from_env (); + + if (!PBD::MMCSS::initialize()) { + PBD::info << X_("Unable to initialize MMCSS") << endmsg; + } else { + PBD::info << X_("MMCSS Initialized") << endmsg; + } #endif if (!Glib::thread_supported()) { @@ -107,8 +139,10 @@ void PBD::cleanup () { #ifdef PLATFORM_WINDOWS + PBD::MMCSS::deinitialize (); WSACleanup(); -#endif +#endif EnumWriter::destroy (); + FPU::destroy (); }