Skip to content

Commit

Permalink
Revert "Fetch avrt.dll functions dynamically again."
Browse files Browse the repository at this point in the history
This reverts commit aaffe75.
  • Loading branch information
padenot committed May 21, 2024
1 parent 19fcbef commit 6c1a6e1
Show file tree
Hide file tree
Showing 2 changed files with 3 additions and 57 deletions.
2 changes: 1 addition & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -265,7 +265,7 @@ if(USE_WASAPI)
target_sources(cubeb PRIVATE
src/cubeb_wasapi.cpp)
target_compile_definitions(cubeb PRIVATE USE_WASAPI)
target_link_libraries(cubeb PRIVATE ole32 ksuser)
target_link_libraries(cubeb PRIVATE avrt ole32 ksuser)
endif()

check_include_files("windows.h;mmsystem.h" USE_WINMM)
Expand Down
58 changes: 2 additions & 56 deletions src/cubeb_wasapi.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -204,11 +204,6 @@ struct auto_stream_ref {
cubeb_stream * stm;
};

using set_mm_thread_characteristics_function =
decltype(&AvSetMmThreadCharacteristicsW);
using revert_mm_thread_characteristics_function =
decltype(&AvRevertMmThreadCharacteristics);

extern cubeb_ops const wasapi_ops;

static com_heap_ptr<wchar_t>
Expand Down Expand Up @@ -306,13 +301,6 @@ struct cubeb {
nullptr;
void * output_collection_changed_user_ptr = nullptr;
UINT64 performance_counter_frequency;
/* Library dynamically opened to increase the render thread priority, and
the two function pointers we need. */
HMODULE mmcss_module = nullptr;
set_mm_thread_characteristics_function set_mm_thread_characteristics =
nullptr;
revert_mm_thread_characteristics_function revert_mm_thread_characteristics =
nullptr;
};

class wasapi_endpoint_notification_client;
Expand Down Expand Up @@ -1413,8 +1401,7 @@ static unsigned int __stdcall wasapi_stream_render_loop(LPVOID stream)

/* We could consider using "Pro Audio" here for WebAudio and
maybe WebRTC. */
mmcss_handle =
stm->context->set_mm_thread_characteristics(L"Audio", &mmcss_task_index);
mmcss_handle = AvSetMmThreadCharacteristicsA("Audio", &mmcss_task_index);
if (!mmcss_handle) {
/* This is not fatal, but we might glitch under heavy load. */
LOG("Unable to use mmcss to bump the render thread priority: %lx",
Expand Down Expand Up @@ -1522,7 +1509,7 @@ static unsigned int __stdcall wasapi_stream_render_loop(LPVOID stream)
}

if (mmcss_handle) {
stm->context->revert_mm_thread_characteristics(mmcss_handle);
AvRevertMmThreadCharacteristics(mmcss_handle);
}

if (FAILED(hr)) {
Expand All @@ -1535,18 +1522,6 @@ static unsigned int __stdcall wasapi_stream_render_loop(LPVOID stream)
void
wasapi_destroy(cubeb * context);

HANDLE WINAPI
set_mm_thread_characteristics_noop(LPCWSTR, LPDWORD mmcss_task_index)
{
return (HANDLE)1;
}

BOOL WINAPI
revert_mm_thread_characteristics_noop(HANDLE mmcss_handle)
{
return true;
}

HRESULT
register_notification_client(cubeb_stream * stm)
{
Expand Down Expand Up @@ -1782,31 +1757,6 @@ wasapi_init(cubeb ** context, char const * context_name)
ctx->performance_counter_frequency = 0;
}

ctx->mmcss_module = LoadLibraryW(L"Avrt.dll");

bool success = false;
if (ctx->mmcss_module) {
ctx->set_mm_thread_characteristics =
reinterpret_cast<set_mm_thread_characteristics_function>(
GetProcAddress(ctx->mmcss_module, "AvSetMmThreadCharacteristicsW"));
ctx->revert_mm_thread_characteristics =
reinterpret_cast<revert_mm_thread_characteristics_function>(
GetProcAddress(ctx->mmcss_module,
"AvRevertMmThreadCharacteristics"));
success = ctx->set_mm_thread_characteristics &&
ctx->revert_mm_thread_characteristics;
}
if (!success) {
// This is not a fatal error, but we might end up glitching when
// the system is under high load.
LOG("Could not load avrt.dll or fetch AvSetMmThreadCharacteristicsW "
"AvRevertMmThreadCharacteristics: %lx",
GetLastError());
ctx->set_mm_thread_characteristics = &set_mm_thread_characteristics_noop;
ctx->revert_mm_thread_characteristics =
&revert_mm_thread_characteristics_noop;
}

*context = ctx;

return CUBEB_OK;
Expand Down Expand Up @@ -1863,10 +1813,6 @@ wasapi_destroy(cubeb * context)
}
}

if (context->mmcss_module) {
FreeLibrary(context->mmcss_module);
}

delete context;
}

Expand Down

0 comments on commit 6c1a6e1

Please sign in to comment.