Skip to content
Snippets Groups Projects
Commit 982416bb authored by Alexandre Savard's avatar Alexandre Savard
Browse files

[#4851] Fix segfault when closing pulseaudio layer too rapidly

parent da746b9d
No related branches found
No related tags found
No related merge requests found
......@@ -601,9 +601,16 @@ void PulseLayer::closeCaptureStream (void)
{
if (record) {
std::string deviceName (pa_stream_get_device_name (record->pulseStream()));
if (record->pulseStream()) {
const char *name = pa_stream_get_device_name (record->pulseStream());
if (name && strlen (name)) {
std::string deviceName (name);
_debug ("Audio: record device to be stored in config: %s", deviceName.c_str());
_manager->audioPreference.setDeviceRecord (deviceName);
}
}
delete record;
record=NULL;
}
......@@ -613,17 +620,32 @@ void PulseLayer::closeCaptureStream (void)
void PulseLayer::closePlaybackStream (void)
{
if (playback) {
if (playback->pulseStream()) {
const char *name = pa_stream_get_device_name (playback->pulseStream());
if (name && strlen (name)) {
std::string deviceName (pa_stream_get_device_name (playback->pulseStream()));
_debug ("Audio: playback device to be stored in config: %s", deviceName.c_str());
_manager->audioPreference.setDevicePlayback (deviceName);
}
}
delete playback;
playback=NULL;
}
if (ringtone) {
if (ringtone->pulseStream()) {
const char *name = pa_stream_get_device_name (ringtone->pulseStream());
if (name && strlen (name)) {
std::string deviceName (pa_stream_get_device_name (ringtone->pulseStream()));
_debug ("Audio: ringtone device to be stored in config: %s", deviceName.c_str());
_manager->audioPreference.setDeviceRingtone (deviceName);
}
}
delete ringtone;
ringtone = NULL;
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment