Compare commits

...

3 Commits

Author SHA1 Message Date
Rafael Kitover
5a21d94269 translations: transifex pull
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2025-10-04 04:00:22 +00:00
Rafael Kitover
f653261f97 translations: rebuild source .pot
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2025-10-04 04:00:07 +00:00
Rafael Kitover
4208f5af6e Fix issues and default dev in Mac CoreAudio driver
Fix some issues identified by Claude in the Mac CoreAudio sound driver,
including a race condition and some memory leaks.

Also fix selecting the default device.

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2025-10-04 02:59:40 +00:00
27 changed files with 296 additions and 155 deletions

View File

@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: VBA-M\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-09-30 16:00+0000\n"
"POT-Creation-Date: 2025-10-04 04:00+0000\n"
"PO-Revision-Date: 2011-12-03 19:42+0000\n"
"Last-Translator: Aleksandar Hadzhivelichkov <Raphaelo245@gmail.com>, 2022\n"
"Language-Team: Bulgarian (http://app.transifex.com/bgk/vba-m/language/bg/)\n"
@@ -18,7 +18,7 @@ msgstr ""
"Language: bg\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: audio/internal/coreaudio.cpp:184 audio/internal/coreaudio.cpp:541
#: audio/internal/coreaudio.cpp:375 audio/internal/coreaudio.cpp:581
#: audio/internal/sdl.cpp:179 audio/internal/sdl.cpp:197
#: audio/internal/sdl.cpp:328 audio/internal/sdl.cpp:339
#: audio/internal/sdl.cpp:359 audio/internal/faudio.cpp:490
@@ -26,6 +26,10 @@ msgstr ""
msgid "Default device"
msgstr "Устройство по подразбиране"
#: audio/internal/coreaudio.cpp:381
msgid "Could not get CoreAudio device"
msgstr ""
#: cmdevents.cpp:63 wxvbam.cpp:634
msgid "Could not create main window"
msgstr "Не можа да се създаде главен прозорец"

View File

@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: VBA-M\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-09-30 16:00+0000\n"
"POT-Creation-Date: 2025-10-04 04:00+0000\n"
"PO-Revision-Date: 2011-12-03 19:42+0000\n"
"Last-Translator: Irriep Nala Novram <per.morvan.bzh29@gmail.com>, 2017,2019\n"
"Language-Team: Breton (http://app.transifex.com/bgk/vba-m/language/br/)\n"
@@ -18,7 +18,7 @@ msgstr ""
"Language: br\n"
"Plural-Forms: nplurals=5; plural=((n%10 == 1) && (n%100 != 11) && (n%100 !=71) && (n%100 !=91) ? 0 :(n%10 == 2) && (n%100 != 12) && (n%100 !=72) && (n%100 !=92) ? 1 :(n%10 ==3 || n%10==4 || n%10==9) && (n%100 < 10 || n% 100 > 19) && (n%100 < 70 || n%100 > 79) && (n%100 < 90 || n%100 > 99) ? 2 :(n != 0 && n % 1000000 == 0) ? 3 : 4);\n"
#: audio/internal/coreaudio.cpp:184 audio/internal/coreaudio.cpp:541
#: audio/internal/coreaudio.cpp:375 audio/internal/coreaudio.cpp:581
#: audio/internal/sdl.cpp:179 audio/internal/sdl.cpp:197
#: audio/internal/sdl.cpp:328 audio/internal/sdl.cpp:339
#: audio/internal/sdl.cpp:359 audio/internal/faudio.cpp:490
@@ -26,6 +26,10 @@ msgstr ""
msgid "Default device"
msgstr "Trobarzhell dre-ziouer"
#: audio/internal/coreaudio.cpp:381
msgid "Could not get CoreAudio device"
msgstr ""
#: cmdevents.cpp:63 wxvbam.cpp:634
msgid "Could not create main window"
msgstr "N'hall ket krouiñ ar prenestr-pennañ"

View File

@@ -12,7 +12,7 @@ msgid ""
msgstr ""
"Project-Id-Version: VBA-M\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-09-30 16:00+0000\n"
"POT-Creation-Date: 2025-10-04 04:00+0000\n"
"PO-Revision-Date: 2011-12-03 19:42+0000\n"
"Last-Translator: Patrik Jager <patrikusp@gmail.com>, 2018\n"
"Language-Team: Czech (http://app.transifex.com/bgk/vba-m/language/cs/)\n"
@@ -22,7 +22,7 @@ msgstr ""
"Language: cs\n"
"Plural-Forms: nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;\n"
#: audio/internal/coreaudio.cpp:184 audio/internal/coreaudio.cpp:541
#: audio/internal/coreaudio.cpp:375 audio/internal/coreaudio.cpp:581
#: audio/internal/sdl.cpp:179 audio/internal/sdl.cpp:197
#: audio/internal/sdl.cpp:328 audio/internal/sdl.cpp:339
#: audio/internal/sdl.cpp:359 audio/internal/faudio.cpp:490
@@ -30,6 +30,10 @@ msgstr ""
msgid "Default device"
msgstr "Výchozí zařízení"
#: audio/internal/coreaudio.cpp:381
msgid "Could not get CoreAudio device"
msgstr ""
#: cmdevents.cpp:63 wxvbam.cpp:634
msgid "Could not create main window"
msgstr "Nelze vytvořit hlavní okno"

View File

@@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: VBA-M\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-09-30 16:00+0000\n"
"POT-Creation-Date: 2025-10-04 04:00+0000\n"
"PO-Revision-Date: 2011-12-03 19:42+0000\n"
"Last-Translator: Orfeas Artinopoulos, 2025\n"
"Language-Team: Greek (http://app.transifex.com/bgk/vba-m/language/el/)\n"
@@ -19,7 +19,7 @@ msgstr ""
"Language: el\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: audio/internal/coreaudio.cpp:184 audio/internal/coreaudio.cpp:541
#: audio/internal/coreaudio.cpp:375 audio/internal/coreaudio.cpp:581
#: audio/internal/sdl.cpp:179 audio/internal/sdl.cpp:197
#: audio/internal/sdl.cpp:328 audio/internal/sdl.cpp:339
#: audio/internal/sdl.cpp:359 audio/internal/faudio.cpp:490
@@ -27,6 +27,10 @@ msgstr ""
msgid "Default device"
msgstr "Προεπιλεγμένη συσκευή"
#: audio/internal/coreaudio.cpp:381
msgid "Could not get CoreAudio device"
msgstr ""
#: cmdevents.cpp:63 wxvbam.cpp:634
msgid "Could not create main window"
msgstr "Αδυναμία δημιουργίας κεντρικού παραθύρου"

View File

@@ -31,7 +31,7 @@ msgid ""
msgstr ""
"Project-Id-Version: VBA-M\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-09-30 16:00+0000\n"
"POT-Creation-Date: 2025-10-04 04:00+0000\n"
"PO-Revision-Date: 2011-12-03 19:42+0000\n"
"Last-Translator: Eequiis Vásquez, 2025\n"
"Language-Team: Spanish (http://app.transifex.com/bgk/vba-m/language/es/)\n"
@@ -41,7 +41,7 @@ msgstr ""
"Language: es\n"
"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
#: audio/internal/coreaudio.cpp:184 audio/internal/coreaudio.cpp:541
#: audio/internal/coreaudio.cpp:375 audio/internal/coreaudio.cpp:581
#: audio/internal/sdl.cpp:179 audio/internal/sdl.cpp:197
#: audio/internal/sdl.cpp:328 audio/internal/sdl.cpp:339
#: audio/internal/sdl.cpp:359 audio/internal/faudio.cpp:490
@@ -49,6 +49,10 @@ msgstr ""
msgid "Default device"
msgstr "Dispositivo por defecto"
#: audio/internal/coreaudio.cpp:381
msgid "Could not get CoreAudio device"
msgstr ""
#: cmdevents.cpp:63 wxvbam.cpp:634
msgid "Could not create main window"
msgstr "No se pudo crear la ventana principal"

View File

@@ -24,7 +24,7 @@ msgid ""
msgstr ""
"Project-Id-Version: VBA-M\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-09-30 16:00+0000\n"
"POT-Creation-Date: 2025-10-04 04:00+0000\n"
"PO-Revision-Date: 2011-12-03 19:42+0000\n"
"Last-Translator: Rene Moreira, 2025\n"
"Language-Team: Spanish (Latin America) (http://app.transifex.com/bgk/vba-m/language/es_419/)\n"
@@ -34,7 +34,7 @@ msgstr ""
"Language: es_419\n"
"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
#: audio/internal/coreaudio.cpp:184 audio/internal/coreaudio.cpp:541
#: audio/internal/coreaudio.cpp:375 audio/internal/coreaudio.cpp:581
#: audio/internal/sdl.cpp:179 audio/internal/sdl.cpp:197
#: audio/internal/sdl.cpp:328 audio/internal/sdl.cpp:339
#: audio/internal/sdl.cpp:359 audio/internal/faudio.cpp:490
@@ -42,6 +42,10 @@ msgstr ""
msgid "Default device"
msgstr "Dispositivo predeterminado"
#: audio/internal/coreaudio.cpp:381
msgid "Could not get CoreAudio device"
msgstr ""
#: cmdevents.cpp:63 wxvbam.cpp:634
msgid "Could not create main window"
msgstr "No se pudo crear ventana principal"

View File

@@ -20,7 +20,7 @@ msgid ""
msgstr ""
"Project-Id-Version: VBA-M\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-09-30 16:00+0000\n"
"POT-Creation-Date: 2025-10-04 04:00+0000\n"
"PO-Revision-Date: 2011-12-03 19:42+0000\n"
"Last-Translator: Thibault <thibaultbruneliere@gmail.com>, 2019\n"
"Language-Team: French (France) (http://app.transifex.com/bgk/vba-m/language/fr_FR/)\n"
@@ -30,7 +30,7 @@ msgstr ""
"Language: fr_FR\n"
"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
#: audio/internal/coreaudio.cpp:184 audio/internal/coreaudio.cpp:541
#: audio/internal/coreaudio.cpp:375 audio/internal/coreaudio.cpp:581
#: audio/internal/sdl.cpp:179 audio/internal/sdl.cpp:197
#: audio/internal/sdl.cpp:328 audio/internal/sdl.cpp:339
#: audio/internal/sdl.cpp:359 audio/internal/faudio.cpp:490
@@ -38,6 +38,10 @@ msgstr ""
msgid "Default device"
msgstr "Périphérique par défaut"
#: audio/internal/coreaudio.cpp:381
msgid "Could not get CoreAudio device"
msgstr ""
#: cmdevents.cpp:63 wxvbam.cpp:634
msgid "Could not create main window"
msgstr "Impossible de créer la fenêtre principale"

View File

@@ -11,7 +11,7 @@ msgid ""
msgstr ""
"Project-Id-Version: VBA-M\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-09-30 16:00+0000\n"
"POT-Creation-Date: 2025-10-04 04:00+0000\n"
"PO-Revision-Date: 2011-12-03 19:42+0000\n"
"Last-Translator: David Rebolo Magariños <drgaga345@gmail.com>, 2021\n"
"Language-Team: Galician (http://app.transifex.com/bgk/vba-m/language/gl/)\n"
@@ -21,7 +21,7 @@ msgstr ""
"Language: gl\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: audio/internal/coreaudio.cpp:184 audio/internal/coreaudio.cpp:541
#: audio/internal/coreaudio.cpp:375 audio/internal/coreaudio.cpp:581
#: audio/internal/sdl.cpp:179 audio/internal/sdl.cpp:197
#: audio/internal/sdl.cpp:328 audio/internal/sdl.cpp:339
#: audio/internal/sdl.cpp:359 audio/internal/faudio.cpp:490
@@ -29,6 +29,10 @@ msgstr ""
msgid "Default device"
msgstr "Dispositivo por defecto"
#: audio/internal/coreaudio.cpp:381
msgid "Could not get CoreAudio device"
msgstr ""
#: cmdevents.cpp:63 wxvbam.cpp:634
msgid "Could not create main window"
msgstr "Non se pode crear a xanela principal"

View File

@@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: VBA-M\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-09-30 16:00+0000\n"
"POT-Creation-Date: 2025-10-04 04:00+0000\n"
"PO-Revision-Date: 2011-12-03 19:42+0000\n"
"Last-Translator: Ds886 <daniel.ashkenazi@gmail.com>, 2022\n"
"Language-Team: Hebrew (Israel) (http://app.transifex.com/bgk/vba-m/language/he_IL/)\n"
@@ -19,7 +19,7 @@ msgstr ""
"Language: he_IL\n"
"Plural-Forms: nplurals=3; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: 2;\n"
#: audio/internal/coreaudio.cpp:184 audio/internal/coreaudio.cpp:541
#: audio/internal/coreaudio.cpp:375 audio/internal/coreaudio.cpp:581
#: audio/internal/sdl.cpp:179 audio/internal/sdl.cpp:197
#: audio/internal/sdl.cpp:328 audio/internal/sdl.cpp:339
#: audio/internal/sdl.cpp:359 audio/internal/faudio.cpp:490
@@ -27,6 +27,10 @@ msgstr ""
msgid "Default device"
msgstr "מכשיר ברירת מחדל"
#: audio/internal/coreaudio.cpp:381
msgid "Could not get CoreAudio device"
msgstr ""
#: cmdevents.cpp:63 wxvbam.cpp:634
msgid "Could not create main window"
msgstr "לא יכל ליצור את החלון המרכזי"

View File

@@ -10,7 +10,7 @@ msgid ""
msgstr ""
"Project-Id-Version: VBA-M\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-09-30 16:00+0000\n"
"POT-Creation-Date: 2025-10-04 04:00+0000\n"
"PO-Revision-Date: 2011-12-03 19:42+0000\n"
"Last-Translator: Greg@Cyberdyne, 2018\n"
"Language-Team: Hungarian (Hungary) (http://app.transifex.com/bgk/vba-m/language/hu_HU/)\n"
@@ -20,7 +20,7 @@ msgstr ""
"Language: hu_HU\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: audio/internal/coreaudio.cpp:184 audio/internal/coreaudio.cpp:541
#: audio/internal/coreaudio.cpp:375 audio/internal/coreaudio.cpp:581
#: audio/internal/sdl.cpp:179 audio/internal/sdl.cpp:197
#: audio/internal/sdl.cpp:328 audio/internal/sdl.cpp:339
#: audio/internal/sdl.cpp:359 audio/internal/faudio.cpp:490
@@ -28,6 +28,10 @@ msgstr ""
msgid "Default device"
msgstr "Alapértelmezett eszköz"
#: audio/internal/coreaudio.cpp:381
msgid "Could not get CoreAudio device"
msgstr ""
#: cmdevents.cpp:63 wxvbam.cpp:634
msgid "Could not create main window"
msgstr "A főablak nem nyitható meg"

View File

@@ -14,7 +14,7 @@ msgid ""
msgstr ""
"Project-Id-Version: VBA-M\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-09-30 16:00+0000\n"
"POT-Creation-Date: 2025-10-04 04:00+0000\n"
"PO-Revision-Date: 2011-12-03 19:42+0000\n"
"Last-Translator: Rahman Abd (Ckuzero), 2025\n"
"Language-Team: Indonesian (http://app.transifex.com/bgk/vba-m/language/id/)\n"
@@ -24,7 +24,7 @@ msgstr ""
"Language: id\n"
"Plural-Forms: nplurals=1; plural=0;\n"
#: audio/internal/coreaudio.cpp:184 audio/internal/coreaudio.cpp:541
#: audio/internal/coreaudio.cpp:375 audio/internal/coreaudio.cpp:581
#: audio/internal/sdl.cpp:179 audio/internal/sdl.cpp:197
#: audio/internal/sdl.cpp:328 audio/internal/sdl.cpp:339
#: audio/internal/sdl.cpp:359 audio/internal/faudio.cpp:490
@@ -32,6 +32,10 @@ msgstr ""
msgid "Default device"
msgstr "Perangkat bawaan"
#: audio/internal/coreaudio.cpp:381
msgid "Could not get CoreAudio device"
msgstr ""
#: cmdevents.cpp:63 wxvbam.cpp:634
msgid "Could not create main window"
msgstr "Tidak dapat membuat window utama"

View File

@@ -25,7 +25,7 @@ msgid ""
msgstr ""
"Project-Id-Version: VBA-M\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-09-30 16:00+0000\n"
"POT-Creation-Date: 2025-10-04 04:00+0000\n"
"PO-Revision-Date: 2011-12-03 19:42+0000\n"
"Last-Translator: ludo thorn, 2025\n"
"Language-Team: Italian (Italy) (http://app.transifex.com/bgk/vba-m/language/it_IT/)\n"
@@ -35,7 +35,7 @@ msgstr ""
"Language: it_IT\n"
"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
#: audio/internal/coreaudio.cpp:184 audio/internal/coreaudio.cpp:541
#: audio/internal/coreaudio.cpp:375 audio/internal/coreaudio.cpp:581
#: audio/internal/sdl.cpp:179 audio/internal/sdl.cpp:197
#: audio/internal/sdl.cpp:328 audio/internal/sdl.cpp:339
#: audio/internal/sdl.cpp:359 audio/internal/faudio.cpp:490
@@ -43,6 +43,10 @@ msgstr ""
msgid "Default device"
msgstr "Device predefinito"
#: audio/internal/coreaudio.cpp:381
msgid "Could not get CoreAudio device"
msgstr ""
#: cmdevents.cpp:63 wxvbam.cpp:634
msgid "Could not create main window"
msgstr "Impossibile creare una finestra principale"

View File

@@ -17,7 +17,7 @@ msgid ""
msgstr ""
"Project-Id-Version: VBA-M\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-09-30 16:00+0000\n"
"POT-Creation-Date: 2025-10-04 04:00+0000\n"
"PO-Revision-Date: 2011-12-03 19:42+0000\n"
"Last-Translator: Lanta Liz, 2025\n"
"Language-Team: Japanese (http://app.transifex.com/bgk/vba-m/language/ja/)\n"
@@ -27,7 +27,7 @@ msgstr ""
"Language: ja\n"
"Plural-Forms: nplurals=1; plural=0;\n"
#: audio/internal/coreaudio.cpp:184 audio/internal/coreaudio.cpp:541
#: audio/internal/coreaudio.cpp:375 audio/internal/coreaudio.cpp:581
#: audio/internal/sdl.cpp:179 audio/internal/sdl.cpp:197
#: audio/internal/sdl.cpp:328 audio/internal/sdl.cpp:339
#: audio/internal/sdl.cpp:359 audio/internal/faudio.cpp:490
@@ -35,6 +35,10 @@ msgstr ""
msgid "Default device"
msgstr "既定のデバイス"
#: audio/internal/coreaudio.cpp:381
msgid "Could not get CoreAudio device"
msgstr ""
#: cmdevents.cpp:63 wxvbam.cpp:634
msgid "Could not create main window"
msgstr "メインウィンドウを作成できませんでした"

View File

@@ -12,7 +12,7 @@ msgid ""
msgstr ""
"Project-Id-Version: VBA-M\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-09-30 16:00+0000\n"
"POT-Creation-Date: 2025-10-04 04:00+0000\n"
"PO-Revision-Date: 2011-12-03 19:42+0000\n"
"Last-Translator: Hoseok Seo <ddinghoya@gmail.com>, 2022-2025\n"
"Language-Team: Korean (Korea) (http://app.transifex.com/bgk/vba-m/language/ko_KR/)\n"
@@ -22,7 +22,7 @@ msgstr ""
"Language: ko_KR\n"
"Plural-Forms: nplurals=1; plural=0;\n"
#: audio/internal/coreaudio.cpp:184 audio/internal/coreaudio.cpp:541
#: audio/internal/coreaudio.cpp:375 audio/internal/coreaudio.cpp:581
#: audio/internal/sdl.cpp:179 audio/internal/sdl.cpp:197
#: audio/internal/sdl.cpp:328 audio/internal/sdl.cpp:339
#: audio/internal/sdl.cpp:359 audio/internal/faudio.cpp:490
@@ -30,6 +30,10 @@ msgstr ""
msgid "Default device"
msgstr "기본 장치"
#: audio/internal/coreaudio.cpp:381
msgid "Could not get CoreAudio device"
msgstr ""
#: cmdevents.cpp:63 wxvbam.cpp:634
msgid "Could not create main window"
msgstr "메인 윈도우를 생성할 수 없습니다."

View File

@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: VBA-M\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-09-30 16:00+0000\n"
"POT-Creation-Date: 2025-10-04 04:00+0000\n"
"PO-Revision-Date: 2011-12-03 19:42+0000\n"
"Last-Translator: abuyop <abuyop@gmail.com>, 2017\n"
"Language-Team: Malay (Malaysia) (http://app.transifex.com/bgk/vba-m/language/ms_MY/)\n"
@@ -18,7 +18,7 @@ msgstr ""
"Language: ms_MY\n"
"Plural-Forms: nplurals=1; plural=0;\n"
#: audio/internal/coreaudio.cpp:184 audio/internal/coreaudio.cpp:541
#: audio/internal/coreaudio.cpp:375 audio/internal/coreaudio.cpp:581
#: audio/internal/sdl.cpp:179 audio/internal/sdl.cpp:197
#: audio/internal/sdl.cpp:328 audio/internal/sdl.cpp:339
#: audio/internal/sdl.cpp:359 audio/internal/faudio.cpp:490
@@ -26,6 +26,10 @@ msgstr ""
msgid "Default device"
msgstr "Peranti lalai"
#: audio/internal/coreaudio.cpp:381
msgid "Could not get CoreAudio device"
msgstr ""
#: cmdevents.cpp:63 wxvbam.cpp:634
msgid "Could not create main window"
msgstr "Tidak dapat cipta tetingkap utama"

View File

@@ -11,7 +11,7 @@ msgid ""
msgstr ""
"Project-Id-Version: VBA-M\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-09-30 16:00+0000\n"
"POT-Creation-Date: 2025-10-04 04:00+0000\n"
"PO-Revision-Date: 2011-12-03 19:42+0000\n"
"Last-Translator: Allan Nordhøy <epost@anotheragency.no>, 2016-2017\n"
"Language-Team: Norwegian Bokmål (http://app.transifex.com/bgk/vba-m/language/nb/)\n"
@@ -21,7 +21,7 @@ msgstr ""
"Language: nb\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: audio/internal/coreaudio.cpp:184 audio/internal/coreaudio.cpp:541
#: audio/internal/coreaudio.cpp:375 audio/internal/coreaudio.cpp:581
#: audio/internal/sdl.cpp:179 audio/internal/sdl.cpp:197
#: audio/internal/sdl.cpp:328 audio/internal/sdl.cpp:339
#: audio/internal/sdl.cpp:359 audio/internal/faudio.cpp:490
@@ -29,6 +29,10 @@ msgstr ""
msgid "Default device"
msgstr "Standard enhet"
#: audio/internal/coreaudio.cpp:381
msgid "Could not get CoreAudio device"
msgstr ""
#: cmdevents.cpp:63 wxvbam.cpp:634
msgid "Could not create main window"
msgstr "Kunne ikke opprette hovedvindu"

View File

