- Bump PORTREVISION.
- Remove FreeBSD 4.x support (USE_GCC=3.4+). - Fix various sound problems, including crashes [1]. Obtained from: games/q2p [1]
This commit is contained in:
parent
4f7184be10
commit
a9c3759ed3
Notes:
svn2git
2021-03-31 03:12:20 +00:00
svn path=/head/; revision=199451
4 changed files with 2166 additions and 8 deletions
|
@ -7,7 +7,7 @@
|
|||
|
||||
PORTNAME= qudos
|
||||
PORTVERSION= 0.40.1
|
||||
PORTREVISION= 5
|
||||
PORTREVISION= 6
|
||||
CATEGORIES= games
|
||||
MASTER_SITES= http://qudos.quakedev.com/linux/quake2/engines/QuDos/
|
||||
DISTNAME= QuDos-${PORTVERSION}-src
|
||||
|
@ -19,7 +19,6 @@ MAINTAINER= alepulver@FreeBSD.org
|
|||
COMMENT= Enhaced OpenGL only Quake II engine
|
||||
|
||||
USE_BZIP2= yes
|
||||
USE_GCC= 3.4+
|
||||
USE_GMAKE= yes
|
||||
|
||||
OPTIONS= 3ZB2 "Build 3zb2 modification (bots)" on \
|
||||
|
|
File diff suppressed because it is too large
Load diff
173
games/qudos/files/patch-src__unix__snd_oss.c
Normal file
173
games/qudos/files/patch-src__unix__snd_oss.c
Normal file
|
@ -0,0 +1,173 @@
|
|||
--- src/unix/snd_oss.c.orig Thu Sep 13 20:13:40 2007
|
||||
+++ src/unix/snd_oss.c Thu Sep 13 20:17:00 2007
|
||||
@@ -25,12 +25,7 @@
|
||||
#include <sys/mman.h>
|
||||
#include <sys/shm.h>
|
||||
#include <sys/wait.h>
|
||||
-#if defined(__FreeBSD__)
|
||||
#include <sys/soundcard.h>
|
||||
-#endif
|
||||
-#if defined(__linux__)
|
||||
-#include <linux/soundcard.h>
|
||||
-#endif
|
||||
#include <stdio.h>
|
||||
|
||||
#include "../client/client.h"
|
||||
@@ -43,7 +38,12 @@
|
||||
|
||||
struct sndinfo * si;
|
||||
|
||||
-static int tryrates[] = { 48000, 44100, 22050, 11025, 8000 };
|
||||
+static int tryrates[] = {
|
||||
+ 48000,
|
||||
+ 44100,
|
||||
+ 22050,
|
||||
+ 11025
|
||||
+};
|
||||
|
||||
qboolean
|
||||
SNDDMA_Init(struct sndinfo * s)
|
||||
@@ -53,22 +53,22 @@
|
||||
int fmt;
|
||||
int tmp;
|
||||
int i;
|
||||
- struct audio_buf_info info;
|
||||
+ struct audio_buf_info info;
|
||||
int caps;
|
||||
-
|
||||
+
|
||||
if (snd_inited)
|
||||
return 1;
|
||||
|
||||
snd_inited = 0;
|
||||
|
||||
si = s;
|
||||
-
|
||||
+
|
||||
+#if defined (__linux__)
|
||||
if(!strcmp(si->snddevice->string, "default")) //silly alsa default
|
||||
si->snddevice->string = "/dev/dsp";
|
||||
-
|
||||
+#endif
|
||||
/*
|
||||
- * open /dev/dsp, confirm capability to mmap, and get size of dma
|
||||
- * buffer
|
||||
+ * open /dev/dsp, confirm capability to mmap, and get size of dma buffer
|
||||
*/
|
||||
if (audio_fd == -1) {
|
||||
audio_fd = open(si->snddevice->string, O_RDWR);
|
||||
@@ -100,8 +100,8 @@
|
||||
audio_fd = -1;
|
||||
return 0;
|
||||
}
|
||||
- /* set sample bits & speed */
|
||||
-
|
||||
+
|
||||
+ /* set sample bits & speed */
|
||||
si->dma->samplebits = (int)si->sndbits->value;
|
||||
if (si->dma->samplebits != 16 && si->dma->samplebits != 8) {
|
||||
ioctl(audio_fd, SNDCTL_DSP_GETFMTS, &fmt);
|
||||
@@ -139,22 +139,11 @@
|
||||
}
|
||||
|
||||
si->dma->speed = (int)si->sndspeed->value;
|
||||
-
|
||||
- if (!si->dma->speed) {
|
||||
-
|
||||
- if (si->s_khz->value == 48) {
|
||||
- si->dma->speed = 48000;
|
||||
- }
|
||||
- else if (si->s_khz->value == 44) {
|
||||
- si->dma->speed = 44100;
|
||||
- }
|
||||
- else if (si->s_khz->value == 22) {
|
||||
- si->dma->speed = 22050;
|
||||
- }
|
||||
- else {
|
||||
- si->dma->speed = 11025;
|
||||
- }
|
||||
- si->dma->speed = 48000; /** Uhh **/
|
||||
+ if (!si->dma->speed) {
|
||||
+ if (si->s_khz->value == 48) si->dma->speed = 48000;
|
||||
+ else if (si->s_khz->value == 44) si->dma->speed = 44100;
|
||||
+ else if (si->s_khz->value == 22) si->dma->speed = 22050;
|
||||
+ else si->dma->speed = 11025;
|
||||
}
|
||||
|
||||
if (!si->dma->speed) {
|
||||
@@ -163,6 +152,7 @@
|
||||
break;
|
||||
si->dma->speed = tryrates[i];
|
||||
}
|
||||
+
|
||||
si->dma->channels = (int)si->sndchannels->value;
|
||||
if (si->dma->channels < 1 || si->dma->channels > 2)
|
||||
si->dma->channels = 2;
|
||||
@@ -177,8 +167,9 @@
|
||||
si->dma->channels);
|
||||
close(audio_fd);
|
||||
audio_fd = -1;
|
||||
- return 0;
|
||||
+ return 0;
|
||||
}
|
||||
+
|
||||
if (tmp)
|
||||
si->dma->channels = 2;
|
||||
else
|
||||
@@ -204,7 +195,6 @@
|
||||
si->dma->submission_chunk = 1;
|
||||
|
||||
/* memory map the dma buffer */
|
||||
-
|
||||
if (!si->dma->buffer)
|
||||
si->dma->buffer = (unsigned char *)mmap(NULL, info.fragstotal
|
||||
* info.fragsize, PROT_WRITE, MAP_FILE|MAP_SHARED, audio_fd, 0);
|
||||
@@ -215,8 +205,8 @@
|
||||
audio_fd = -1;
|
||||
return 0;
|
||||
}
|
||||
- /* toggle the trigger & start her up */
|
||||
|
||||
+ /* toggle the trigger & start her up */
|
||||
tmp = 0;
|
||||
rc = ioctl(audio_fd, SNDCTL_DSP_SETTRIGGER, &tmp);
|
||||
if (rc < 0) {
|
||||
@@ -235,12 +225,12 @@
|
||||
audio_fd = -1;
|
||||
return 0;
|
||||
}
|
||||
-
|
||||
-
|
||||
- si->Com_Printf("\nInitializing OSS Sound System\n");
|
||||
- si->Com_Printf("Buffer size: %d\n", info.fragstotal * info.fragsize);
|
||||
-
|
||||
+
|
||||
si->dma->samplepos = 0;
|
||||
+
|
||||
+ si->Com_Printf("Initializing OSS Sound System\n");
|
||||
+ si->Com_Printf("Buffer size: %d\n", info.fragstotal * info.fragsize);
|
||||
+
|
||||
snd_inited = 1;
|
||||
return 1;
|
||||
}
|
||||
@@ -262,11 +252,6 @@
|
||||
return 0;
|
||||
}
|
||||
|
||||
- /*
|
||||
- * dma.samplepos = (count.bytes / (dma.samplebits / 8)) &
|
||||
- * (dma.samples-1);
|
||||
- */
|
||||
- /* fprintf(stderr, "%d \r", count.ptr); */
|
||||
si->dma->samplepos = count.ptr / (si->dma->samplebits / 8);
|
||||
|
||||
return si->dma->samplepos;
|
||||
@@ -286,7 +271,7 @@
|
||||
snd_inited = 0;
|
||||
}
|
||||
#else
|
||||
- printf ("SNDDMA_Shutdown\n");
|
||||
+ si->Com_Printf("SNDDMA_Shutdown\n");
|
||||
if (snd_inited) {
|
||||
munmap (si->dma->buffer, si->dma->samples *si->dma->samplebits / 8);
|
||||
si->dma->buffer = 0L;
|
207
games/qudos/files/patch-src__unix__snd_sdl.c
Normal file
207
games/qudos/files/patch-src__unix__snd_sdl.c
Normal file
|
@ -0,0 +1,207 @@
|
|||
--- src/unix/snd_sdl.c.orig Thu Sep 13 20:13:49 2007
|
||||
+++ src/unix/snd_sdl.c Thu Sep 13 20:17:03 2007
|
||||
@@ -1,47 +1,47 @@
|
||||
/*
|
||||
- * snd_sdl.c
|
||||
- *
|
||||
- * Sound code taken from SDLQuake and modified to work with Quake2 Robert Bäuml
|
||||
- * 2001-12-25
|
||||
- *
|
||||
- * This program is free software; you can redistribute it and/or modify it under
|
||||
- * the terms of the GNU General Public License as published by the Free
|
||||
- * Software Foundation; either version 2 of the License, or (at your option)
|
||||
- * any later version.
|
||||
- *
|
||||
- * This program is distributed in the hope that it will be useful, but WITHOUT
|
||||
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
- * FITNESS FOR A PARTICULAR PURPOSE.
|
||||
- *
|
||||
- * See the GNU General Public License for more details.
|
||||
- *
|
||||
- * You should have received a copy of the GNU General Public License along with
|
||||
- * this program; if not, write to:
|
||||
- *
|
||||
- * Free Software Foundation, Inc. 59 Temple Place - Suite 330 Boston, MA
|
||||
- * 02111-1307, USA
|
||||
- *
|
||||
- * $Id: snd_sdl.c,v 1.2 2002/02/09 20:29:38 relnev Exp $
|
||||
- */
|
||||
+ snd_sdl.c
|
||||
+
|
||||
+ Sound code taken from SDLQuake and modified to work with Quake2
|
||||
+ Robert B�ml 2001-12-25
|
||||
+
|
||||
+ This program is free software; you can redistribute it and/or
|
||||
+ modify it under the terms of the GNU General Public License
|
||||
+ as published by the Free Software Foundation; either version 2
|
||||
+ of the License, or (at your option) any later version.
|
||||
+
|
||||
+ This program is distributed in the hope that it will be useful,
|
||||
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
+
|
||||
+ See the GNU General Public License for more details.
|
||||
+
|
||||
+ You should have received a copy of the GNU General Public License
|
||||
+ along with this program; if not, write to:
|
||||
+
|
||||
+ Free Software Foundation, Inc.
|
||||
+ 59 Temple Place - Suite 330
|
||||
+ Boston, MA 02111-1307, USA
|
||||
+
|
||||
+ $Id: snd_sdl.c,v 1.2 2002/02/09 20:29:38 relnev Exp $
|
||||
+*/
|
||||
|
||||
#include "SDL.h"
|
||||
|
||||
#include "../client/client.h"
|
||||
#include "../client/snd_loc.h"
|
||||
|
||||
-static int snd_inited;
|
||||
-static dma_t *shm;
|
||||
+int snd_inited = 0;
|
||||
|
||||
struct sndinfo * si;
|
||||
|
||||
static void
|
||||
paint_audio (void *unused, Uint8 * stream, int len)
|
||||
{
|
||||
- if (shm) {
|
||||
- shm->buffer = stream;
|
||||
- shm->samplepos += len / (shm->samplebits / 4);
|
||||
- /* Check for samplepos overflow? */
|
||||
- si->S_PaintChannels (shm->samplepos);
|
||||
+ if (snd_inited) {
|
||||
+ si->dma->buffer = stream;
|
||||
+ si->dma->samplepos += len / (si->dma->samplebits / 4);
|
||||
+ // Check for samplepos overflow?
|
||||
+ si->S_PaintChannels (si->dma->samplepos);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -50,6 +50,7 @@
|
||||
{
|
||||
SDL_AudioSpec desired, obtained;
|
||||
int desired_bits, freq;
|
||||
+ char drivername[128];
|
||||
|
||||
if (SDL_WasInit(SDL_INIT_EVERYTHING) == 0) {
|
||||
if (SDL_Init(SDL_INIT_AUDIO) < 0) {
|
||||
@@ -68,19 +69,11 @@
|
||||
|
||||
/* Set up the desired format */
|
||||
freq = si->s_khz->value;
|
||||
-
|
||||
- if (freq == 48) {
|
||||
- desired.freq = 48000;
|
||||
- }
|
||||
- else if (freq == 44) {
|
||||
- desired.freq = 44100;
|
||||
- }
|
||||
- else if (freq == 22) {
|
||||
- desired.freq = 22050;
|
||||
- }
|
||||
- else {
|
||||
- desired.freq = 11025;
|
||||
- }
|
||||
+ if (freq == 48) desired.freq = 48000;
|
||||
+ else if (freq == 44) desired.freq = 44100;
|
||||
+ else if (freq == 22) desired.freq = 22050;
|
||||
+ else if (freq == 11) desired.freq = 11025;
|
||||
+ else desired.freq = 44100;
|
||||
|
||||
switch (desired_bits) {
|
||||
case 8:
|
||||
@@ -96,20 +89,14 @@
|
||||
si->Com_Printf ("Unknown number of audio bits: %d\n", desired_bits);
|
||||
return 0;
|
||||
}
|
||||
+
|
||||
desired.channels = si->sndchannels->value;
|
||||
-
|
||||
- if (desired.freq == 48000) {
|
||||
- desired.samples = 4096;
|
||||
- }
|
||||
- else if (desired.freq == 44100) {
|
||||
- desired.samples = 2048;
|
||||
- }
|
||||
- else if (desired.freq == 22050) {
|
||||
- desired.samples = 1024;
|
||||
- }
|
||||
- else {
|
||||
- desired.samples = 512;
|
||||
- }
|
||||
+
|
||||
+ if (desired.freq == 48000) desired.samples = 4096;
|
||||
+ else if (desired.freq == 44100) desired.samples = 2048;
|
||||
+ else if (desired.freq == 22050) desired.samples = 1024;
|
||||
+ else if (desired.freq == 11025) desired.samples = 512;
|
||||
+ else desired.samples = 2048;
|
||||
|
||||
desired.callback = paint_audio;
|
||||
|
||||
@@ -133,7 +120,6 @@
|
||||
/* Supported */
|
||||
break;
|
||||
}
|
||||
- /* Unsupported, fall through */ ;
|
||||
default:
|
||||
/* Not supported -- force SDL to do our bidding */
|
||||
SDL_CloseAudio ();
|
||||
@@ -147,16 +133,21 @@
|
||||
SDL_PauseAudio (0);
|
||||
|
||||
/* Fill the audio DMA information block */
|
||||
- shm = si->dma;
|
||||
- shm->samplebits = (obtained.format & 0xFF);
|
||||
- shm->speed = obtained.freq;
|
||||
- shm->channels = obtained.channels;
|
||||
- shm->samples = obtained.samples * shm->channels;
|
||||
- shm->samplepos = 0;
|
||||
- shm->submission_chunk = 1;
|
||||
- shm->buffer = NULL;
|
||||
+ si->dma->samplebits = (obtained.format & 0xFF);
|
||||
+ si->dma->speed = obtained.freq;
|
||||
+ si->dma->channels = obtained.channels;
|
||||
+ si->dma->samples = obtained.samples * si->dma->channels;
|
||||
+ si->dma->samplepos = 0;
|
||||
+ si->dma->submission_chunk = 1;
|
||||
+ si->dma->buffer = NULL;
|
||||
|
||||
- si->Com_Printf("\nInitializing SDL Sound System\n");
|
||||
+ if (SDL_AudioDriverName(drivername, sizeof (drivername)) == NULL)
|
||||
+ strcpy(drivername, "(UNKNOWN)");
|
||||
+
|
||||
+ si->Com_Printf("Initializing SDL Sound System\n");
|
||||
+ si->Com_Printf("Audio driver: %s\n", drivername);
|
||||
+ si->Com_Printf("DMA buffer address: 0x%x \n", (int) si->dma->buffer);
|
||||
+ si->Com_Printf("Channels: %5d\n", MAX_CHANNELS);
|
||||
|
||||
snd_inited = 1;
|
||||
return 1;
|
||||
@@ -165,12 +156,13 @@
|
||||
int
|
||||
SNDDMA_GetDMAPos (void)
|
||||
{
|
||||
- return shm->samplepos;
|
||||
+ return si->dma->samplepos;
|
||||
}
|
||||
|
||||
void
|
||||
SNDDMA_Shutdown (void)
|
||||
{
|
||||
+ si->Com_Printf("SNDDMA_Shutdown\n");
|
||||
if (snd_inited) {
|
||||
SDL_CloseAudio ();
|
||||
snd_inited = 0;
|
||||
@@ -183,8 +175,8 @@
|
||||
}
|
||||
|
||||
/*
|
||||
- SNDDMA_Submit
|
||||
- Send sound to device if buffer isn't really the dma buffer
|
||||
+SNDDMA_Submit
|
||||
+Send sound to device if buffer isn't really the dma buffer
|
||||
*/
|
||||
void
|
||||
SNDDMA_Submit (void)
|
Loading…
Reference in a new issue