Hi. Oscar Ross notified me that none of the effect plugins worked and sent me a diff (that I reworked a bit) to make them operational again.
XMMS is a bitch to work with but the diff below fixes the problem for me, so please test this and let me know of any problems. Thank you. Index: Makefile =================================================================== RCS file: /cvs/ports/audio/xmms/Makefile,v retrieving revision 1.69 diff -u -p -r1.69 Makefile --- Makefile 6 Sep 2010 00:04:29 -0000 1.69 +++ Makefile 18 Oct 2010 15:13:57 -0000 @@ -10,7 +10,7 @@ SHARED_ONLY= Yes VERSION= 1.2.11 DISTNAME= xmms-${VERSION} PKGNAME-main= xmms-${VERSION} -REVISION-main= 7 +REVISION-main= 8 PKGNAME-vorbis= xmms-vorbis-${VERSION} REVISION-vorbis= 1 PKGNAME-mikmod= xmms-mikmod-${VERSION} Index: files/audio_sndio.c =================================================================== RCS file: /cvs/ports/audio/xmms/files/audio_sndio.c,v retrieving revision 1.2 diff -u -p -r1.2 audio_sndio.c --- files/audio_sndio.c 16 Jan 2009 04:15:46 -0000 1.2 +++ files/audio_sndio.c 18 Oct 2010 15:13:57 -0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2008,2009 Thomas Pfaff <tpf...@tp76.info> + * Copyright (c) 2008-2010 Thomas Pfaff <tpf...@tp76.info> * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -26,7 +26,7 @@ #include <xmms/i18n.h> #include <xmms/plugin.h> -#define VERSION "1.0" +#define VERSION "1.1" #define XMMS_MAXVOL 100 static void op_init (void); @@ -57,6 +57,7 @@ static long long wrpos; static int paused; static int volume = XMMS_MAXVOL; static long bytes_per_sec; +static AFormat afmt; static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER; static GtkWidget *configure_win; @@ -153,6 +154,7 @@ op_open (AFormat fmt, int rate, int nch) } sio_initpar (&par); + afmt = fmt; switch (fmt) { case FMT_U8: par.bits = 8; @@ -246,9 +248,18 @@ static void op_write (void *ptr, int len) { if (!paused) { + + int bytes; + EffectPlugin *ep; + + ep = get_current_effect_plugin (); + if (ep && ep->mod_samples) + ep->mod_samples (&ptr, len, afmt, par.rate, par.pchan); + /* Do not lock sio_write as this will cause the GUI thread to block waiting for a blocked sio_write to return. */ - int bytes = sio_write (hdl, ptr, len); + bytes = sio_write (hdl, ptr, len); + pthread_mutex_lock (&mutex); wrpos += bytes; pthread_mutex_unlock (&mutex);