summaryrefslogtreecommitdiffstats
path: root/src/audio/oal
diff options
context:
space:
mode:
Diffstat (limited to 'src/audio/oal')
-rw-r--r--src/audio/oal/aldlist.cpp10
-rw-r--r--src/audio/oal/channel.cpp6
-rw-r--r--src/audio/oal/stream.cpp27
3 files changed, 35 insertions, 8 deletions
diff --git a/src/audio/oal/aldlist.cpp b/src/audio/oal/aldlist.cpp
index 2c2f13a8..768ace30 100644
--- a/src/audio/oal/aldlist.cpp
+++ b/src/audio/oal/aldlist.cpp
@@ -23,6 +23,12 @@
*/
#include "aldlist.h"
+
+#ifndef _WIN32
+#define _stricmp strcasecmp
+#define _strnicmp strncasecmp
+#endif
+
#ifdef AUDIO_OAL
/*
* Init call
@@ -67,7 +73,7 @@ ALDeviceList::ALDeviceList()
if ((bNewName) && (actualDeviceName != NULL) && (strlen(actualDeviceName) > 0)) {
memset(&ALDeviceInfo, 0, sizeof(ALDEVICEINFO));
ALDeviceInfo.bSelected = true;
- ALDeviceInfo.strDeviceName = std::string(actualDeviceName, strlen(actualDeviceName));
+ ALDeviceInfo.strDeviceName.assign(actualDeviceName, strlen(actualDeviceName));
alcGetIntegerv(device, ALC_MAJOR_VERSION, sizeof(int), &ALDeviceInfo.iMajorVersion);
alcGetIntegerv(device, ALC_MINOR_VERSION, sizeof(int), &ALDeviceInfo.iMinorVersion);
@@ -326,4 +332,4 @@ unsigned int ALDeviceList::GetMaxNumSources()
return iSourceCount;
}
-#endif \ No newline at end of file
+#endif
diff --git a/src/audio/oal/channel.cpp b/src/audio/oal/channel.cpp
index 7742a06a..6fe1d856 100644
--- a/src/audio/oal/channel.cpp
+++ b/src/audio/oal/channel.cpp
@@ -4,6 +4,10 @@
#include "common.h"
#include "sampman.h"
+#ifndef _WIN32
+#include <float.h>
+#endif
+
extern bool IsFXSupported();
CChannel::CChannel()
@@ -207,4 +211,4 @@ void CChannel::UpdateReverb(ALuint slot)
alSource3i(alSource, AL_AUXILIARY_SEND_FILTER, slot, 0, alFilter);
}
-#endif \ No newline at end of file
+#endif
diff --git a/src/audio/oal/stream.cpp b/src/audio/oal/stream.cpp
index 9bca0546..5a9c7d7d 100644
--- a/src/audio/oal/stream.cpp
+++ b/src/audio/oal/stream.cpp
@@ -4,13 +4,15 @@
#include "common.h"
#include "sampman.h"
-typedef long ssize_t;
-
#include <sndfile.h>
#include <mpg123.h>
-
+#ifdef _WIN32
+typedef long ssize_t;
#pragma comment( lib, "libsndfile-1.lib" )
#pragma comment( lib, "libmpg123.lib" )
+#else
+#include "crossplatform.h"
+#endif
class CSndFile : public IDecoder
{
@@ -192,7 +194,22 @@ CStream::CStream(char *filename, ALuint &source, ALuint (&buffers)[NUM_STREAMBUF
m_nPosBeforeReset(0)
{
- strcpy(m_aFilename, filename);
+// Be case-insensitive on linux (from https://github.com/OneSadCookie/fcaseopen/)
+#if !defined(_WIN32)
+ FILE *test = fopen(filename, "r");
+ if (!test) {
+ char *r = (char*)alloca(strlen(filename) + 2);
+ if (casepath(filename, r))
+ {
+ strcpy(m_aFilename, r);
+ }
+ } else {
+ fclose(test);
+#else
+ {
+#endif
+ strcpy(m_aFilename, filename);
+ }
DEV("Stream %s\n", m_aFilename);
@@ -517,4 +534,4 @@ void CStream::ProviderTerm()
ClearBuffers();
}
-#endif \ No newline at end of file
+#endif