De/Initialize MMCSS on windows in PBD::init/cleanup instead of in PA Backend
authorTim Mayberry <mojofunk@gmail.com>
Mon, 14 Sep 2015 03:47:38 +0000 (13:47 +1000)
committerTim Mayberry <mojofunk@gmail.com>
Wed, 16 Sep 2015 01:22:16 +0000 (11:22 +1000)
libs/backends/portaudio/portaudio_backend.cc
libs/pbd/pbd.cc

index f55d9c313106ae06b74990f3ba646cfe9d83b81c..eef2869ae5f8a0c74b3a63f7febc3293f8a8ad9d 100644 (file)
@@ -83,8 +83,6 @@ PortAudioBackend::PortAudioBackend (AudioEngine& e, AudioBackendInfo& info)
        _instance_name = s_instance_name;
        pthread_mutex_init (&_port_callback_mutex, 0);
 
-       PBD::MMCSS::initialize ();
-
        _pcmio = new PortAudioIO ();
        _midiio = new WinMMEMidiIO ();
 }
@@ -94,8 +92,6 @@ PortAudioBackend::~PortAudioBackend ()
        delete _pcmio; _pcmio = 0;
        delete _midiio; _midiio = 0;
 
-       PBD::MMCSS::deinitialize ();
-
        pthread_mutex_destroy (&_port_callback_mutex);
 }
 
index b0da66b1382b35f950da9635f705190b2d0794f2..86d04c45bc7fdba63158d2601205adaf9ef8414c 100644 (file)
 #include "pbd/id.h"
 #include "pbd/enumwriter.h"
 #include "pbd/fpu.h"
-#ifdef PLATFORM_WINDOWS
-#include "pbd/windows_timer_utils.h"
-#endif
 
 #ifdef PLATFORM_WINDOWS
 #include <winsock2.h>
+#include "pbd/windows_timer_utils.h"
+#include "pbd/windows_mmcss.h"
 #endif
 
 #include "i18n.h"
@@ -109,6 +108,12 @@ PBD::init ()
        }
 
        test_timers_from_env ();
+
+       if (!PBD::MMCSS::initialize()) {
+               PBD::info << "Unable to initialize MMCSS" << endmsg;
+       } else {
+               PBD::info << "MMCSS Initialized" << endmsg;
+       }
 #endif
 
        if (!Glib::thread_supported()) {
@@ -131,6 +136,7 @@ void
 PBD::cleanup ()
 {
 #ifdef PLATFORM_WINDOWS
+       PBD::MMCSS::deinitialize ();
        WSACleanup();
 #endif