13
0

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* AvSetMmThreadPriority_t)(
HANDLE AvrtHandle, mmcss::AVRT_PRIORITY Priority);
HANDLE AvrtHandle, PBD::MMCSS::AVRT_PRIORITY Priority);
static HMODULE avrt_dll = NULL;
@ -36,8 +36,9 @@ static AvSetMmThreadCharacteristicsA_t AvSetMmThreadCharacteristicsA = NULL;
static AvRevertMmThreadCharacteristics_t AvRevertMmThreadCharacteristics = NULL;
static AvSetMmThreadPriority_t AvSetMmThreadPriority = NULL;
namespace PBD {
namespace mmcss {
namespace MMCSS {
bool
initialize ()
@ -174,4 +175,6 @@ set_thread_priority (HANDLE task_handle, AVRT_PRIORITY priority)
return true;
}
} // namespace mmcss
} // namespace MMCSS
} // namespace PBD

View File

@ -16,14 +16,16 @@
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef MMCSS_H
#define MMCSS_H
#ifndef PBD_WINDOWS_MMCSS_H
#define PBD_WINDOWS_MMCSS_H
#include <windows.h>
#include <string>
namespace mmcss {
namespace PBD {
namespace MMCSS {
enum AVRT_PRIORITY {
AVRT_PRIORITY_VERYLOW = -2,
@ -48,7 +50,8 @@ bool revert_thread_characteristics (HANDLE task_handle);
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;
pthread_mutex_init (&_port_callback_mutex, 0);
mmcss::initialize ();
PBD::MMCSS::initialize ();
_pcmio = new PortAudioIO ();
_midiio = new WinMMEMidiIO ();
@ -94,7 +94,7 @@ PortAudioBackend::~PortAudioBackend ()
delete _pcmio; _pcmio = 0;
delete _midiio; _midiio = 0;
mmcss::deinitialize ();
PBD::MMCSS::deinitialize ();
pthread_mutex_destroy (&_port_callback_mutex);
}
@ -702,7 +702,7 @@ PortAudioBackend::name_to_id(std::string device_name) const {
bool
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) {
PBD::warning << get_error_string(SettingAudioThreadPriorityError) << endmsg;
@ -712,7 +712,7 @@ PortAudioBackend::set_mmcss_pro_audio (HANDLE* task_handle)
}
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) {
PBD::warning << get_error_string(SettingAudioThreadPriorityError) << endmsg;
@ -727,7 +727,7 @@ PortAudioBackend::set_mmcss_pro_audio (HANDLE* task_handle)
bool
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");
return false;
}

View File

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

View File

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