From 8a4fa58cd42b7cca4a86fe2d9913b839b554bf10 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?eray=20or=C3=A7unus?= Date: Mon, 11 May 2020 05:55:57 +0300 Subject: Linux build support --- src/audio/oal/aldlist.cpp | 10 ++++++++-- src/audio/oal/channel.cpp | 6 +++++- src/audio/oal/stream.cpp | 27 ++++++++++++++++++++++----- 3 files changed, 35 insertions(+), 8 deletions(-) (limited to 'src/audio/oal') 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 +#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 #include - +#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 -- cgit v1.2.3