コード例 #1
0
ファイル: snd_dma.c プロジェクト: Darktori/vkQuake
static void S_Update_ (void)
{
	unsigned int	endtime;
	int		samps;

	if (!sound_started || (snd_blocked > 0))
		return;

	SNDDMA_LockBuffer ();
	if (! shm->buffer)
		return;

// Updates DMA time
	GetSoundtime();

// check to make sure that we haven't overshot
	if (paintedtime < soundtime)
	{
	//	Con_Printf ("S_Update_ : overflow\n");
		paintedtime = soundtime;
	}

// mix ahead of current position
	endtime = soundtime + (unsigned int)(_snd_mixahead.value * shm->speed);
	samps = shm->samples >> (shm->channels - 1);
	endtime = q_min(endtime, (unsigned int)(soundtime + samps));

	S_PaintChannels (endtime);

	SNDDMA_Submit ();
}
コード例 #2
0
ファイル: snd_dma.c プロジェクト: CatalystG/tyrquake
void
S_ClearBuffer(void)
{
    int err;
    int clear;

    if (!sound_started || !shm)
	return;

    err = SNDDMA_LockBuffer();
    if (err) {
	S_Shutdown();
	return;
    }

    clear = (shm->samplebits == 8) ? 0x80 : 0;
    memset(shm->buffer, clear, shm->samples * shm->samplebits / 8);
    SNDDMA_UnlockBuffer();
}
コード例 #3
0
ファイル: snd_dma.c プロジェクト: Darktori/vkQuake
void S_ClearBuffer (void)
{
	int		clear;

	if (!sound_started || !shm)
		return;

	SNDDMA_LockBuffer ();
	if (! shm->buffer)
		return;

	s_rawend = 0;

	if (shm->samplebits == 8 && !shm->signed8)
		clear = 0x80;
	else
		clear = 0;

	memset(shm->buffer, clear, shm->samples * shm->samplebits / 8);

	SNDDMA_Submit ();
}