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);

Reply via email to