@@ -12,7 +12,7 @@ msgid ""
msgstr ""
"Project-Id-Version: VBA-M\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-09-30 16:00+0000\n"
"POT-Creation-Date: 2025-10-04 04:00+0000\n"
"PO-Revision-Date: 2011-12-03 19:42+0000\n"
"Last-Translator: LevensLes The, 2022\n"
"Language-Team: Dutch (http://app.transifex.com/bgk/vba-m/language/nl/)\n"
@@ -22,7 +22,7 @@ msgstr ""
"Language: nl\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: audio/internal/coreaudio.cpp:184 audio/internal/coreaudio.cpp:541
#: audio/internal/coreaudio.cpp:375 audio/internal/coreaudio.cpp:581
#: audio/internal/sdl.cpp:179 audio/internal/sdl.cpp:197
#: audio/internal/sdl.cpp:328 audio/internal/sdl.cpp:339
#: audio/internal/sdl.cpp:359 audio/internal/faudio.cpp:490
@@ -30,6 +30,10 @@ msgstr ""
msgid "Default device"
msgstr "Standaard apparaat"
#: audio/internal/coreaudio.cpp:381
msgid "Could not get CoreAudio device"
msgstr ""
#: cmdevents.cpp:63 wxvbam.cpp:634
msgid "Could not create main window"
msgstr "Kon hoofdvenster niet aanmaken"

View File

@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: VBA-M\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-09-30 16:00+0000\n"
"POT-Creation-Date: 2025-10-04 04:00+0000\n"
"PO-Revision-Date: 2011-12-03 19:42+0000\n"
"Last-Translator: Damian Drakon <dragon1590@gmail.com>, 2019-2020,2022-2023\n"
"Language-Team: Polish (Poland) (http://app.transifex.com/bgk/vba-m/language/pl_PL/)\n"
@@ -18,7 +18,7 @@ msgstr ""
"Language: pl_PL\n"
"Plural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\n"
#: audio/internal/coreaudio.cpp:184 audio/internal/coreaudio.cpp:541
#: audio/internal/coreaudio.cpp:375 audio/internal/coreaudio.cpp:581
#: audio/internal/sdl.cpp:179 audio/internal/sdl.cpp:197
#: audio/internal/sdl.cpp:328 audio/internal/sdl.cpp:339
#: audio/internal/sdl.cpp:359 audio/internal/faudio.cpp:490
@@ -26,6 +26,10 @@ msgstr ""
msgid "Default device"
msgstr "Urządzenie domyślne"
#: audio/internal/coreaudio.cpp:381
msgid "Could not get CoreAudio device"
msgstr ""
#: cmdevents.cpp:63 wxvbam.cpp:634
msgid "Could not create main window"
msgstr "Nie można utworzyć okna głównego"

View File

@@ -39,7 +39,7 @@ msgid ""
msgstr ""
"Project-Id-Version: VBA-M\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-09-30 16:00+0000\n"
"POT-Creation-Date: 2025-10-04 04:00+0000\n"
"PO-Revision-Date: 2011-12-03 19:42+0000\n"
"Last-Translator: Mateus, 2020\n"
"Language-Team: Portuguese (Brazil) (http://app.transifex.com/bgk/vba-m/language/pt_BR/)\n"
@@ -49,7 +49,7 @@ msgstr ""
"Language: pt_BR\n"
"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
#: audio/internal/coreaudio.cpp:184 audio/internal/coreaudio.cpp:541
#: audio/internal/coreaudio.cpp:375 audio/internal/coreaudio.cpp:581
#: audio/internal/sdl.cpp:179 audio/internal/sdl.cpp:197
#: audio/internal/sdl.cpp:328 audio/internal/sdl.cpp:339
#: audio/internal/sdl.cpp:359 audio/internal/faudio.cpp:490
@@ -57,6 +57,10 @@ msgstr ""
msgid "Default device"
msgstr "Dispositivo padrão"
#: audio/internal/coreaudio.cpp:381
msgid "Could not get CoreAudio device"
msgstr ""
#: cmdevents.cpp:63 wxvbam.cpp:634
msgid "Could not create main window"
msgstr "Não conseguiu criar a janela principal"

View File

@@ -25,7 +25,7 @@ msgid ""
msgstr ""
"Project-Id-Version: VBA-M\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-09-30 16:00+0000\n"
"POT-Creation-Date: 2025-10-04 04:00+0000\n"
"PO-Revision-Date: 2011-12-03 19:42+0000\n"
"Last-Translator: Кирилл kirillovich, 2025\n"
"Language-Team: Russian (Russia) (http://app.transifex.com/bgk/vba-m/language/ru_RU/)\n"
@@ -35,7 +35,7 @@ msgstr ""
"Language: ru_RU\n"
"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n"
#: audio/internal/coreaudio.cpp:184 audio/internal/coreaudio.cpp:541
#: audio/internal/coreaudio.cpp:375 audio/internal/coreaudio.cpp:581
#: audio/internal/sdl.cpp:179 audio/internal/sdl.cpp:197
#: audio/internal/sdl.cpp:328 audio/internal/sdl.cpp:339
#: audio/internal/sdl.cpp:359 audio/internal/faudio.cpp:490
@@ -43,6 +43,10 @@ msgstr ""
msgid "Default device"
msgstr "Устройство по умолчанию"
#: audio/internal/coreaudio.cpp:381
msgid "Could not get CoreAudio device"
msgstr ""
#: cmdevents.cpp:63 wxvbam.cpp:634
msgid "Could not create main window"
msgstr "Невозможно создать главное окно"

View File

@@ -16,7 +16,7 @@ msgid ""
msgstr ""
"Project-Id-Version: VBA-M\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-09-30 16:00+0000\n"
"POT-Creation-Date: 2025-10-04 04:00+0000\n"
"PO-Revision-Date: 2011-12-03 19:42+0000\n"
"Last-Translator: Daniel Nylander <po@danielnylander.se>, 2025\n"
"Language-Team: Swedish (http://app.transifex.com/bgk/vba-m/language/sv/)\n"
@@ -26,7 +26,7 @@ msgstr ""
"Language: sv\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: audio/internal/coreaudio.cpp:184 audio/internal/coreaudio.cpp:541
#: audio/internal/coreaudio.cpp:375 audio/internal/coreaudio.cpp:581
#: audio/internal/sdl.cpp:179 audio/internal/sdl.cpp:197
#: audio/internal/sdl.cpp:328 audio/internal/sdl.cpp:339
#: audio/internal/sdl.cpp:359 audio/internal/faudio.cpp:490
@@ -34,6 +34,10 @@ msgstr ""
msgid "Default device"
msgstr "Standardenhet"
#: audio/internal/coreaudio.cpp:381
msgid "Could not get CoreAudio device"
msgstr ""
#: cmdevents.cpp:63 wxvbam.cpp:634
msgid "Could not create main window"
msgstr "Kunde inte skapa huvudfönster"

View File

@@ -17,7 +17,7 @@ msgid ""
msgstr ""
"Project-Id-Version: VBA-M\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-09-30 16:00+0000\n"
"POT-Creation-Date: 2025-10-04 04:00+0000\n"
"PO-Revision-Date: 2011-12-03 19:42+0000\n"
"Last-Translator: adalet Mustafa, 2025\n"
"Language-Team: Turkish (http://app.transifex.com/bgk/vba-m/language/tr/)\n"
@@ -27,7 +27,7 @@ msgstr ""
"Language: tr\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
#: audio/internal/coreaudio.cpp:184 audio/internal/coreaudio.cpp:541
#: audio/internal/coreaudio.cpp:375 audio/internal/coreaudio.cpp:581
#: audio/internal/sdl.cpp:179 audio/internal/sdl.cpp:197
#: audio/internal/sdl.cpp:328 audio/internal/sdl.cpp:339
#: audio/internal/sdl.cpp:359 audio/internal/faudio.cpp:490
@@ -35,6 +35,10 @@ msgstr ""
msgid "Default device"
msgstr "Varsayılan cihaz"
#: audio/internal/coreaudio.cpp:381
msgid "Could not get CoreAudio device"
msgstr ""
#: cmdevents.cpp:63 wxvbam.cpp:634
msgid "Could not create main window"
msgstr "Ana pencere yaratılamadı"

View File

@@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: VBA-M\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-09-30 16:00+0000\n"
"POT-Creation-Date: 2025-10-04 04:00+0000\n"
"PO-Revision-Date: 2011-12-03 19:42+0000\n"
"Last-Translator: Svyatoslav <zarazafamila@gmail.com>, 2023\n"
"Language-Team: Ukrainian (http://app.transifex.com/bgk/vba-m/language/uk/)\n"
@@ -19,7 +19,7 @@ msgstr ""
"Language: uk\n"
"Plural-Forms: nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3);\n"
#: audio/internal/coreaudio.cpp:184 audio/internal/coreaudio.cpp:541
#: audio/internal/coreaudio.cpp:375 audio/internal/coreaudio.cpp:581
#: audio/internal/sdl.cpp:179 audio/internal/sdl.cpp:197
#: audio/internal/sdl.cpp:328 audio/internal/sdl.cpp:339
#: audio/internal/sdl.cpp:359 audio/internal/faudio.cpp:490
@@ -27,6 +27,10 @@ msgstr ""
msgid "Default device"
msgstr "Типовий пристрій"
#: audio/internal/coreaudio.cpp:381
msgid "Could not get CoreAudio device"
msgstr ""
#: cmdevents.cpp:63 wxvbam.cpp:634
msgid "Could not create main window"
msgstr "Неможливо створити головне вікно."

View File

@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-09-30 16:00+0000\n"
"POT-Creation-Date: 2025-10-04 04:00+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -17,7 +17,7 @@ msgstr ""
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"
#: audio/internal/coreaudio.cpp:184 audio/internal/coreaudio.cpp:541
#: audio/internal/coreaudio.cpp:375 audio/internal/coreaudio.cpp:581
#: audio/internal/sdl.cpp:179 audio/internal/sdl.cpp:197
#: audio/internal/sdl.cpp:328 audio/internal/sdl.cpp:339
#: audio/internal/sdl.cpp:359 audio/internal/faudio.cpp:490
@@ -25,6 +25,10 @@ msgstr ""
msgid "Default device"
msgstr ""
#: audio/internal/coreaudio.cpp:381
msgid "Could not get CoreAudio device"
msgstr ""
#: cmdevents.cpp:63 wxvbam.cpp:634
msgid "Could not create main window"
msgstr ""

View File

@@ -24,7 +24,7 @@ msgid ""
msgstr ""
"Project-Id-Version: VBA-M\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-09-30 16:00+0000\n"
"POT-Creation-Date: 2025-10-04 04:00+0000\n"
"PO-Revision-Date: 2011-12-03 19:42+0000\n"
"Last-Translator: 天绝星 <c.cejhb@gmail.com>, 2017,2019-2020,2022-2025\n"
"Language-Team: Chinese (China) (http://app.transifex.com/bgk/vba-m/language/zh_CN/)\n"
@@ -34,7 +34,7 @@ msgstr ""
"Language: zh_CN\n"
"Plural-Forms: nplurals=1; plural=0;\n"
#: audio/internal/coreaudio.cpp:184 audio/internal/coreaudio.cpp:541
#: audio/internal/coreaudio.cpp:375 audio/internal/coreaudio.cpp:581
#: audio/internal/sdl.cpp:179 audio/internal/sdl.cpp:197
#: audio/internal/sdl.cpp:328 audio/internal/sdl.cpp:339
#: audio/internal/sdl.cpp:359 audio/internal/faudio.cpp:490
@@ -42,6 +42,10 @@ msgstr ""
msgid "Default device"
msgstr "默认设备"
#: audio/internal/coreaudio.cpp:381
msgid "Could not get CoreAudio device"
msgstr ""
#: cmdevents.cpp:63 wxvbam.cpp:634
msgid "Could not create main window"
msgstr "无法创建主窗口"

View File

