From e9e1d6d9e86a1f44ffb7531525986f9131b8f59d Mon Sep 17 00:00:00 2001 From: beveloper Date: Wed, 3 Sep 2003 00:57:38 +0000 Subject: [PATCH] implemented a workaround to avoid connecting with the multiaudio add-on in mono git-svn-id: file:///srv/svn/repos/haiku/trunk/current@4459 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/servers/media/DefaultManager.cpp | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/src/servers/media/DefaultManager.cpp b/src/servers/media/DefaultManager.cpp index 8433d25bad..21ea95cba3 100644 --- a/src/servers/media/DefaultManager.cpp +++ b/src/servers/media/DefaultManager.cpp @@ -412,16 +412,21 @@ DefaultManager::ConnectMixerToOutput() goto finish; } - for (int i = 0; i < 5; i++) { + for (int i = 0; i < 6; i++) { switch (i) { case 0: - printf("DefaultManager: Trying connect in native format\n"); + printf("DefaultManager: Trying connect in native format (1)\n"); if (B_OK != roster->GetFormatFor(input, &format)) { ERROR("DefaultManager: GetFormatFor failed\n"); continue; } + // XXX BeOS R5 multiaudio node bug workaround + if (format.u.raw_audio.channel_count == 1) { + printf("##### WARNING! DefaultManager: ignored mono format\n"); + continue; + } break; - + case 1: printf("DefaultManager: Trying connect in format 1\n"); memset(&format, 0, sizeof(format)); @@ -447,9 +452,19 @@ DefaultManager::ConnectMixerToOutput() break; case 4: + // BeOS R5 multiaudio node bug workaround + printf("DefaultManager: Trying connect in native format (2)\n"); + if (B_OK != roster->GetFormatFor(input, &format)) { + ERROR("DefaultManager: GetFormatFor failed\n"); + continue; + } + break; + + case 5: printf("DefaultManager: Trying connect in format 4\n"); memset(&format, 0, sizeof(format)); break; + } rv = roster->Connect(output.source, input.destination, &format, &newoutput, &newinput); if (rv == B_OK)