Improved XTra.KrazzY's Mute-On-Pause a bit, so it won't cost any CPU time when it is not used.
Revert old Zelda-TP hack, though it really shouldn't be there... git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@4684 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
parent
7be17e6531
commit
fad1fa4e3d
|
@ -19,9 +19,12 @@
|
||||||
|
|
||||||
#include "AOSoundStream.h"
|
#include "AOSoundStream.h"
|
||||||
#include "Mixer.h"
|
#include "Mixer.h"
|
||||||
|
#include "../../../PluginSpecs/pluginspecs_dsp.h"
|
||||||
|
|
||||||
#if defined(HAVE_AO) && HAVE_AO
|
#if defined(HAVE_AO) && HAVE_AO
|
||||||
|
|
||||||
|
extern DSPInitialize g_dspInitialize;
|
||||||
|
|
||||||
void AOSound::SoundLoop()
|
void AOSound::SoundLoop()
|
||||||
{
|
{
|
||||||
uint_32 numBytesToRender = 256;
|
uint_32 numBytesToRender = 256;
|
||||||
|
@ -85,8 +88,14 @@ void AOSound::Update()
|
||||||
|
|
||||||
void AOSound::Clear()
|
void AOSound::Clear()
|
||||||
{
|
{
|
||||||
memset(realtimeBuffer, 0, sizeof(realtimeBuffer));
|
if(!*g_dspInitialize.pEmulatorState)
|
||||||
|
{
|
||||||
|
g_muted = false;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
g_muted = true;
|
||||||
|
}
|
||||||
Update();
|
Update();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -107,11 +116,4 @@ AOSound::~AOSound() {
|
||||||
// ao_shutdown();
|
// ao_shutdown();
|
||||||
}
|
}
|
||||||
|
|
||||||
void AOSound::Mute(bool bMute) {
|
|
||||||
if((bMute && g_muted) || (!bMute && !g_muted))
|
|
||||||
return;
|
|
||||||
|
|
||||||
g_muted = bMute;
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -64,8 +64,6 @@ public:
|
||||||
|
|
||||||
virtual void Update();
|
virtual void Update();
|
||||||
|
|
||||||
virtual void Mute(bool bMute);
|
|
||||||
|
|
||||||
#else
|
#else
|
||||||
public:
|
public:
|
||||||
AOSound(CMixer *mixer) : SoundStream(mixer) {}
|
AOSound(CMixer *mixer) : SoundStream(mixer) {}
|
||||||
|
|
|
@ -17,12 +17,14 @@
|
||||||
|
|
||||||
#include "Common.h"
|
#include "Common.h"
|
||||||
#include "Thread.h"
|
#include "Thread.h"
|
||||||
|
#include "../../../PluginSpecs/pluginspecs_dsp.h"
|
||||||
#include "AlsaSoundStream.h"
|
#include "AlsaSoundStream.h"
|
||||||
|
|
||||||
#define BUFFER_SIZE 4096
|
#define BUFFER_SIZE 4096
|
||||||
#define BUFFER_SIZE_BYTES (BUFFER_SIZE*2*2)
|
#define BUFFER_SIZE_BYTES (BUFFER_SIZE*2*2)
|
||||||
|
|
||||||
|
extern DSPInitialize g_dspInitialize;
|
||||||
|
|
||||||
AlsaSound::AlsaSound(CMixer *mixer) : SoundStream(mixer), thread_data(0), handle(NULL)
|
AlsaSound::AlsaSound(CMixer *mixer) : SoundStream(mixer), thread_data(0), handle(NULL)
|
||||||
{
|
{
|
||||||
mix_buffer = new u8[BUFFER_SIZE_BYTES];
|
mix_buffer = new u8[BUFFER_SIZE_BYTES];
|
||||||
|
@ -53,6 +55,18 @@ void AlsaSound::Stop()
|
||||||
thread = NULL;
|
thread = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void AlsaSound::Clear()
|
||||||
|
{
|
||||||
|
if(!*g_dspInitialize.pEmulatorState)
|
||||||
|
{
|
||||||
|
g_muted = false;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
g_muted = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void AlsaSound::Update()
|
void AlsaSound::Update()
|
||||||
{
|
{
|
||||||
// don't need to do anything here.
|
// don't need to do anything here.
|
||||||
|
@ -181,13 +195,6 @@ bool AlsaSound::AlsaInit()
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void AlsaSound::Mute(bool bMute) {
|
|
||||||
if((bMute && g_muted) || (!bMute && !g_muted))
|
|
||||||
return;
|
|
||||||
|
|
||||||
g_muted = bMute;
|
|
||||||
}
|
|
||||||
|
|
||||||
void AlsaSound::AlsaShutdown()
|
void AlsaSound::AlsaShutdown()
|
||||||
{
|
{
|
||||||
if (handle != NULL)
|
if (handle != NULL)
|
||||||
|
|
|
@ -37,6 +37,7 @@ public:
|
||||||
virtual bool Start();
|
virtual bool Start();
|
||||||
virtual void SoundLoop();
|
virtual void SoundLoop();
|
||||||
virtual void Stop();
|
virtual void Stop();
|
||||||
|
virtual void Clear();
|
||||||
|
|
||||||
static bool isValid() {
|
static bool isValid() {
|
||||||
return true;
|
return true;
|
||||||
|
@ -47,8 +48,6 @@ public:
|
||||||
|
|
||||||
virtual void Update();
|
virtual void Update();
|
||||||
|
|
||||||
virtual void Mute(bool bMute);
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
bool AlsaInit();
|
bool AlsaInit();
|
||||||
void AlsaShutdown();
|
void AlsaShutdown();
|
||||||
|
|
|
@ -19,7 +19,6 @@
|
||||||
#include <cmath>
|
#include <cmath>
|
||||||
#include <dxerr.h>
|
#include <dxerr.h>
|
||||||
#include "DSoundStream.h"
|
#include "DSoundStream.h"
|
||||||
|
|
||||||
#include "../../../PluginSpecs/pluginspecs_dsp.h"
|
#include "../../../PluginSpecs/pluginspecs_dsp.h"
|
||||||
|
|
||||||
extern DSPInitialize g_dspInitialize;
|
extern DSPInitialize g_dspInitialize;
|
||||||
|
@ -172,9 +171,14 @@ void DSound::Update()
|
||||||
|
|
||||||
void DSound::Clear()
|
void DSound::Clear()
|
||||||
{
|
{
|
||||||
memset(realtimeBuffer, 0, sizeof(realtimeBuffer));
|
if(!*g_dspInitialize.pEmulatorState)
|
||||||
|
{
|
||||||
Update();
|
dsBuffer->Play(0, 0, DSBPLAY_LOOPING);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
dsBuffer->Stop();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void DSound::Stop()
|
void DSound::Stop()
|
||||||
|
@ -193,15 +197,3 @@ void DSound::Stop()
|
||||||
thread = NULL;
|
thread = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
void DSound::Mute(bool bMute) {
|
|
||||||
if((bMute && g_muted) || (!bMute && !g_muted))
|
|
||||||
return;
|
|
||||||
|
|
||||||
if(bMute)
|
|
||||||
dsBuffer->Stop();
|
|
||||||
else
|
|
||||||
dsBuffer->Play(0, 0, DSBPLAY_LOOPING);
|
|
||||||
|
|
||||||
g_muted = bMute;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
|
@ -79,7 +79,6 @@ public:
|
||||||
virtual void SetVolume(int volume);
|
virtual void SetVolume(int volume);
|
||||||
virtual void Stop();
|
virtual void Stop();
|
||||||
virtual void Clear();
|
virtual void Clear();
|
||||||
virtual void Mute(bool bMute);
|
|
||||||
static bool isValid() { return true; }
|
static bool isValid() { return true; }
|
||||||
virtual bool usesMixer() const { return true; }
|
virtual bool usesMixer() const { return true; }
|
||||||
virtual void Update();
|
virtual void Update();
|
||||||
|
|
|
@ -17,12 +17,15 @@
|
||||||
|
|
||||||
#include "aldlist.h"
|
#include "aldlist.h"
|
||||||
#include "OpenALStream.h"
|
#include "OpenALStream.h"
|
||||||
|
#include "../../../PluginSpecs/pluginspecs_dsp.h"
|
||||||
|
|
||||||
#if defined HAVE_OPENAL && HAVE_OPENAL
|
#if defined HAVE_OPENAL && HAVE_OPENAL
|
||||||
|
|
||||||
#define AUDIO_NUMBUFFERS (4)
|
#define AUDIO_NUMBUFFERS (4)
|
||||||
//#define AUDIO_SERVICE_UPDATE_PERIOD (20)
|
//#define AUDIO_SERVICE_UPDATE_PERIOD (20)
|
||||||
|
|
||||||
|
extern DSPInitialize g_dspInitialize;
|
||||||
|
|
||||||
bool OpenALStream::Start()
|
bool OpenALStream::Start()
|
||||||
{
|
{
|
||||||
ALDeviceList *pDeviceList = NULL;
|
ALDeviceList *pDeviceList = NULL;
|
||||||
|
@ -96,9 +99,14 @@ void OpenALStream::Update()
|
||||||
|
|
||||||
void OpenALStream::Clear()
|
void OpenALStream::Clear()
|
||||||
{
|
{
|
||||||
memset(realtimeBuffer, 0, sizeof(realtimeBuffer));
|
if(!*g_dspInitialize.pEmulatorState)
|
||||||
|
{
|
||||||
Update();
|
alSourcePlay(g_uiSource);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
alSourceStop(g_uiSource);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
THREAD_RETURN OpenALStream::ThreadFunc(void* args)
|
THREAD_RETURN OpenALStream::ThreadFunc(void* args)
|
||||||
|
@ -178,17 +186,5 @@ void OpenALStream::SoundLoop()
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void OpenALStream::Mute(bool bMute) {
|
|
||||||
if((bMute && g_muted) || (!bMute && !g_muted))
|
|
||||||
return;
|
|
||||||
|
|
||||||
if(bMute && g_uiSource)
|
|
||||||
alSourceStop(g_uiSource);
|
|
||||||
else if(g_uiSource)
|
|
||||||
alSourcePlay(g_uiSource);
|
|
||||||
|
|
||||||
g_muted = bMute;
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif //HAVE_OPENAL
|
#endif //HAVE_OPENAL
|
||||||
|
|
||||||
|
|
|
@ -51,7 +51,6 @@ public:
|
||||||
virtual void SoundLoop();
|
virtual void SoundLoop();
|
||||||
virtual void Stop();
|
virtual void Stop();
|
||||||
virtual void Clear();
|
virtual void Clear();
|
||||||
virtual void Mute(bool bMute);
|
|
||||||
static bool isValid() { return true; }
|
static bool isValid() { return true; }
|
||||||
virtual bool usesMixer() const { return true; }
|
virtual bool usesMixer() const { return true; }
|
||||||
virtual void Update();
|
virtual void Update();
|
||||||
|
|
|
@ -46,7 +46,6 @@ public:
|
||||||
virtual void Stop() {}
|
virtual void Stop() {}
|
||||||
virtual void Update() {}
|
virtual void Update() {}
|
||||||
virtual void Clear() {}
|
virtual void Clear() {}
|
||||||
virtual void Mute(bool bMute) {}
|
|
||||||
virtual void StartLogAudio(const char *filename) {
|
virtual void StartLogAudio(const char *filename) {
|
||||||
if (! m_logAudio) {
|
if (! m_logAudio) {
|
||||||
m_logAudio = true;
|
m_logAudio = true;
|
||||||
|
|
|
@ -579,6 +579,7 @@ void SetState(EState _State)
|
||||||
break;
|
break;
|
||||||
case CORE_RUN:
|
case CORE_RUN:
|
||||||
CCPU::EnableStepping(false);
|
CCPU::EnableStepping(false);
|
||||||
|
CPluginManager::GetInstance().GetDSP()->DSP_ClearAudioBuffer();
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
PanicAlert("Invalid state");
|
PanicAlert("Invalid state");
|
||||||
|
|
|
@ -145,13 +145,11 @@ bool CWII_IPC_HLE_Device_FileIO::Seek(u32 _CommandAddress)
|
||||||
// AyuanX: this is still dubious because m_FileLength
|
// AyuanX: this is still dubious because m_FileLength
|
||||||
// isn't updated on the fly when write happens
|
// isn't updated on the fly when write happens
|
||||||
s32 NewSeekPosition = SeekPosition;
|
s32 NewSeekPosition = SeekPosition;
|
||||||
/*
|
if (m_FileLength > 0 && SeekPosition > (s32)m_FileLength && Mode == 0)
|
||||||
if (m_FileLength > 0 && SeekPosition > m_FileLength && Mode == 0)
|
|
||||||
{
|
{
|
||||||
NewSeekPosition = SeekPosition % m_FileLength;
|
NewSeekPosition = SeekPosition % m_FileLength;
|
||||||
}
|
}
|
||||||
INFO_LOG(WII_IPC_FILEIO, "FileIO: New Seek Pos: 0x%08x, Mode: %i (%s)", NewSeekPosition, Mode, m_Name.c_str());
|
INFO_LOG(WII_IPC_FILEIO, "FileIO: New Seek Pos: 0x%08x, Mode: %i (%s)", NewSeekPosition, Mode, m_Name.c_str());
|
||||||
*/
|
|
||||||
|
|
||||||
// Set seek mode
|
// Set seek mode
|
||||||
int seek_mode[3] = {SEEK_SET, SEEK_CUR, SEEK_END};
|
int seek_mode[3] = {SEEK_SET, SEEK_CUR, SEEK_END};
|
||||||
|
|
|
@ -317,10 +317,6 @@ unsigned short DSP_ReadControlRegister()
|
||||||
|
|
||||||
void DSP_Update(int cycles)
|
void DSP_Update(int cycles)
|
||||||
{
|
{
|
||||||
// Handle muting
|
|
||||||
if(g_bMuted && !*g_dspInitialize.pEmulatorState && soundStream)
|
|
||||||
soundStream->Mute(g_bMuted = false);
|
|
||||||
|
|
||||||
// This is called OFTEN - better not do anything expensive!
|
// This is called OFTEN - better not do anything expensive!
|
||||||
CDSPHandler::GetInstance().Update(cycles);
|
CDSPHandler::GetInstance().Update(cycles);
|
||||||
}
|
}
|
||||||
|
@ -372,6 +368,4 @@ void DSP_ClearAudioBuffer()
|
||||||
{
|
{
|
||||||
if (soundStream)
|
if (soundStream)
|
||||||
soundStream->Clear();
|
soundStream->Clear();
|
||||||
if(*g_dspInitialize.pEmulatorState && soundStream && !g_bMuted)
|
|
||||||
soundStream->Mute(g_bMuted = true);
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue