aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Alc/backends/qsa.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/Alc/backends/qsa.c b/Alc/backends/qsa.c
index c659ce2f..933af5b4 100644
--- a/Alc/backends/qsa.c
+++ b/Alc/backends/qsa.c
@@ -175,6 +175,14 @@ static DevMap* deviceList(int type, ALuint* count)
return dev_list;
}
+/* force_align_arg_pointer is required for proper function arguments */
+/* aligning, when SSE mixer is used. QNX has a bug in pthread_create */
+/* function regarding thread stack alignment, it uses 64 bit align */
+/* instead of 128 bit, like main thread. */
+#if defined(__GNUC__) && (_NTO_VERSION <= 650) && \
+ defined(__i386__) && defined(HAVE_SSE)
+__attribute__((force_align_arg_pointer))
+#endif /* __GNUC__ && QNX version < 6.5.0 on x86 platform with SSE support */
static ALuint qsa_proc_playback(ALvoid* ptr)
{
ALCdevice* device=(ALCdevice*)ptr;