From dec7875a6e23212021e4d9080330a42832dfe02a Mon Sep 17 00:00:00 2001
From: Edward Rudd <urkle@outoforder.cc>
Date: Tue, 15 Jun 2021 01:40:19 +0000
Subject: [PATCH] update SDL soruce to 2.0.14
---
source/src/audio/pulseaudio/SDL_pulseaudio.c | 38 ++++++++++++++++++++++++++------------
1 files changed, 26 insertions(+), 12 deletions(-)
diff --git a/source/src/audio/pulseaudio/SDL_pulseaudio.c b/source/src/audio/pulseaudio/SDL_pulseaudio.c
index a279da5..d74c66d 100644
--- a/source/src/audio/pulseaudio/SDL_pulseaudio.c
+++ b/source/src/audio/pulseaudio/SDL_pulseaudio.c
@@ -26,7 +26,7 @@
Stéphan Kochen: stephan .a.t. kochen.nl
*/
#include "../../SDL_internal.h"
-#include "SDL_assert.h"
+#include "SDL_hints.h"
#if SDL_AUDIO_DRIVER_PULSEAUDIO
@@ -237,16 +237,20 @@
static const char *
getAppName(void)
{
- const char *verstr = PULSEAUDIO_pa_get_library_version();
- if (verstr != NULL) {
- int maj, min, patch;
- if (SDL_sscanf(verstr, "%d.%d.%d", &maj, &min, &patch) == 3) {
- if (squashVersion(maj, min, patch) >= squashVersion(0, 9, 15)) {
- return NULL; /* 0.9.15+ handles NULL correctly. */
+ const char *retval = SDL_GetHint(SDL_HINT_AUDIO_DEVICE_APP_NAME);
+ if (!retval || !*retval) {
+ const char *verstr = PULSEAUDIO_pa_get_library_version();
+ retval = "SDL Application"; /* the "oh well" default. */
+ if (verstr != NULL) {
+ int maj, min, patch;
+ if (SDL_sscanf(verstr, "%d.%d.%d", &maj, &min, &patch) == 3) {
+ if (squashVersion(maj, min, patch) >= squashVersion(0, 9, 15)) {
+ retval = NULL; /* 0.9.15+ handles NULL correctly. */
+ }
}
}
}
- return "SDL Application"; /* oh well. */
+ return retval;
}
static void
@@ -290,31 +294,38 @@
return SDL_SetError("pa_mainloop_new() failed");
}
- *_mainloop = mainloop;
-
mainloop_api = PULSEAUDIO_pa_mainloop_get_api(mainloop);
SDL_assert(mainloop_api); /* this never fails, right? */
context = PULSEAUDIO_pa_context_new(mainloop_api, getAppName());
if (!context) {
+ PULSEAUDIO_pa_mainloop_free(mainloop);
return SDL_SetError("pa_context_new() failed");
}
- *_context = context;
/* Connect to the PulseAudio server */
if (PULSEAUDIO_pa_context_connect(context, NULL, 0, NULL) < 0) {
+ PULSEAUDIO_pa_context_unref(context);
+ PULSEAUDIO_pa_mainloop_free(mainloop);
return SDL_SetError("Could not setup connection to PulseAudio");
}
do {
if (PULSEAUDIO_pa_mainloop_iterate(mainloop, 1, NULL) < 0) {
+ PULSEAUDIO_pa_context_unref(context);
+ PULSEAUDIO_pa_mainloop_free(mainloop);
return SDL_SetError("pa_mainloop_iterate() failed");
}
state = PULSEAUDIO_pa_context_get_state(context);
if (!PA_CONTEXT_IS_GOOD(state)) {
+ PULSEAUDIO_pa_context_unref(context);
+ PULSEAUDIO_pa_mainloop_free(mainloop);
return SDL_SetError("Could not connect to PulseAudio");
}
} while (state != PA_CONTEXT_READY);
+
+ *_context = context;
+ *_mainloop = mainloop;
return 0; /* connected and ready! */
}
@@ -513,6 +524,7 @@
pa_buffer_attr paattr;
pa_channel_map pacmap;
pa_stream_flags_t flags = 0;
+ const char *name = NULL;
int state = 0;
int rc = 0;
@@ -615,9 +627,11 @@
PULSEAUDIO_pa_channel_map_init_auto(&pacmap, this->spec.channels,
PA_CHANNEL_MAP_WAVEEX);
+ name = SDL_GetHint(SDL_HINT_AUDIO_DEVICE_STREAM_NAME);
+
h->stream = PULSEAUDIO_pa_stream_new(
h->context,
- "Simple DirectMedia Layer", /* stream description */
+ (name && *name) ? name : "Audio Stream", /* stream description */
&paspec, /* sample format spec */
&pacmap /* channel map */
);
--
Gitblit v1.9.3