git-svn-id: https://pcsxr.svn.codeplex.com/svn/pcsxr@28956 e17a0e51-4ae3-4d35-97c3-1a29b211df97

This commit is contained in:
SND\weimingzhi_cp 2009-09-04 13:08:17 +00:00
parent 63a0075d25
commit 3b772c08b6
2 changed files with 9 additions and 29 deletions

View File

@ -1,3 +1,10 @@
September 4, 2009 Wei Mingzhi <weimingzhi@gmail.com>
* libpcsxcore/cdriso.c: Don't delay before feeding CDDA data to the SPU
plugin.
* plugins/dfsound/alsa.c: Don't try initializing CDDA sound handle over
and over and over again if failed.
September 3, 2009 Wei Mingzhi <weimingzhi@gmail.com>
* libpcsxcore/cdriso.c: Fixed time overflow on 32-bit GNU/Linux system.

View File

@ -46,8 +46,6 @@ static unsigned char subbuffer[SUB_FRAMESIZE];
static unsigned char sndbuffer[CD_FRAMESIZE_RAW * 10];
#define CDDA_FRAMETIME (1000 * (sizeof(sndbuffer) / CD_FRAMESIZE_RAW) / 75)
#ifdef _WIN32
static HANDLE threadid;
#else
@ -119,21 +117,6 @@ static void tok2msf(char *time, char *msf) {
}
}
#ifndef _WIN32
static long GetTickCount(void) {
static time_t initial_time = 0;
struct timeval now;
gettimeofday(&now, NULL);
if (initial_time == 0) {
initial_time = now.tv_sec;
}
return (now.tv_sec - initial_time) * 1000L + now.tv_usec / 1000L;
}
#endif
// this thread plays audio data
#ifdef _WIN32
static void playthread(void *param)
@ -141,25 +124,15 @@ static void playthread(void *param)
static void *playthread(void *param)
#endif
{
long t = GetTickCount();
long d;
while (playing) {
d = t - (long)GetTickCount();
if (d <= 0) {
d = 1;
}
else if (d > CDDA_FRAMETIME) {
d = CDDA_FRAMETIME;
}
#ifdef _WIN32
Sleep(d);
Sleep(1);
#else
usleep(d * 1000);
usleep(1);
#endif
t = GetTickCount() + CDDA_FRAMETIME;
if ((d = fread(sndbuffer, 1, sizeof(sndbuffer), cddaHandle)) == 0) {
playing = 0;
fclose(cddaHandle);