Commit Graph
108 Commits
Author SHA1 Message Date
staphen 83168f7954 Add option for selecting audio device 2022-06-01 17:11:29 +02:00
Anders Jenbo 9d082389d8 Clean up music track selection 2022-05-10 15:16:38 +02:00
Anders Jenbo 0645d9b2a1 Correct missing hellfire level mapping in leveltype
Hellfire never added the 2 new dungion types, instead it makes
additional checks on currlevel. This is confusing and mess, so cleaned
it up.
2022-05-10 15:16:38 +02:00
Gleb Mazovetskiy 7f695c2835 Use SoundSample for music
Unifies audio handling between sound effects and music.
2022-04-14 03:11:37 +02:00
Gleb Mazovetskiy 5645456537 Support MP3 playback 2022-04-09 14:15:55 +02:00
Anders Jenbo 1409e604f5 Reduce string conversions 2022-03-20 11:04:15 +01:00
obligaron 79b926c375 Move more options to OptionEntryBase 2022-02-05 20:51:54 +01:00
staphen 6418d7a2f0 Detect window focus state to mute automatically when starting audio 2022-01-18 13:13:31 +01:00
staphen f085aa1aad Use mute()/unmute() instead of setVolume() 2022-01-18 13:13:31 +01:00
obligaron 8a4d4b6375 Add OptionEntries for Audio 2021-12-14 04:10:16 +01:00
Gleb MazovetskiyandAnders Jenbo 7e1fea6f76 clang-format all files in {Source,test}/
Also includes a few manual tweaks to comments and newlines for better results.

Co-authored-by: Anders Jenbo <[email protected]>
2021-11-24 23:44:12 +01:00
Gleb Mazovetskiy fa90679416 game_assets.* -> assets.* 2021-11-17 11:49:57 +01:00
Gleb Mazovetskiy b4aa0a2093 Open music assets with threadsafe=true
Missed during #3354
2021-11-07 13:16:20 +00:00
Gleb Mazovetskiy 3d308983a8 Migrate to libmpq
libmpq is a much simpler alternative to StormLib for reading MPQ archives.

We use our own fork of libmpq: https://github.com/diasurgical/libmpq

Impact:

* DevilutionX is now a lot more portable. Unlike StormLib, libmpq only
  needs platform-specific code for Windows.
* Locks around file access **removed** (instead we duplicate the file descriptor for streamed audio only).
* RAM usage is **300 KiB** lower than StormLib.
* Stripped release linux_x86_64 binary is **32 KiB** smaller.
* Amiga build now hangs instead of crashing.
2021-11-06 23:51:42 +00:00
qndel 47561716b3 fix sound crashes (#3403) 2021-11-06 13:03:00 +01:00
Anders Jenbo 8df5912dc6 Always use SDL wrapper for file access 2021-10-20 21:52:59 +02:00
Anders Jenbo 7cb73a6717 Minimize impact of NOSOUND 2021-08-30 10:57:59 +02:00
Vladimir Olteanu 8fcd21e0b5 music.cpp: make musicBuffer a unique_ptr 2021-08-17 17:47:07 +02:00
Anders Jenbo de0b3a38b8 Apply code style 2021-07-20 02:51:39 +02:00
Anders Jenbo e5fc7fd17c Move remaning symbols in to anonymous namespaces 2021-07-20 02:51:39 +02:00
Anders Jenbo 0889780923 Remove more usage of miniwin types 2021-07-18 02:11:58 +02:00
JoBergeron be3f1ba928 Pause game and mute music when game window loses focus (#2337) 2021-07-10 04:21:27 +02:00
Anders Jenbo 9ebdb6db69 General clean up 2021-07-08 03:30:25 -07:00
Anders Jenbo a7c7fa0030 Fully apply clang-tidy/format to all files 2021-07-03 16:41:43 -07:00
Anders Jenbo 129342d07a Clang-tidy: GlobalConstantCase 2021-07-02 22:56:56 +02:00
Anders Jenbo f167bd4dfb Clang-tidy: llvm-include-order 2021-06-27 01:45:49 +02:00
Gleb Mazovetskiy f9f301b054 🚚 engine.h: Extract Point, Direction, clamp
`engine.h` is getting quite bloated. Moves this code to their own files.
2021-06-21 01:36:20 -07:00
Gleb Mazovetskiy e72def02e6 🔨 Add STREAM_ALL_AUDIO build setting
For extremely memory-constrained devices. Gets into town on RG99 (18 FPS -> 14 FPS).
2021-05-23 05:03:14 +02:00
Gleb Mazovetskiy c79ec673f4 ♻️ Implement std's Lockable for SDL mutex wrapper
Rather than rolling our own lock guard, implement the requirements for
using `std::lock_guard` et al and use that.
2021-05-17 12:00:09 +02:00
Anders Jenbo a095bc0bf7 ♻️Migrate more code away from miniwin 2021-05-13 02:30:18 +02:00
staphen 3e5e5b2696 Synchronize SFileCloseFile() access 2021-05-08 04:01:07 +02:00
Anders Jenbo 4a7ba94702 🎨 Run clang-format 2021-05-07 23:26:39 +02:00
Gleb Mazovetskiy 0f95c3cbac 🧹 Fix a TSAN warning in DuplicateSound
This is likely a false positive from TSAN but good to fix nevertheless

Fixes #1849
2021-05-05 03:38:14 +02:00
Gleb Mazovetskiy 987ab2533b 🐞 Synchronize SFileReadFile access
StormLib read function is not thread-safe: https://github.com/ladislav-zezula/StormLib/issues/175
2021-05-03 02:35:22 +02:00
thebigMuh 24f32a1d53 Fix sound volume/panning attenuation (#1789)
* Fixing volume adjustment and scaling
2021-05-03 02:11:22 +02:00
Gleb Mazovetskiy 9980b77d23 🐞 ClearDuplicateSounds: Also lock the mutex 2021-05-02 15:04:05 +01:00
Gleb Mazovetskiy 559229dea1 🐞 Duplicate sounds: Fix data race
This fixes a data race by deleting the sound exactly when it finishes
playing.

Previously, a data race could happen in
`CleanupFinishedDuplicateSounds`, where the sound would be destroyed
while Aulib was reading from its buffer.
2021-05-02 14:15:35 +01:00
Gleb Mazovetskiy 0bfc147b78 🧹 Remove DiabloAllocPtr and friends (#1824) 2021-05-02 07:06:18 +02:00
Gleb Mazovetskiy 5820948761 ♻️ Make SFileRw own the Storm file handle
All of our use-cases for `SDL_RWops` Storm file require closing the file
when closing the `SDL_RWops` -- doing this automatically simplifies the
code.
2021-05-02 02:34:16 +02:00
Gleb Mazovetskiy 7bdfb0655c 🐞 Support multiple playback of the same sound 2021-05-02 00:36:36 +02:00
Vladimir Olteanu 7aad72f96d Use automatic memory management for sound stuff (#1771) 2021-04-30 09:02:07 +02:00
Gleb Mazovetskiy 0dd9aeea69 ♻️ Cleanup DISABLE_STREAMING_MUSIC handling
Extracts `LoadMusic` and `CleanupMusic` functions.
2021-04-28 12:51:24 +02:00
Gleb Mazovetskiy 4b7409a8bf 🎶 Loop the music
Follow-up to #1651
2021-04-27 20:06:18 +02:00
Gleb Mazovetskiy acee2ef14c 🎉 Switch from SDL_mixer to SDL_audiolib
SDL_mixer can only stream a single music track
SDL_audiolib has unlimited streams.

With this change, we finally have streaming sounds (respecting
sfx_STREAM).

Audio options can now also be set via diablo.ini, which should help us
better diagnose the static noise issues.
2021-04-27 00:54:50 +01:00
Jmgr 1b7e0d2cb3 Migrate existing log entries 2021-04-25 02:39:42 +02:00
Anders Jenbo a32ac83090 🎨 cleanup trivial trype comparisons 2021-04-23 02:48:25 +02:00
Anders Jenbo bb4e1960e7 🎨 modernize-use-nullptr 2021-04-19 16:02:05 +02:00
Anders Jenbo 8c821e98d3 🚚 Restructure files 2021-04-16 03:57:22 +02:00
Anders Jenbo 997c1dba55 🚚 Split up all.h in to proper header relations 2021-04-16 01:04:54 +02:00
Anders Jenbo 6e1a106a38 🚚 Move header we implement into the project 2021-04-16 01:04:54 +02:00