Make openal works on linux
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@2805 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
parent
6b2b1a34ee
commit
58a78cb2b5
|
@ -236,6 +236,9 @@ env['HAVE_BLUEZ'] = conf.CheckPKG('bluez')
|
||||||
# needed for sound
|
# needed for sound
|
||||||
env['HAVE_AO'] = conf.CheckPKG('ao')
|
env['HAVE_AO'] = conf.CheckPKG('ao')
|
||||||
|
|
||||||
|
# Sound lib
|
||||||
|
env['HAVE_OPENAL'] = conf.CheckPKG('openal')
|
||||||
|
|
||||||
# needed for mic
|
# needed for mic
|
||||||
env['HAVE_PORTAUDIO'] = conf.CheckPortaudio(1890)
|
env['HAVE_PORTAUDIO'] = conf.CheckPortaudio(1890)
|
||||||
|
|
||||||
|
@ -304,6 +307,7 @@ conf.Define('HAVE_SDL', env['HAVE_SDL'])
|
||||||
conf.Define('USE_SDL', env['USE_SDL'])
|
conf.Define('USE_SDL', env['USE_SDL'])
|
||||||
conf.Define('HAVE_BLUEZ', env['HAVE_BLUEZ'])
|
conf.Define('HAVE_BLUEZ', env['HAVE_BLUEZ'])
|
||||||
conf.Define('HAVE_AO', env['HAVE_AO'])
|
conf.Define('HAVE_AO', env['HAVE_AO'])
|
||||||
|
conf.Define('HAVE_OPENAL', env['HAVE_OPENAL'])
|
||||||
conf.Define('HAVE_WX', env['HAVE_WX'])
|
conf.Define('HAVE_WX', env['HAVE_WX'])
|
||||||
conf.Define('USE_WX', env['USE_WX'])
|
conf.Define('USE_WX', env['USE_WX'])
|
||||||
conf.Define('HAVE_X11', env['HAVE_X11'])
|
conf.Define('HAVE_X11', env['HAVE_X11'])
|
||||||
|
|
|
@ -21,17 +21,18 @@
|
||||||
#include "SoundStream.h"
|
#include "SoundStream.h"
|
||||||
#include "Thread.h"
|
#include "Thread.h"
|
||||||
|
|
||||||
//#include <list>
|
#ifdef HAVE_OPENAL && HAVE_OPENAL
|
||||||
//using namespace std;
|
|
||||||
|
|
||||||
#include "../../../../Externals/OpenAL/include/al.h"
|
#include "../../../../Externals/OpenAL/include/al.h"
|
||||||
#include "../../../../Externals/OpenAL/include/alc.h"
|
#include "../../../../Externals/OpenAL/include/alc.h"
|
||||||
|
|
||||||
// public use
|
// public use
|
||||||
#define SFX_MAX_SOURCE 1
|
#define SFX_MAX_SOURCE 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
class OpenALStream: public SoundStream
|
class OpenALStream: public SoundStream
|
||||||
{
|
{
|
||||||
|
#ifdef HAVE_OPENAL && HAVE_OPENAL
|
||||||
public:
|
public:
|
||||||
OpenALStream(CMixer *mixer, void *hWnd = NULL): SoundStream(mixer) {};
|
OpenALStream(CMixer *mixer, void *hWnd = NULL): SoundStream(mixer) {};
|
||||||
virtual ~OpenALStream() {};
|
virtual ~OpenALStream() {};
|
||||||
|
@ -49,6 +50,12 @@ private:
|
||||||
Common::Thread *thread;
|
Common::Thread *thread;
|
||||||
Common::CriticalSection soundCriticalSection;
|
Common::CriticalSection soundCriticalSection;
|
||||||
Common::Event soundSyncEvent;
|
Common::Event soundSyncEvent;
|
||||||
|
#else
|
||||||
|
OpenALStream(CMixer *mixer, void *hWnd = NULL): SoundStream(mixer) {}
|
||||||
|
#endif // HAVE_OPENAL
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
|
#endif // OPENALSTREAM
|
||||||
|
|
|
@ -4,6 +4,7 @@ Import('env')
|
||||||
|
|
||||||
files = [
|
files = [
|
||||||
'AOSoundStream.cpp',
|
'AOSoundStream.cpp',
|
||||||
|
'aldlist.cpp',
|
||||||
'AudioCommonConfig.cpp',
|
'AudioCommonConfig.cpp',
|
||||||
'OpenALStream.cpp',
|
'OpenALStream.cpp',
|
||||||
'WaveFile.cpp',
|
'WaveFile.cpp',
|
||||||
|
|
|
@ -22,6 +22,7 @@
|
||||||
* POSSIBILITY OF SUCH DAMAGE.
|
* POSSIBILITY OF SUCH DAMAGE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include "Common.h"
|
||||||
#include "aldlist.h"
|
#include "aldlist.h"
|
||||||
#include "../../../../Externals/OpenAL/include/al.h"
|
#include "../../../../Externals/OpenAL/include/al.h"
|
||||||
#include "../../../../Externals/OpenAL/include/alc.h"
|
#include "../../../../Externals/OpenAL/include/alc.h"
|
||||||
|
@ -51,7 +52,7 @@ ALDeviceList::ALDeviceList()
|
||||||
defaultDeviceName = (char *)alcGetString(NULL, ALC_DEFAULT_DEVICE_SPECIFIER);
|
defaultDeviceName = (char *)alcGetString(NULL, ALC_DEFAULT_DEVICE_SPECIFIER);
|
||||||
index = 0;
|
index = 0;
|
||||||
// go through device list (each device terminated with a single NULL, list terminated with double NULL)
|
// go through device list (each device terminated with a single NULL, list terminated with double NULL)
|
||||||
while (*devices != NULL) {
|
while (devices != NULL) {
|
||||||
if (strcmp(defaultDeviceName, devices) == 0) {
|
if (strcmp(defaultDeviceName, devices) == 0) {
|
||||||
defaultDeviceIndex = index;
|
defaultDeviceIndex = index;
|
||||||
}
|
}
|
||||||
|
@ -191,7 +192,7 @@ bool ALDeviceList::IsExtensionSupported(s32 index, char *szExtName)
|
||||||
|
|
||||||
if (index < GetNumDevices()) {
|
if (index < GetNumDevices()) {
|
||||||
for (u32 i = 0; i < vDeviceInfo[index].pvstrExtensions->size(); i++) {
|
for (u32 i = 0; i < vDeviceInfo[index].pvstrExtensions->size(); i++) {
|
||||||
if (!_stricmp(vDeviceInfo[index].pvstrExtensions->at(i).c_str(), szExtName)) {
|
if (!strcasecmp(vDeviceInfo[index].pvstrExtensions->at(i).c_str(), szExtName)) {
|
||||||
bReturn = true;
|
bReturn = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -214,7 +215,7 @@ s32 ALDeviceList::GetDefaultDevice()
|
||||||
*/
|
*/
|
||||||
void ALDeviceList::FilterDevicesMinVer(s32 major, s32 minor)
|
void ALDeviceList::FilterDevicesMinVer(s32 major, s32 minor)
|
||||||
{
|
{
|
||||||
s32 dMajor, dMinor;
|
s32 dMajor = 0, dMinor = 0;
|
||||||
for (u32 i = 0; i < vDeviceInfo.size(); i++) {
|
for (u32 i = 0; i < vDeviceInfo.size(); i++) {
|
||||||
GetDeviceVersion(i, &dMajor, &dMinor);
|
GetDeviceVersion(i, &dMajor, &dMinor);
|
||||||
if ((dMajor < major) || ((dMajor == major) && (dMinor < minor))) {
|
if ((dMajor < major) || ((dMajor == major) && (dMinor < minor))) {
|
||||||
|
@ -228,7 +229,7 @@ void ALDeviceList::FilterDevicesMinVer(s32 major, s32 minor)
|
||||||
*/
|
*/
|
||||||
void ALDeviceList::FilterDevicesMaxVer(s32 major, s32 minor)
|
void ALDeviceList::FilterDevicesMaxVer(s32 major, s32 minor)
|
||||||
{
|
{
|
||||||
s32 dMajor, dMinor;
|
s32 dMajor = 0, dMinor = 0;
|
||||||
for (u32 i = 0; i < vDeviceInfo.size(); i++) {
|
for (u32 i = 0; i < vDeviceInfo.size(); i++) {
|
||||||
GetDeviceVersion(i, &dMajor, &dMinor);
|
GetDeviceVersion(i, &dMajor, &dMinor);
|
||||||
if ((dMajor > major) || ((dMajor == major) && (dMinor > minor))) {
|
if ((dMajor > major) || ((dMajor == major) && (dMinor > minor))) {
|
||||||
|
@ -247,7 +248,7 @@ void ALDeviceList::FilterDevicesExtension(char *szExtName)
|
||||||
for (u32 i = 0; i < vDeviceInfo.size(); i++) {
|
for (u32 i = 0; i < vDeviceInfo.size(); i++) {
|
||||||
bFound = false;
|
bFound = false;
|
||||||
for (u32 j = 0; j < vDeviceInfo[i].pvstrExtensions->size(); j++) {
|
for (u32 j = 0; j < vDeviceInfo[i].pvstrExtensions->size(); j++) {
|
||||||
if (!_stricmp(vDeviceInfo[i].pvstrExtensions->at(j).c_str(), szExtName)) {
|
if (!strcasecmp(vDeviceInfo[i].pvstrExtensions->at(j).c_str(), szExtName)) {
|
||||||
bFound = true;
|
bFound = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue