mirror of
https://github.com/Ardour/ardour.git
synced 2025-12-12 01:26:31 +01:00
Move MMCSS related utility functions into PBD namespace
In preparation for moving to libpbd
This commit is contained in:
parent
f58e3abdbe
commit
d76fe212b7
5 changed files with 24 additions and 18 deletions
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue