-
Notifications
You must be signed in to change notification settings - Fork 41
[APP BUG] [FRONTEND-SDL] [PIPEWIRE] Only input devices (like mic) are listed and selectable; and wrong app name ('SDL app' instead of ProjectM-SDL) #100
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
if instead of pipewire trying to run it with pulseaudio backend instead, it detects the audio devices, but UI visually hangs, right after that line (although log messages in command line still respond to keypresses inside the window):
with jack it also hangs the same as with pulse with alsa works, but shows only inputs without monitors |
(i've renamed it from 'regression' since it's not actually a regression, although the hang with pulseaudio which haven't been happening before - i'm not sure whatever is a regression on a side of pipewire-pulse or projectm - as i don't have possibility to downgrade to pure pulseaudio setup for testing) |
I don't think we can do much about this issue, as the whole audio device handling is done within libSDL2 and the audio backend implementation used (see the Could you provide a full back trace on all threads at the point the UI hangs? That could give a clue where exactly the lockup happens. Run projectMSDL with gdb, then ctrl-c when it hangs and type |
i'm not closely familiar with libsdl, but that's one of first results i got in google: https://www.reddit.com/r/linux_gaming/comments/lv25d9/sdl_audio_add_pipewire_playbackcapture_sink/ |
and regarding pulseaudio/jack output hanging - because both on my system are using pipewire-pulse and pipewire-jack, not real pulse/jack that could be smth wrong with that |
i quickly checked aforementioned commit of sdl and i see its separating devices by Capture and Playback types - are you also using that parameter for filtering available devices? because that could be the problem that monitoring 'device' is not a separate device, it's the same as output device, so it's not marked as capture device |
Sure, those devices work differently, as you put audio data into one type and get data from the other. There is a boolean flag named frontend-sdl-cpp/src/AudioCaptureImpl_SDL.cpp Lines 127 to 128 in 080e48b
On my request, icculus thankfully added a hint to tell SDL to also list "Monitor" devices as well. Support for this hint was initially added in libSDL 2.0.16, versions before only ever list external input devices. All that said, on the application side there's not too much we can change or fix, as the SDL audio API is super simple. How audio devices are listed and handled is completely wrapped inside the respective SDL audio driver, with varying quality - mostly depending on which features the actual audio backend library provides. That's why I asked for a stack dump, as this makes it easy to see where something hangs. Another thing to check is whether you're using the "real" libSDL2 library or the libSDL2 shim for libSDL3, which is known to (currently) have some issues. PR #101 addresses an issue with audio channel count, but this didn't really crash/hang the application, only prevent it from recording audio when using the libSDL 2->3 shim. |
Uh oh!
There was an error while loading. Please reload this page.
Please confirm the following points:
Affected Application
projectM Standalone SDL2 Frontend (includes the Steam app)
Affected Version
git master
Operating System
Linux (Desktop)
Additional Application Details
and also wrong app name ('SDL app' instead of ProjectM-SDL)
Type of Defect
Misc
Log Output
Describe the Issue
Previous versions were listing all devices, including monitors
The current workaround:
The text was updated successfully, but these errors were encountered: