no one uses this port?

On Sat, Dec 26, 2009 at 08:07:10AM +0000, Jacob Meuser wrote:
> we don't ship the sound files for this.  I found them in the crossfire
> svn.  but I can't seem to get the client to try to play them, probably
> because I have no idea how this game works.
> 
> anyway, if someone is has audio working with this port, can you please
> test this?
> 
> -- 
> jake...@sdf.lonestar.org
> SDF Public Access UNIX System - http://sdf.lonestar.org
> 
> Index: Makefile
> ===================================================================
> RCS file: /cvs/ports/games/crossfire-client/Makefile,v
> retrieving revision 1.22
> diff -N -u -p Makefile
> --- Makefile  10 Aug 2009 06:31:41 -0000      1.22
> +++ Makefile  26 Dec 2009 07:59:51 -0000
> @@ -4,7 +4,7 @@ COMMENT=      graphical networked AD&D style game
>  
>  VERSION=     1.11.0
>  DISTNAME=    crossfire-client-${VERSION}
> -PKGNAME=     ${DISTNAME}p3
> +PKGNAME=     ${DISTNAME}p4
>  CATEGORIES=  games x11
>  
>  DISTFILES=   ${DISTNAME}${EXTRACT_SUFX} \
> @@ -20,9 +20,10 @@ PERMIT_DISTFILES_FTP=   Yes
>  
>  WANTLIB=     GL GLU SDL X11 Xau Xcomposite Xcursor Xdamage Xdmcp \
>               Xext Xfixes Xi Xinerama Xmu Xrandr Xrender atk-1.0 c \
> -             cairo crypto expat fontconfig freetype gio-2.0 glib-2.0 glitz \
> -             gmodule-2.0 gobject-2.0 idn m pango-1.0 pangocairo-1.0 \
> -             pangoft2-1.0 pixman-1 png pthread pthread-stubs ssl xcb z
> +             cairo crypto expat fontconfig freetype gio-2.0 glib-2.0 \
> +             glitz gmodule-2.0 gobject-2.0 idn m pango-1.0 \
> +             pangocairo-1.0 pangoft2-1.0 pixman-1 png pthread \
> +             pthread-stubs sndio ssl xcb z
>  
>  MASTER_SITES=        ${MASTER_SITE_SOURCEFORGE:=crossfire/}
>  
> @@ -33,7 +34,7 @@ LIB_DEPENDS=        
> gdk-x11-2.0,gdk_pixbuf-2.0,gtk-x11-2.0::x
>               glut.>=4::graphics/freeglut \
>               curl.>=8::net/curl
>  
> -USE_X11=             Yes
> +USE_X11=     Yes
>  
>  CONFIGURE_STYLE=gnu
>  CONFIGURE_ENV=       CPPFLAGS="-I${LOCALBASE}/include \
> @@ -41,7 +42,8 @@ CONFIGURE_ENV=      CPPFLAGS="-I${LOCALBASE}/include \
>                       -I${X11BASE}/include" \
>               LDFLAGS="-L${LOCALBASE}/lib \
>                       -L${X11BASE}/lib -lm -lXi -lXmu" \
> -             ac_cv_path_SVNVERSION=""
> +             ac_cv_path_SVNVERSION="" \
> +             sndio_sound="yes"
>  CONFIGURE_ARGS=      --enable-gtkv2 \
>               --disable-gtkv1
>  
> Index: patches/patch-configure
> ===================================================================
> RCS file: /cvs/ports/games/crossfire-client/patches/patch-configure,v
> retrieving revision 1.2
> diff -N -u -p patches/patch-configure
> --- patches/patch-configure   1 Apr 2008 09:14:31 -0000       1.2
> +++ patches/patch-configure   26 Dec 2009 07:59:51 -0000
> @@ -1,6 +1,6 @@
>  $OpenBSD: patch-configure,v 1.2 2008/04/01 09:14:31 ajacoutot Exp $
> ---- configure.orig   Sat Feb 12 19:09:25 2005
> -+++ configure        Sat Feb 12 19:09:27 2005
> +--- configure.orig   Mon Jan 28 23:29:08 2008
> ++++ configure        Fri Dec 25 22:50:32 2009
>  @@ -7688,13 +7688,13 @@ fi
>   
>   
> @@ -27,3 +27,23 @@ $OpenBSD: patch-configure,v 1.2 2008/04/01 09:14:31 aj
>   
>   fi
>   
> +@@ -9164,6 +9164,11 @@ fi
> + 
> +       SOUND_SRC="sound-src";
> +         else
> ++          if eval "test x$sndio_sound = xyes"; then
> ++          CFLAGS="$CFLAGS -DSNDIO_SOUND"
> ++          SND_LIBS="-lsndio -lm"
> ++          SOUND_SRC="sound-src";
> ++          else
> +           if eval "test x$sun_sound = xyes"; then
> +           echo "Using solaris sound system"
> +           CFLAGS="$CFLAGS -DSUN_SOUND"
> +@@ -9172,6 +9177,7 @@ fi
> +       else
> +           echo "No suitable sound system found."
> +               sound="no"
> ++          fi
> +           fi
> +         fi
> +       fi
> Index: patches/patch-sound-src_cfsndserv_c
> ===================================================================
> RCS file: patches/patch-sound-src_cfsndserv_c
> diff -N -u -p patches/patch-sound-src_cfsndserv_c
> --- /dev/null 26 Dec 2009 00:59:51 -0000
> +++ patches/patch-sound-src_cfsndserv_c       26 Dec 2009 07:59:51 -0000
> @@ -0,0 +1,230 @@
> +$OpenBSD$
> +--- sound-src/cfsndserv.c.orig       Mon Jan 28 23:29:08 2008
> ++++ sound-src/cfsndserv.c    Fri Dec 25 23:14:53 2009
> +@@ -93,6 +93,10 @@ static char *rcsid_cfsndserv_c =
> + #elif defined(SGI_SOUND)
> + #  include <audio.h>
> + #  define AUDIODEV "/foo/bar"
> ++#elif defined(SNDIO_SOUND)
> ++#  include <poll.h>
> ++#  include <sndio.h>
> ++#  define AUDIODEV "default"
> + #elif defined(SUN_SOUND)
> + #  include <sys/audioio.h>
> + #  define AUDIODEV "/dev/audio"
> +@@ -135,7 +139,11 @@ int *sounds_in_buffer=NULL;
> + int current_buffer=0; /* Next buffer we will write out */
> + int first_free_buffer=0; /* So we know when to stop playing sounds */
> + 
> ++#ifdef SNDIO_SOUND
> ++struct sio_hdl *hdl;
> ++#else
> + int soundfd=0;
> ++#endif
> + 
> + /* sound device parameters */
> + int stereo=0,bit8=0,sample_size=0,frequency=0,sign=0,zerolevel=0;
> +@@ -514,6 +522,70 @@ int audio_play(int buffer,int off)
> +     return settings.buflen-off;
> + }
> + 
> ++#elif defined(SNDIO_SOUND)
> ++
> ++int init_audio(){
> ++
> ++  struct sio_par par;
> ++  const char *audiodev;
> ++
> ++  printf("cfsndserv compiled for sndio sound system\n");
> ++  fflush(stdout);
> ++
> ++  /* Open the audio device */
> ++  /* respect settings.audiodev ? */
> ++  hdl = sio_open(NULL, SIO_PLAY, 0);
> ++  if ( hdl == NULL ) {
> ++           fprintf(stderr,"Couldn't open sndio device\n");
> ++           return(-1);
> ++  }
> ++
> ++  sio_initpar(&par);
> ++  par.bits = settings.bit8?8:16;
> ++  par.sig = settings.bit8?0:1;
> ++  par.rate = settings.frequency;
> ++  par.pchan = settings.stereo?2:1;
> ++
> ++  if ( ! sio_setpar(hdl, &par) || ! sio_getpar(hdl, &par) ) {
> ++            fprintf(stderr, "Couldn't set audio information\n");
> ++            return(-1);
> ++  }
> ++  if ( par.bits > 16) {
> ++            fprintf(stderr, "Unsupported audio bit-depth: %d\n", par.bits);
> ++            return(-1);
> ++  }
> ++
> ++  bit8=(par.bits==8)?1:0;
> ++  stereo=(par.pchan==2)?1:0;
> ++  frequency=par.rate;
> ++  sample_size=(bit8?1:2)*(stereo?2:1);
> ++  fprintf(stderr,"SNDIO_SOUND: bit8=%d, stereo=%d, freq=%d, 
> sample_size=%d\n",
> ++      bit8, stereo, frequency, sample_size);
> ++
> ++  if ( ! sio_start(hdl) ) {
> ++            fprintf(stderr, "Couldn't start sndio\n");
> ++            return(-1);
> ++  }
> ++
> ++  return 0;
> ++}
> ++
> ++int audio_play(int buffer,int off){
> ++    int wrote;
> ++#ifdef SOUND_DEBUG
> ++    printf("audio play - writing starting at %d, %d bytes",
> ++      settings.buflen*buffer+off,settings.buflen-off);
> ++    fflush(stdout);
> ++#endif
> ++  
> wrote=sio_write(hdl,buffers+settings.buflen*buffer+off,settings.buflen-off);
> ++#ifdef SOUND_DEBUG
> ++    printf("...wrote %d bytes\n", wrote);
> ++    fflush(stdout);
> ++#endif
> ++  return wrote;
> ++}
> ++/* End of Sndio sound */
> ++
> + #elif defined(SUN_SOUND)
> + 
> + int init_audio(){
> +@@ -711,7 +783,11 @@ static void play_sound(int soundnum, int soundtype, in
> +     fprintf(stderr,"Invalid sound number: %d\n", soundnum);
> +     return;
> +     }
> ++#ifdef SNDIO_SOUND
> ++    if (hdl == NULL) {
> ++#else
> +     if (soundfd==-1) {
> ++#endif
> +     fprintf(stderr,"Sound device is not open\n");
> +     return;
> +     }
> +@@ -949,19 +1025,37 @@ int main(int argc, char *argv[])
> +     int infd;
> +     char inbuf[1024];
> +     int inbuf_pos=0,sndbuf_pos=0;
> ++#ifdef SNDIO_SOUND
> ++    struct pollfd fds[2];
> ++    nfds_t nfds;
> ++    int poll_audio;
> ++#else
> +     fd_set inset,outset;
> ++#endif
> + 
> +     printf ("%s\n",rcsid_cfsndserv_c);
> +     fflush(stdout);
> +     if (read_settings()) write_settings();
> +     if (init_sounds()) return 1;
> ++    infd=fileno(stdin);
> ++#ifdef SNDIO_SOUND
> ++    if (!hdl) return 1;
> ++    nfds = sio_nfds(hdl);
> ++    if (nfds != 1) {
> ++      fprintf(stderr, "too many sndio fds\n");
> ++      return -1;
> ++    }
> ++    fds[1].fd = infd;
> ++    fds[1].events = POLLIN;
> ++    poll_audio = 1;
> ++#else
> +     /* we don't use the file descriptor method */
> +     if (!soundfd) return 1;
> +-    infd=fileno(stdin);
> +     FD_ZERO(&inset);
> +     FD_ZERO(&outset);
> +     FD_SET(soundfd,&outset);
> +     FD_SET(infd,&inset);
> ++#endif
> +     while(1){
> + #if defined(SGI_SOUND)
> +       /*
> +@@ -973,13 +1067,30 @@ int main(int argc, char *argv[])
> +       ALsetfillpoint(soundport,100000);
> + #endif
> + 
> ++#ifdef SNDIO_SOUND
> ++      if (poll_audio) {
> ++        nfds = sio_pollfd(hdl, &fds[0], POLLOUT);
> ++        if (nfds == 0)
> ++            fds[0].fd = -1;
> ++      } else
> ++        fds[0].fd = -1;
> + 
> ++      poll(fds, 2, INFTIM);
> ++
> ++      if (sio_revents(hdl, &fds[0]) & POLLOUT) {
> ++#else
> +       select(FD_SETSIZE,&inset,&outset,NULL,NULL);
> + 
> +       if (FD_ISSET(soundfd,&outset)){
> ++#endif
> +          /* no sounds to play */
> +-         if (current_buffer==first_free_buffer) FD_CLR(soundfd,&outset);
> +-     else{
> ++         if (current_buffer==first_free_buffer) {
> ++#ifdef SNDIO_SOUND
> ++           poll_audio = 0;
> ++#else
> ++           FD_CLR(soundfd,&outset);
> ++#endif
> ++     }else{
> +        int wrote;
> +            wrote=audio_play(current_buffer,sndbuf_pos);
> +            if (wrote<settings.buflen-sndbuf_pos) sndbuf_pos+=wrote;
> +@@ -991,15 +1102,23 @@ int main(int argc, char *argv[])
> +          current_buffer++;
> +              if (current_buffer>=settings.buffers) current_buffer=0;
> +            }
> +-    }
> ++     }
> +       } else {
> +     /* We need to reset this if it is not set - otherwise, we will never
> +      * finish playing the sounds
> +      */
> ++#ifdef SNDIO_SOUND
> ++        poll_audio = 1;
> ++#else
> +     FD_SET(soundfd,&outset);
> ++#endif
> +       }
> + 
> ++#ifdef SNDIO_SOUND
> ++      if (fds[1].revents & POLLIN){
> ++#else
> +       if (FD_ISSET(infd,&inset)){
> ++#endif
> +         int err=read(infd,inbuf+inbuf_pos,1);
> +     if (err<1 && errno!=EINTR){
> +       if (err<0) perror("read");
> +@@ -1007,7 +1126,12 @@ int main(int argc, char *argv[])
> +     }
> +         if (inbuf[inbuf_pos]=='\n'){
> +       inbuf[inbuf_pos++]=0;
> +-          if (!SoundCmd((unsigned char*)inbuf,inbuf_pos)) 
> FD_SET(soundfd,&outset);
> ++          if (!SoundCmd((unsigned char*)inbuf,inbuf_pos))
> ++#ifdef SNDIO_SOUND
> ++            poll_audio = 1;
> ++#else
> ++            FD_SET(soundfd,&outset);
> ++#endif
> +           inbuf_pos=0;
> +         }
> +         else{
> +@@ -1018,7 +1142,9 @@ int main(int argc, char *argv[])
> +           }
> +         }
> +       }
> ++#ifndef SNDIO_SOUND
> +       FD_SET(infd,&inset);
> ++#endif
> +     }
> + 
> +     return 0;
> Index: pkg/PLIST
> ===================================================================
> RCS file: /cvs/ports/games/crossfire-client/pkg/PLIST,v
> retrieving revision 1.5
> diff -N -u -p pkg/PLIST
> --- pkg/PLIST 1 Apr 2008 09:14:31 -0000       1.5
> +++ pkg/PLIST 26 Dec 2009 07:59:51 -0000
> @@ -1,7 +1,7 @@
>  @comment $OpenBSD: PLIST,v 1.5 2008/04/01 09:14:31 ajacoutot Exp $
> -bin/cfclient
> -bin/cfsndserv
> -bin/gcfclient2
> +...@bin bin/cfclient
> +...@bin bin/cfsndserv
> +...@bin bin/gcfclient2
>  @man man/man6/cfclient.6
>  @man man/man6/gcfclient.6
>  share/crossfire-client/

-- 
jake...@sdf.lonestar.org
SDF Public Access UNIX System - http://sdf.lonestar.org

Reply via email to