Move MMCSS related utility functions into PBD namespace

In preparation for moving to libpbd
This commit is contained in:
Tim Mayberry 2015-09-14 12:18:05 +10:00
parent f58e3abdbe
commit d76fe212b7
5 changed files with 24 additions and 18 deletions

View file

@ -28,7 +28,7 @@ typedef HANDLE (WINAPI* AvSetMmThreadCharacteristicsA_t)(LPCSTR TaskName,
typedef BOOL (WINAPI* AvRevertMmThreadCharacteristics_t)(HANDLE AvrtHandle); typedef BOOL (WINAPI* AvRevertMmThreadCharacteristics_t)(HANDLE AvrtHandle);
typedef BOOL (WINAPI* AvSetMmThreadPriority_t)( typedef BOOL (WINAPI* AvSetMmThreadPriority_t)(
HANDLE AvrtHandle, mmcss::AVRT_PRIORITY Priority); HANDLE AvrtHandle, PBD::MMCSS::AVRT_PRIORITY Priority);
static HMODULE avrt_dll = NULL; static HMODULE avrt_dll = NULL;
@ -36,8 +36,9 @@ static AvSetMmThreadCharacteristicsA_t AvSetMmThreadCharacteristicsA = NULL;
static AvRevertMmThreadCharacteristics_t AvRevertMmThreadCharacteristics = NULL; static AvRevertMmThreadCharacteristics_t AvRevertMmThreadCharacteristics = NULL;
static AvSetMmThreadPriority_t AvSetMmThreadPriority = NULL; static AvSetMmThreadPriority_t AvSetMmThreadPriority = NULL;
namespace PBD {
namespace mmcss { namespace MMCSS {
bool bool
initialize () initialize ()
@ -174,4 +175,6 @@ set_thread_priority (HANDLE task_handle, AVRT_PRIORITY priority)
return true; return true;
} }
} // namespace mmcss } // namespace MMCSS
} // namespace PBD

View file

@ -16,14 +16,16 @@
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/ */
#ifndef MMCSS_H #ifndef PBD_WINDOWS_MMCSS_H
#define MMCSS_H #define PBD_WINDOWS_MMCSS_H
#include <windows.h> #include <windows.h>
#include <string> #include <string>
namespace mmcss { namespace PBD {
namespace MMCSS {
enum AVRT_PRIORITY { enum AVRT_PRIORITY {
AVRT_PRIORITY_VERYLOW = -2, AVRT_PRIORITY_VERYLOW = -2,
@ -48,7 +50,8 @@ bool revert_thread_characteristics (HANDLE task_handle);
bool set_thread_priority (HANDLE, AVRT_PRIORITY); bool set_thread_priority (HANDLE, AVRT_PRIORITY);
} // namespace MMCSS
} // namespace mmcss } // namespace PBD
#endif // MMCSS_H #endif // PBD_WINDOWS_MMCSS_H

View file

@ -83,7 +83,7 @@ PortAudioBackend::PortAudioBackend (AudioEngine& e, AudioBackendInfo& info)
_instance_name = s_instance_name; _instance_name = s_instance_name;
pthread_mutex_init (&_port_callback_mutex, 0); pthread_mutex_init (&_port_callback_mutex, 0);
mmcss::initialize (); PBD::MMCSS::initialize ();
_pcmio = new PortAudioIO (); _pcmio = new PortAudioIO ();
_midiio = new WinMMEMidiIO (); _midiio = new WinMMEMidiIO ();
@ -94,7 +94,7 @@ PortAudioBackend::~PortAudioBackend ()
delete _pcmio; _pcmio = 0; delete _pcmio; _pcmio = 0;
delete _midiio; _midiio = 0; delete _midiio; _midiio = 0;
mmcss::deinitialize (); PBD::MMCSS::deinitialize ();
pthread_mutex_destroy (&_port_callback_mutex); pthread_mutex_destroy (&_port_callback_mutex);
} }
@ -702,7 +702,7 @@ PortAudioBackend::name_to_id(std::string device_name) const {
bool bool
PortAudioBackend::set_mmcss_pro_audio (HANDLE* task_handle) PortAudioBackend::set_mmcss_pro_audio (HANDLE* task_handle)
{ {
bool mmcss_success = mmcss::set_thread_characteristics ("Pro Audio", task_handle); bool mmcss_success = PBD::MMCSS::set_thread_characteristics ("Pro Audio", task_handle);
if (!mmcss_success) { if (!mmcss_success) {
PBD::warning << get_error_string(SettingAudioThreadPriorityError) << endmsg; PBD::warning << get_error_string(SettingAudioThreadPriorityError) << endmsg;
@ -712,7 +712,7 @@ PortAudioBackend::set_mmcss_pro_audio (HANDLE* task_handle)
} }
bool mmcss_priority = bool mmcss_priority =
mmcss::set_thread_priority(*task_handle, mmcss::AVRT_PRIORITY_NORMAL); PBD::MMCSS::set_thread_priority(*task_handle, PBD::MMCSS::AVRT_PRIORITY_NORMAL);
if (!mmcss_priority) { if (!mmcss_priority) {
PBD::warning << get_error_string(SettingAudioThreadPriorityError) << endmsg; PBD::warning << get_error_string(SettingAudioThreadPriorityError) << endmsg;
@ -727,7 +727,7 @@ PortAudioBackend::set_mmcss_pro_audio (HANDLE* task_handle)
bool bool
PortAudioBackend::reset_mmcss (HANDLE task_handle) PortAudioBackend::reset_mmcss (HANDLE task_handle)
{ {
if (!mmcss::revert_thread_characteristics(task_handle)) { if (!PBD::MMCSS::revert_thread_characteristics(task_handle)) {
DEBUG_THREADS("Unable to reset process thread characteristics\n"); DEBUG_THREADS("Unable to reset process thread characteristics\n");
return false; return false;
} }

View file

@ -198,8 +198,8 @@ WinMMEMidiInputDevice::winmm_input_callback(HMIDIIN handle,
HANDLE task_handle; HANDLE task_handle;
if (!priority_boosted) { if (!priority_boosted) {
mmcss::set_thread_characteristics ("Pro Audio", &task_handle); PBD::MMCSS::set_thread_characteristics ("Pro Audio", &task_handle);
mmcss::set_thread_priority (task_handle, mmcss::AVRT_PRIORITY_HIGH); PBD::MMCSS::set_thread_priority (task_handle, PBD::MMCSS::AVRT_PRIORITY_HIGH);
priority_boosted = true; priority_boosted = true;
} }
#endif #endif

View file

@ -354,8 +354,8 @@ WinMMEMidiOutputDevice::midi_output_thread ()
#ifdef USE_MMCSS_THREAD_PRIORITIES #ifdef USE_MMCSS_THREAD_PRIORITIES
HANDLE task_handle; HANDLE task_handle;
mmcss::set_thread_characteristics ("Pro Audio", &task_handle); PBD::MMCSS::set_thread_characteristics ("Pro Audio", &task_handle);
mmcss::set_thread_priority (task_handle, mmcss::AVRT_PRIORITY_HIGH); PBD::MMCSS::set_thread_priority (task_handle, PBD::MMCSS::AVRT_PRIORITY_HIGH);
#endif #endif
while (!m_thread_quit) { while (!m_thread_quit) {
@ -481,7 +481,7 @@ WinMMEMidiOutputDevice::midi_output_thread ()
} }
#ifdef USE_MMCSS_THREAD_PRIORITIES #ifdef USE_MMCSS_THREAD_PRIORITIES
mmcss::revert_thread_characteristics (task_handle); PBD::MMCSS::revert_thread_characteristics (task_handle);
#endif #endif
m_thread_running = false; m_thread_running = false;