@@ -20,6 +20,7 @@
#include <AudioToolbox/AudioToolbox.h>
#include <stdlib.h>
#include <memory.h>
#include <mutex>
#include <wx/arrstr.h>
#include <wx/log.h>
@@ -109,7 +110,8 @@ public:
int soundBufferLen = 0;
AudioTimeStamp starttime;
AudioTimeStamp timestamp;
AudioQueueTimelineRef timeline;
AudioQueueTimelineRef timeline = NULL;
std::mutex buffer_mutex;
private:
AudioDeviceID GetCoreAudioDevice(wxString name);
@@ -145,6 +147,7 @@ static void PlaybackBufferReadyCallback(void *inUserData, AudioQueueRef inAQ, Au
cadevice->buffers[curbuf]->mAudioDataByteSize = 0;
}
std::lock_guard<std::mutex> lock(cadevice->buffer_mutex);
if (cadevice->filled_buffers > 0) {
cadevice->filled_buffers--;
}
@@ -180,84 +183,72 @@ AudioDeviceID CoreAudioAudio::GetCoreAudioDevice(wxString name)
AudioBufferList *buflist = NULL;
OSStatus result = 0;
CFStringRef cfstr = NULL;
if (name == _("Default device")) {
if (AudioObjectGetPropertyDataSize(kAudioObjectSystemObject, &default_playback_device_address, 0, NULL, &size) != kAudioHardwareNoError) {
return 0;
} else if ((devs = (AudioDeviceID *)malloc(size)) == NULL) {
return 0;
} else if (AudioObjectGetPropertyData(kAudioObjectSystemObject, &default_playback_device_address, 0, NULL, &size, devs) != kAudioHardwareNoError) {
free(devs);
return 0;
}
dev = devs[0];
free(devs);
return dev;
} else {
if (AudioObjectGetPropertyDataSize(kAudioObjectSystemObject, &devlist_address, 0, NULL, &size) != kAudioHardwareNoError) {
return 0;
} else if ((devs = (AudioDeviceID *)malloc(size)) == NULL) {
return 0;
} else if (AudioObjectGetPropertyData(kAudioObjectSystemObject, &devlist_address, 0, NULL, &size, devs) != kAudioHardwareNoError) {
free(devs);
return 0;
}
const UInt32 total_devices = (UInt32) (size / sizeof(AudioDeviceID));
for (UInt32 i = 0; i < total_devices; i++)
{
if (AudioObjectGetPropertyDataSize(devs[i], &addr, 0, NULL, &size) != noErr) {
continue;
} else if ((buflist = (AudioBufferList *)malloc(size)) == NULL) {
continue;
}
result = AudioObjectGetPropertyData(devs[i], &addr, 0, NULL, &size, buflist);
if (result != noErr) {
free(buflist);
continue;
}
if (buflist->mNumberBuffers == 0) {
free(buflist);
continue;
}
size = sizeof(CFStringRef);
if (AudioObjectGetPropertyData(devs[i], &nameaddr, 0, NULL, &size, &cfstr) != kAudioHardwareNoError) {
free(buflist);
continue;
}
CFIndex len = CFStringGetMaximumSizeForEncoding(CFStringGetLength(cfstr), kCFStringEncodingUTF8);
const char *name = (const char *)malloc(len + 1);
CFStringGetCString(cfstr, (char *)name, len + 1, kCFStringEncodingUTF8);
if (name != NULL)
{
const wxString device_name(name, wxConvLibc);
if (device_name == name) {
dev = devs[i];
free(devs);
free(buflist);
free((void *)name);
return dev;
}
}
free(buflist);
free((void *)name);
}
if (AudioObjectGetPropertyDataSize(kAudioObjectSystemObject, &devlist_address, 0, NULL, &size) != kAudioHardwareNoError) {
return 0;
} else if ((devs = (AudioDeviceID *)malloc(size)) == NULL) {
return 0;
} else if (AudioObjectGetPropertyData(kAudioObjectSystemObject, &devlist_address, 0, NULL, &size, devs) != kAudioHardwareNoError) {
free(devs);
return 0;
}
const UInt32 total_devices = (UInt32) (size / sizeof(AudioDeviceID));
for (UInt32 i = 0; i < total_devices; i++)
{
if (AudioObjectGetPropertyDataSize(devs[i], &addr, 0, NULL, &size) != noErr) {
continue;
} else if ((buflist = (AudioBufferList *)malloc(size)) == NULL) {
continue;
}
result = AudioObjectGetPropertyData(devs[i], &addr, 0, NULL, &size, buflist);
if (result != noErr) {
free(buflist);
continue;
}
if (buflist->mNumberBuffers == 0) {
free(buflist);
continue;
}
size = sizeof(CFStringRef);
if (AudioObjectGetPropertyData(devs[i], &nameaddr, 0, NULL, &size, &cfstr) != kAudioHardwareNoError) {
free(buflist);
continue;
}
CFIndex len = CFStringGetMaximumSizeForEncoding(CFStringGetLength(cfstr), kCFStringEncodingUTF8);
const char *device_name_cstr = (const char *)malloc(len + 1);
CFStringGetCString(cfstr, (char *)device_name_cstr, len + 1, kCFStringEncodingUTF8);
if (device_name_cstr != NULL)
{
const wxString device_name(device_name_cstr, wxConvLibc);
if (device_name == name) {
dev = devs[i];
free(devs);
free(buflist);
free((void *)device_name_cstr);
CFRelease(cfstr);
return dev;
}
}
free(buflist);
free((void *)device_name_cstr);
CFRelease(cfstr);
}
free(devs);
return 0;
}
@@ -269,16 +260,37 @@ initialized(false)
void CoreAudioAudio::deinit() {
if (!initialized)
return;
AudioObjectRemovePropertyListener(device, &alive_address, DeviceAliveNotification, this);
for (int i = 0; i < OPTION(kSoundBuffers); i++) {
AudioQueueFreeBuffer(audioQueue, buffers[i]);
if (device != 0) {
AudioObjectRemovePropertyListener(device, &alive_address, DeviceAliveNotification, this);
}
if (buffers != NULL) {
for (int i = 0; i < OPTION(kSoundBuffers); i++) {
if (buffers[i] != NULL) {
AudioQueueFreeBuffer(audioQueue, buffers[i]);
}
}
free(buffers);
buffers = NULL;
}
AudioQueueStop(audioQueue, TRUE);
if (timeline != NULL) {
AudioQueueDisposeTimeline(audioQueue, timeline);
timeline = NULL;
}
if (audioQueue != NULL) {
AudioQueueDispose(audioQueue, TRUE);
audioQueue = NULL;
}
device = 0;
current_buffer = 0;
filled_buffers = 0;
initialized = false;
}
@@ -293,24 +305,20 @@ static bool AssignDeviceToAudioQueue(CoreAudioAudio *cadevice)
kAudioDevicePropertyScopeOutput,
kAudioObjectPropertyElementMain
};
OSStatus result;
CFStringRef devuid;
UInt32 devuidsize = sizeof(devuid);
result = AudioObjectGetPropertyData(cadevice->device, &prop, 0, NULL, &devuidsize, &devuid);
if (result != noErr) {
return false;
}
result = AudioQueueSetProperty(cadevice->audioQueue, kAudioQueueProperty_CurrentDevice, &devuid, devuidsize);
if (result != noErr) {
return false;
}
CFRelease(devuid); // Release devuid; we're done with it and AudioQueueSetProperty should have retained if it wants to keep it.
return (bool)(result == noErr);
}
@@ -362,12 +370,19 @@ bool CoreAudioAudio::init(long sampleRate) {
AudioChannelLayout layout;
memset(&layout, 0, sizeof(layout));
device = GetCoreAudioDevice(OPTION(kSoundAudioDevice));
if (device == 0) {
fprintf(stderr, "Couldn't get Core Audio device\n");
return false;
const wxString device_name = OPTION(kSoundAudioDevice);
const bool use_default_device = (device_name.IsEmpty() || device_name == _("Default device"));
if (!use_default_device) {
device = GetCoreAudioDevice(device_name);
if (device == 0) {
wxLogError(_("Could not get CoreAudio device"));
return false;
}
} else {
device = 0;
}
description.mFormatID = kAudioFormatLinearPCM;
@@ -382,16 +397,20 @@ bool CoreAudioAudio::init(long sampleRate) {
soundBufferLen = (sampleRate / 60) * description.mBytesPerPacket;
PrepareDevice(this);
if (!use_default_device) {
PrepareDevice(this);
AudioObjectAddPropertyListener(device, &alive_address, DeviceAliveNotification, this);
}
AudioObjectAddPropertyListener(device, &alive_address, DeviceAliveNotification, this);
result = AudioQueueNewOutput(&description, PlaybackBufferReadyCallback, this, NULL, NULL, 0, &audioQueue);
if (result != noErr) {
return false;
}
AssignDeviceToAudioQueue(this);
if (!use_default_device) {
AssignDeviceToAudioQueue(this);
}
layout.mChannelLayoutTag = kAudioChannelLayoutTag_Stereo;
result = AudioQueueSetProperty(audioQueue, kAudioQueueProperty_ChannelLayout, &layout, sizeof(layout));
@@ -466,10 +485,17 @@ void CoreAudioAudio::setBuffer(uint16_t* finalWave, int length) {
this_buf = buffers[current_buffer];
if (this_buf == NULL) {
fprintf(stderr, "Current buffer is NULL\n");
return;
}
// Bounds checking: ensure we don't write past buffer capacity
if (this_buf->mAudioDataByteSize + length > this_buf->mAudioDataBytesCapacity) {
length = this_buf->mAudioDataBytesCapacity - this_buf->mAudioDataByteSize;
if (length <= 0) {
return;
}
}
memcpy((uint8_t *)this_buf->mAudioData + this_buf->mAudioDataByteSize, finalWave, length);
this_buf->mAudioDataByteSize += (UInt32)length;
@@ -495,10 +521,11 @@ void CoreAudioAudio::write(uint16_t* finalWave, int length) {
{
setBuffer(finalWave, (avail * (description.mBitsPerChannel / 8)));
finalWave += (avail * (description.mBitsPerChannel / 8));
finalWave += avail;
samples -= avail;
if (buffers[current_buffer]->mAudioDataByteSize >= buffers[current_buffer]->mAudioDataBytesCapacity) {
std::lock_guard<std::mutex> lock(buffer_mutex);
current_buffer++;
filled_buffers++;
}
@@ -507,7 +534,13 @@ void CoreAudioAudio::write(uint16_t* finalWave, int length) {
current_buffer = 0;
}
while (filled_buffers >= OPTION(kSoundBuffers)) {
while (true) {
{
std::lock_guard<std::mutex> lock(buffer_mutex);
if (filled_buffers < OPTION(kSoundBuffers)) {
break;
}
}
wxMilliSleep(((soundGetSampleRate() / 60) * 4) / (soundGetSampleRate() >> 7));
}
}
@@ -515,6 +548,7 @@ void CoreAudioAudio::write(uint16_t* finalWave, int length) {
setBuffer(finalWave, samples * (description.mBitsPerChannel / 8));
if (buffers[current_buffer]->mAudioDataByteSize >= buffers[current_buffer]->mAudioDataBytesCapacity) {
std::lock_guard<std::mutex> lock(buffer_mutex);
current_buffer++;
filled_buffers++;
}
@@ -523,7 +557,13 @@ void CoreAudioAudio::write(uint16_t* finalWave, int length) {
current_buffer = 0;
}
while (filled_buffers >= OPTION(kSoundBuffers)) {
while (true) {
{
std::lock_guard<std::mutex> lock(buffer_mutex);
if (filled_buffers < OPTION(kSoundBuffers)) {
break;
}
}
wxMilliSleep(((soundGetSampleRate() / 60) * 4) / (soundGetSampleRate() >> 7));
}
}
@@ -592,6 +632,7 @@ std::vector<AudioDevice> GetCoreAudioDevices() {
free(buflist);
free((void *)name);
CFRelease(cfstr);
}
return devices;

View File

@@ -6,10 +6,10 @@
namespace audio {
namespace internal {
// Returns the set of OpenAL devices.
// Returns the set of CoreAudio devices.
std::vector<AudioDevice> GetCoreAudioDevices();
// Creates an OpenAL sound driver.
// Creates a CoreAudio sound driver.
std::unique_ptr<SoundDriver> CreateCoreAudioDriver();
} // namespace internal