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 <[email protected]>
+ * Copyright (c) 2008-2010 Thomas Pfaff <[email protected]>
*
* 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);