- update to soundtracker-0.6.8
- use sndio for audio, kill esd flavor - various cleanup ok MAINTAINER
This commit is contained in:
parent
9feaa9c0be
commit
b61b5670a7
@ -1,67 +1,50 @@
|
||||
# $OpenBSD: Makefile,v 1.18 2009/08/10 06:29:52 kili Exp $
|
||||
# Uses pthreads
|
||||
# $OpenBSD: Makefile,v 1.19 2009/12/19 22:59:27 jakemsr Exp $
|
||||
|
||||
COMMENT= Music tracking tool for X11
|
||||
COMMENT= music tracking tool for X11
|
||||
|
||||
VERSION= 0.6.6
|
||||
DISTNAME= soundtracker-${VERSION}
|
||||
PKGNAME= ${DISTNAME}p4
|
||||
DISTNAME= soundtracker-0.6.8
|
||||
CATEGORIES= audio
|
||||
HOMEPAGE= http://www.soundtracker.org/
|
||||
|
||||
MAINTAINER= Wilbern Cobb <wcobb@openbsd.org>
|
||||
|
||||
# GPL
|
||||
# GPLv2
|
||||
PERMIT_PACKAGE_CDROM= Yes
|
||||
PERMIT_PACKAGE_FTP= Yes
|
||||
PERMIT_DISTFILES_CDROM= Yes
|
||||
PERMIT_DISTFILES_FTP= Yes
|
||||
WANTLIB= X11 Xext Xi c glib gmodule m pthread pthread-stubs xcb
|
||||
WANTLIB= X11 Xext Xi c glib gmodule gthread jpeg m png \
|
||||
pthread pthread-stubs sndio tiff xcb z
|
||||
|
||||
V=v0.6
|
||||
MASTER_SITES= http://www.soundtracker.org/dl/$V/ \
|
||||
http://mirror.csoft.org/soundtracker/
|
||||
MASTER_SITES= http://www.soundtracker.org/dl/v0.6/
|
||||
|
||||
LIB_DEPENDS= gtk.>=1.2,gdk.>=1.2::x11/gtk+ \
|
||||
audiofile::devel/libaudiofile
|
||||
gdk_pixbuf.>=2::graphics/gdk-pixbuf \
|
||||
sndfile::audio/libsndfile
|
||||
|
||||
MODULES= devel/gettext
|
||||
|
||||
FLAVORS= esd
|
||||
FLAVOR?=
|
||||
|
||||
USE_X11= Yes
|
||||
AUTOCONF_VERSION= 2.52
|
||||
CONFIGURE_STYLE= autoconf
|
||||
CONFIGURE_ARGS= --with-audiofile-prefix=${LOCALBASE} \
|
||||
--disable-alsa \
|
||||
CONFIGURE_STYLE= gnu
|
||||
CONFIGURE_ARGS= --disable-alsa \
|
||||
--disable-sgi \
|
||||
--disable-oss \
|
||||
--disable-esd \
|
||||
--disable-sun \
|
||||
--disable-sdl \
|
||||
--disable-jack \
|
||||
--disable-gnome \
|
||||
--disable-splash
|
||||
CONFIGURE_ENV= CPPFLAGS="-I${LOCALBASE}/include" \
|
||||
LDFLAGS="-L${LOCALBASE}/lib"
|
||||
|
||||
.if ${FLAVOR:L:Mesd}
|
||||
LIB_DEPENDS+= esd.>=2::audio/esound
|
||||
WANTLIB += sndio
|
||||
.else
|
||||
CONFIGURE_ARGS+= --disable-esd
|
||||
.endif
|
||||
|
||||
.if ${MACHINE_ARCH} != "i386"
|
||||
CONFIGURE_ARGS+= --disable-assembler
|
||||
.endif
|
||||
CONFIGURE_ENV= CPPFLAGS="-I${LOCALBASE}/include -DDRIVER_SNDIO" \
|
||||
LDFLAGS="-L${LOCALBASE}/lib" \
|
||||
LIBS="-lsndio"
|
||||
|
||||
DOCS= FAQ NEWS README \
|
||||
doc/xi.txt doc/xm.txt
|
||||
|
||||
post-configure:
|
||||
cd ${WRKSRC}/po && cp -f Makefile.in Makefile
|
||||
doc/xi.txt doc/xm.txt doc/xp.txt
|
||||
|
||||
post-extract:
|
||||
@ln -s ${FILESDIR}/sun-input.c ${WRKSRC}/app/drivers
|
||||
@ln -s ${FILESDIR}/sun-output.c ${WRKSRC}/app/drivers
|
||||
@ln -s ${FILESDIR}/sndio-input.c ${WRKSRC}/app/drivers
|
||||
@ln -s ${FILESDIR}/sndio-output.c ${WRKSRC}/app/drivers
|
||||
|
||||
post-install:
|
||||
${INSTALL_DATA_DIR} ${PREFIX}/share/doc/soundtracker
|
||||
|
@ -1,5 +1,5 @@
|
||||
MD5 (soundtracker-0.6.6.tar.gz) = YBSwbJmagqIn5NG6Q64CbA==
|
||||
RMD160 (soundtracker-0.6.6.tar.gz) = 4d5HzZ8ISYFMzFSFxsOwf1tGS2s=
|
||||
SHA1 (soundtracker-0.6.6.tar.gz) = sH6wlgMUaZbzhPBg9ZTZxRbJM6w=
|
||||
SHA256 (soundtracker-0.6.6.tar.gz) = gHp5MQgd0U76JzjTc9btmqjPH7SwV9nroBXDIZG434A=
|
||||
SIZE (soundtracker-0.6.6.tar.gz) = 673631
|
||||
MD5 (soundtracker-0.6.8.tar.gz) = Hlou9oniFJM+U/aHs6GZuw==
|
||||
RMD160 (soundtracker-0.6.8.tar.gz) = uGv4YBPl0pWeGo27GaklXBFraNA=
|
||||
SHA1 (soundtracker-0.6.8.tar.gz) = JVyHzb4sy3Fdn5egZ35FlLeQlZU=
|
||||
SHA256 (soundtracker-0.6.8.tar.gz) = A7LywO26SEV+xheLChDt/jSBJUESk2cVYDoh9jiCL1A=
|
||||
SIZE (soundtracker-0.6.8.tar.gz) = 1016718
|
||||
|
218
audio/soundtracker/files/sndio-input.c
Normal file
218
audio/soundtracker/files/sndio-input.c
Normal file
@ -0,0 +1,218 @@
|
||||
/*
|
||||
* Copyright (c) 2009 Jacob Meuser <jakemsr@sdf.lonestar.org>
|
||||
*
|
||||
* Permission to use, copy, modify, and distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
* copyright notice and this permission notice appear in all copies.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
|
||||
#include <config.h>
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <poll.h>
|
||||
#include <pthread.h>
|
||||
#include <unistd.h>
|
||||
#include <sndio.h>
|
||||
|
||||
#include <glib.h>
|
||||
#include <gtk/gtk.h>
|
||||
|
||||
#include "driver-in.h"
|
||||
#include "mixer.h"
|
||||
#include "errors.h"
|
||||
|
||||
typedef struct sndio_in_driver {
|
||||
struct sio_hdl *hdl;
|
||||
struct sio_par par;
|
||||
|
||||
pthread_t read_tid;
|
||||
int read_trun;
|
||||
|
||||
void *sndbuf;
|
||||
int bufsize;
|
||||
int mf;
|
||||
|
||||
} sndio_in_driver;
|
||||
|
||||
|
||||
static void *
|
||||
read_thread(void *dp)
|
||||
{
|
||||
sndio_in_driver *d = dp;
|
||||
struct pollfd pfd;
|
||||
int size, ret, off, nfds;
|
||||
|
||||
if (!sio_start(d->hdl)) {
|
||||
error_error("could not start sndio");
|
||||
goto done;
|
||||
}
|
||||
|
||||
while (d->read_trun) {
|
||||
nfds = sio_pollfd(d->hdl, &pfd, POLLIN);
|
||||
poll(&pfd, nfds, -1);
|
||||
if (sio_revents(d->hdl, &pfd) & POLLIN) {
|
||||
size = d->par.rchan * d->par.bps * d->bufsize;
|
||||
off = 0;
|
||||
while (size > 0) {
|
||||
ret = sio_read(d->hdl, d->sndbuf + off, size);
|
||||
off += ret;
|
||||
size -= ret;
|
||||
}
|
||||
sample_editor_sampled(d->sndbuf, d->bufsize,
|
||||
d->par.rate, d->mf);
|
||||
}
|
||||
}
|
||||
done:
|
||||
pthread_exit(NULL);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static void *
|
||||
sndio_new(void)
|
||||
{
|
||||
sndio_in_driver *d = g_new(sndio_in_driver, 1);
|
||||
|
||||
d->hdl = NULL;
|
||||
d->sndbuf = NULL;
|
||||
|
||||
return d;
|
||||
}
|
||||
|
||||
static void
|
||||
sndio_release(void *dp)
|
||||
{
|
||||
sndio_in_driver *d = dp;
|
||||
|
||||
d->read_trun = 0;
|
||||
pthread_join(d->read_tid, NULL);
|
||||
|
||||
if (d->sndbuf)
|
||||
free(d->sndbuf);
|
||||
d->sndbuf = NULL;
|
||||
|
||||
if (d->hdl)
|
||||
sio_close(d->hdl);
|
||||
d->hdl = NULL;
|
||||
}
|
||||
|
||||
static void
|
||||
sndio_destroy(void *dp)
|
||||
{
|
||||
/* just in case */
|
||||
sndio_release(dp);
|
||||
|
||||
g_free(dp);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
sndio_open(void *dp)
|
||||
{
|
||||
sndio_in_driver *d = dp;
|
||||
char buf[256];
|
||||
|
||||
sio_initpar(&d->par);
|
||||
|
||||
d->hdl = sio_open(NULL, SIO_REC, 0);
|
||||
if (d->hdl == NULL) {
|
||||
snprintf(buf, sizeof(buf), "can't open sndio rec device");
|
||||
goto out;
|
||||
}
|
||||
|
||||
d->par.rate = 44100;
|
||||
d->par.bits = 16;
|
||||
d->par.rchan = 1;
|
||||
d->par.appbufsz = 2048;
|
||||
|
||||
if (!sio_setpar(d->hdl, &d->par) || !sio_getpar(d->hdl, &d->par)) {
|
||||
snprintf(buf, sizeof(buf), "can't configure sndio device");
|
||||
goto out;
|
||||
}
|
||||
|
||||
if (d->par.bits == 16) {
|
||||
if (d->par.sig) {
|
||||
if (d->par.le)
|
||||
d->mf = ST_MIXER_FORMAT_S16_LE;
|
||||
else
|
||||
d->mf = ST_MIXER_FORMAT_S16_BE;
|
||||
} else {
|
||||
if (d->par.le)
|
||||
d->mf = ST_MIXER_FORMAT_U16_LE;
|
||||
else
|
||||
d->mf = ST_MIXER_FORMAT_U16_BE;
|
||||
}
|
||||
} else if (d->par.bits == 8) {
|
||||
if (d->par.sig)
|
||||
d->mf = ST_MIXER_FORMAT_S8;
|
||||
else
|
||||
d->mf = ST_MIXER_FORMAT_U8;
|
||||
} else {
|
||||
snprintf(buf, sizeof(buf), "invalid sndio bit-depth");
|
||||
goto out;
|
||||
}
|
||||
|
||||
if (d->par.rchan == 2) {
|
||||
d->mf |= ST_MIXER_FORMAT_STEREO;
|
||||
} else if (d->par.rchan != 1) {
|
||||
snprintf(buf, sizeof(buf), "invalid sndio channel count");
|
||||
goto out;
|
||||
}
|
||||
|
||||
d->bufsize = d->par.round;
|
||||
|
||||
d->sndbuf = calloc(1, d->bufsize * d->par.bps * d->par.rchan);
|
||||
|
||||
d->read_trun = 1;
|
||||
if (pthread_create(&d->read_tid, NULL, read_thread, d)) {
|
||||
snprintf(buf, sizeof(buf), "couldn't spawn reading thread");
|
||||
goto out;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
|
||||
out:
|
||||
error_error(buf);
|
||||
sndio_release(dp);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static GtkWidget *
|
||||
sndio_getwidget(void *dp)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
sndio_loadsettings(void *dp, prefs_node *f)
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
sndio_savesettings(void *dp, prefs_node *f)
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
st_in_driver driver_in_sndio = {
|
||||
{
|
||||
"Sndio Input",
|
||||
sndio_new,
|
||||
sndio_destroy,
|
||||
sndio_open,
|
||||
sndio_release,
|
||||
|
||||
sndio_getwidget,
|
||||
sndio_loadsettings,
|
||||
sndio_savesettings,
|
||||
}
|
||||
};
|
238
audio/soundtracker/files/sndio-output.c
Normal file
238
audio/soundtracker/files/sndio-output.c
Normal file
@ -0,0 +1,238 @@
|
||||
/*
|
||||
* Copyright (c) 2009 Jacob Meuser <jakemsr@sdf.lonestar.org>
|
||||
*
|
||||
* Permission to use, copy, modify, and distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
* copyright notice and this permission notice appear in all copies.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
|
||||
#include <config.h>
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#include <unistd.h>
|
||||
#include <sndio.h>
|
||||
|
||||
#include <glib.h>
|
||||
#include <gtk/gtk.h>
|
||||
|
||||
#include "driver-out.h"
|
||||
#include "mixer.h"
|
||||
#include "errors.h"
|
||||
|
||||
typedef struct sndio_driver {
|
||||
struct sio_hdl *hdl;
|
||||
struct sio_par par;
|
||||
|
||||
void *sndbuf;
|
||||
int bufsize;
|
||||
int mf;
|
||||
|
||||
long long realpos;
|
||||
|
||||
gpointer polltag;
|
||||
|
||||
} sndio_driver;
|
||||
|
||||
/* XXX */
|
||||
void *
|
||||
sndio_driver_get_hdl(void *dp)
|
||||
{
|
||||
sndio_driver *d = dp;
|
||||
return d->hdl;
|
||||
}
|
||||
|
||||
static void
|
||||
movecb(void *arg, int delta)
|
||||
{
|
||||
sndio_driver *d = arg;
|
||||
d->realpos += delta;
|
||||
}
|
||||
|
||||
static void
|
||||
sndio_poll_ready_playing(gpointer data, gint source,
|
||||
GdkInputCondition condition)
|
||||
{
|
||||
sndio_driver *d = data;
|
||||
static int size;
|
||||
|
||||
audio_mix(d->sndbuf, d->bufsize, d->par.rate, d->mf);
|
||||
|
||||
size = d->par.pchan * d->par.bps * d->bufsize;
|
||||
sio_write(d->hdl, d->sndbuf, size);
|
||||
}
|
||||
|
||||
static void *
|
||||
sndio_new(void)
|
||||
{
|
||||
sndio_driver *d = g_new(sndio_driver, 1);
|
||||
|
||||
d->hdl = NULL;
|
||||
d->sndbuf = NULL;
|
||||
d->polltag = NULL;
|
||||
|
||||
return d;
|
||||
}
|
||||
|
||||
static void
|
||||
sndio_release(void *dp)
|
||||
{
|
||||
sndio_driver *d = dp;
|
||||
|
||||
if (d->sndbuf)
|
||||
free(d->sndbuf);
|
||||
d->sndbuf = NULL;
|
||||
|
||||
if (d->polltag != NULL)
|
||||
audio_poll_remove(d->polltag);
|
||||
d->polltag = NULL;
|
||||
|
||||
if (d->hdl)
|
||||
sio_close(d->hdl);
|
||||
d->hdl = NULL;
|
||||
}
|
||||
|
||||
static void
|
||||
sndio_destroy(void *dp)
|
||||
{
|
||||
/* just in case */
|
||||
sndio_release(dp);
|
||||
|
||||
g_free(dp);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
sndio_open(void *dp)
|
||||
{
|
||||
sndio_driver *d = dp;
|
||||
char buf[256];
|
||||
|
||||
sio_initpar(&d->par);
|
||||
|
||||
d->hdl = sio_open(NULL, SIO_PLAY, 0);
|
||||
if (d->hdl == NULL) {
|
||||
snprintf(buf, sizeof(buf), "can't open sndio device");
|
||||
goto out;
|
||||
}
|
||||
|
||||
d->par.rate = 44100;
|
||||
d->par.bits = 16;
|
||||
d->par.pchan = 2;
|
||||
d->par.appbufsz = 2048;
|
||||
|
||||
if (!sio_setpar(d->hdl, &d->par) || !sio_getpar(d->hdl, &d->par)) {
|
||||
snprintf(buf, sizeof(buf), "can't configure sndio device");
|
||||
goto out;
|
||||
}
|
||||
|
||||
if (d->par.bits == 16) {
|
||||
if (d->par.sig) {
|
||||
if (d->par.le)
|
||||
d->mf = ST_MIXER_FORMAT_S16_LE;
|
||||
else
|
||||
d->mf = ST_MIXER_FORMAT_S16_BE;
|
||||
} else {
|
||||
if (d->par.le)
|
||||
d->mf = ST_MIXER_FORMAT_U16_LE;
|
||||
else
|
||||
d->mf = ST_MIXER_FORMAT_U16_BE;
|
||||
}
|
||||
} else if (d->par.bits == 8) {
|
||||
if (d->par.sig)
|
||||
d->mf = ST_MIXER_FORMAT_S8;
|
||||
else
|
||||
d->mf = ST_MIXER_FORMAT_U8;
|
||||
} else {
|
||||
snprintf(buf, sizeof(buf), "invalid sndio bit-depth");
|
||||
goto out;
|
||||
}
|
||||
|
||||
if (d->par.pchan == 2) {
|
||||
d->mf |= ST_MIXER_FORMAT_STEREO;
|
||||
} else if (d->par.pchan != 1) {
|
||||
snprintf(buf, sizeof(buf), "invalid sndio channel count");
|
||||
goto out;
|
||||
}
|
||||
|
||||
d->bufsize = d->par.round;
|
||||
|
||||
d->sndbuf = calloc(1, d->bufsize * d->par.bps * d->par.pchan);
|
||||
|
||||
sio_onmove(d->hdl, movecb, d);
|
||||
|
||||
if (!sio_start(d->hdl)) {
|
||||
snprintf(buf, sizeof(buf), "could not start sndio");
|
||||
goto out;
|
||||
}
|
||||
|
||||
d->polltag = audio_poll_add(-1, GDK_INPUT_WRITE,
|
||||
sndio_poll_ready_playing, d);
|
||||
|
||||
return TRUE;
|
||||
|
||||
out:
|
||||
error_error(buf);
|
||||
sndio_release(dp);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static double
|
||||
sndio_get_play_time(void *dp)
|
||||
{
|
||||
sndio_driver *d = dp;
|
||||
|
||||
/* time buffered */
|
||||
return (float)d->realpos / d->par.rate;
|
||||
}
|
||||
|
||||
static inline int
|
||||
sndio_get_play_rate(void *dp)
|
||||
{
|
||||
sndio_driver *d = dp;
|
||||
return d->par.rate;
|
||||
}
|
||||
|
||||
static GtkWidget *
|
||||
sndio_getwidget(void *dp)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
sndio_loadsettings(void *dp, prefs_node *f)
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
sndio_savesettings(void *dp, prefs_node *f)
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
st_out_driver driver_out_sndio = {
|
||||
{
|
||||
"Sndio Output",
|
||||
sndio_new,
|
||||
sndio_destroy,
|
||||
sndio_open,
|
||||
sndio_release,
|
||||
|
||||
sndio_getwidget,
|
||||
sndio_loadsettings,
|
||||
sndio_savesettings,
|
||||
},
|
||||
|
||||
sndio_get_play_time,
|
||||
sndio_get_play_rate
|
||||
};
|
@ -1,388 +0,0 @@
|
||||
/*
|
||||
* The Real SoundTracker - Sun (input) driver.
|
||||
*
|
||||
* Copyright (C) 2001 CubeSoft Communications, Inc.
|
||||
* <http://www.csoft.org>
|
||||
*
|
||||
* 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 the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
#include <config.h>
|
||||
|
||||
#if DRIVER_SUN
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <errno.h>
|
||||
|
||||
#include <fcntl.h>
|
||||
#include <sys/ioctl.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/audioio.h>
|
||||
#include <unistd.h>
|
||||
#include <sys/time.h>
|
||||
|
||||
#include <glib.h>
|
||||
#include <gtk/gtk.h>
|
||||
|
||||
#include "i18n.h"
|
||||
#include "driver-in.h"
|
||||
#include "mixer.h"
|
||||
#include "errors.h"
|
||||
#include "gui-subs.h"
|
||||
|
||||
typedef struct sun_driver {
|
||||
GtkWidget *configwidget;
|
||||
GtkWidget *prefs_devaudio_w;
|
||||
|
||||
int playrate;
|
||||
int stereo;
|
||||
int bits;
|
||||
int bufsize;
|
||||
int numbufs;
|
||||
int mf;
|
||||
|
||||
pthread_mutex_t configmutex;
|
||||
|
||||
int soundfd;
|
||||
void *sndbuf;
|
||||
int polltag;
|
||||
|
||||
audio_info_t info;
|
||||
gchar p_devaudio[128];
|
||||
int p_resolution;
|
||||
int p_channels;
|
||||
int p_mixfreq;
|
||||
int p_bufsize;
|
||||
} sun_driver;
|
||||
|
||||
static void
|
||||
sun_poll_ready_sampling (gpointer data,
|
||||
gint source,
|
||||
GdkInputCondition condition)
|
||||
{
|
||||
sun_driver * const d = data;
|
||||
|
||||
printf("sampling...\n");
|
||||
|
||||
read(d->soundfd, d->sndbuf, d->bufsize);
|
||||
|
||||
sample_editor_sampled(d->sndbuf, d->bufsize, d->playrate, d->mf);
|
||||
}
|
||||
|
||||
static void
|
||||
prefs_init_from_structure (sun_driver *d)
|
||||
{
|
||||
gtk_entry_set_text(GTK_ENTRY(d->prefs_devaudio_w), d->p_devaudio);
|
||||
}
|
||||
|
||||
static void
|
||||
sun_devaudio_changed (void *a,
|
||||
sun_driver *d)
|
||||
{
|
||||
strncpy(d->p_devaudio, gtk_entry_get_text(GTK_ENTRY(d->prefs_devaudio_w)),
|
||||
127);
|
||||
}
|
||||
|
||||
static void
|
||||
sun_make_config_widgets (sun_driver *d)
|
||||
{
|
||||
GtkWidget *thing, *mainbox, *box2;
|
||||
|
||||
d->configwidget = mainbox = gtk_vbox_new(FALSE, 2);
|
||||
|
||||
thing = gtk_label_new(
|
||||
_("These changes won't take effect until you restart sampling."));
|
||||
gtk_widget_show(thing);
|
||||
gtk_box_pack_start(GTK_BOX(mainbox), thing, FALSE, TRUE, 0);
|
||||
|
||||
thing = gtk_hseparator_new();
|
||||
gtk_widget_show(thing);
|
||||
gtk_box_pack_start(GTK_BOX(mainbox), thing, FALSE, TRUE, 0);
|
||||
|
||||
box2 = gtk_hbox_new(FALSE, 4);
|
||||
gtk_widget_show(box2);
|
||||
gtk_box_pack_start(GTK_BOX(mainbox), box2, FALSE, TRUE, 0);
|
||||
|
||||
thing = gtk_label_new(_("Input device (e.g. '/dev/audio'):"));
|
||||
gtk_widget_show(thing);
|
||||
gtk_box_pack_start(GTK_BOX(box2), thing, FALSE, TRUE, 0);
|
||||
add_empty_hbox(box2);
|
||||
thing = gtk_entry_new_with_max_length(126);
|
||||
gtk_widget_show(thing);
|
||||
gtk_box_pack_start(GTK_BOX(box2), thing, FALSE, TRUE, 0);
|
||||
gtk_entry_set_text(GTK_ENTRY(thing), d->p_devaudio);
|
||||
gtk_signal_connect_after(GTK_OBJECT(thing), "changed",
|
||||
GTK_SIGNAL_FUNC(sun_devaudio_changed), d);
|
||||
d->prefs_devaudio_w = thing;
|
||||
|
||||
prefs_init_from_structure(d);
|
||||
}
|
||||
|
||||
static GtkWidget *
|
||||
sun_getwidget (void *dp)
|
||||
{
|
||||
sun_driver * const d = dp;
|
||||
|
||||
return d->configwidget;
|
||||
}
|
||||
|
||||
static void *
|
||||
sun_new (void)
|
||||
{
|
||||
sun_driver *d = g_new(sun_driver, 1);
|
||||
|
||||
strcpy(d->p_devaudio, "/dev/audio");
|
||||
d->p_mixfreq = 44100;
|
||||
d->p_channels = 1;
|
||||
d->p_resolution = 16;
|
||||
d->p_bufsize = 9;
|
||||
d->soundfd = -1;
|
||||
d->sndbuf = NULL;
|
||||
d->polltag = 0;
|
||||
if (pthread_mutex_init(&d->configmutex, NULL) != 0) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
sun_make_config_widgets(d);
|
||||
|
||||
return d;
|
||||
}
|
||||
|
||||
static void
|
||||
sun_destroy (void *dp)
|
||||
{
|
||||
sun_driver * const d = dp;
|
||||
|
||||
gtk_widget_destroy(d->configwidget);
|
||||
pthread_mutex_destroy(&d->configmutex);
|
||||
|
||||
g_free(dp);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
sun_try_format (sun_driver *d, int fmt, int precision)
|
||||
{
|
||||
audio_encoding_t enc;
|
||||
|
||||
for(enc.index = 0; ioctl(d->soundfd, AUDIO_GETENC, &enc) == 0;
|
||||
enc.index++) {
|
||||
if (enc.encoding == fmt && enc.precision == precision) {
|
||||
d->info.record.encoding = enc.encoding;
|
||||
d->info.record.precision = enc.precision;
|
||||
if (ioctl(d->soundfd, AUDIO_SETINFO, &d->info) == 0) {
|
||||
return TRUE;
|
||||
} else {
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
sun_try_channels (sun_driver *d, int nch)
|
||||
{
|
||||
d->info.record.channels = nch;
|
||||
if(ioctl(d->soundfd, AUDIO_SETINFO, &d->info) != 0) {
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static void
|
||||
sun_release (void *dp)
|
||||
{
|
||||
sun_driver * const d = dp;
|
||||
|
||||
free(d->sndbuf);
|
||||
d->sndbuf = NULL;
|
||||
|
||||
if(d->polltag != 0) {
|
||||
gdk_input_remove(d->polltag);
|
||||
d->polltag = 0;
|
||||
}
|
||||
|
||||
if(d->soundfd >= 0) {
|
||||
close(d->soundfd);
|
||||
d->soundfd = -1;
|
||||
}
|
||||
}
|
||||
|
||||
static gboolean
|
||||
sun_open (void *dp)
|
||||
{
|
||||
char buf[256];
|
||||
sun_driver * const d = dp;
|
||||
int mf, i, fullduplex;
|
||||
|
||||
AUDIO_INITINFO(&d->info);
|
||||
|
||||
d->soundfd = open(d->p_devaudio, O_RDONLY|O_NONBLOCK);
|
||||
if(d->soundfd < 0) {
|
||||
sprintf(buf, _("%s: %s"), d->p_devaudio, strerror(errno));
|
||||
goto out;
|
||||
}
|
||||
|
||||
fullduplex = 1;
|
||||
if (ioctl(d->soundfd, AUDIO_SETFD, &fullduplex) != 0) {
|
||||
fprintf(stderr, "%s: does not support full-duplex operation\n",
|
||||
d->p_devaudio);
|
||||
fullduplex = 0;
|
||||
}
|
||||
|
||||
d->info.mode = AUMODE_RECORD;
|
||||
if(ioctl(d->soundfd, AUDIO_SETINFO, &d->info) != 0) {
|
||||
sprintf(buf, _("%s: Cannot record (%s)"), d->p_devaudio,
|
||||
strerror(errno));
|
||||
goto out;
|
||||
}
|
||||
|
||||
d->playrate = d->p_mixfreq;
|
||||
d->info.record.sample_rate = d->playrate;
|
||||
if(ioctl(d->soundfd, AUDIO_SETINFO, &d->info) != 0) {
|
||||
sprintf(buf, _("%s: Cannot handle %dHz (%s)"), d->p_devaudio,
|
||||
d->playrate, strerror(errno));
|
||||
goto out;
|
||||
}
|
||||
|
||||
d->bits = 0;
|
||||
mf = 0;
|
||||
if(d->p_resolution == 16) {
|
||||
if(sun_try_format(d, AUDIO_ENCODING_SLINEAR_LE, 16)) {
|
||||
d->bits = 16;
|
||||
mf = ST_MIXER_FORMAT_S16_LE;
|
||||
} else if(sun_try_format(d, AUDIO_ENCODING_SLINEAR_BE, 16)) {
|
||||
d->bits = 16;
|
||||
mf = ST_MIXER_FORMAT_S16_BE;
|
||||
} else if(sun_try_format(d, AUDIO_ENCODING_ULINEAR_LE, 16)) {
|
||||
d->bits = 16;
|
||||
mf = ST_MIXER_FORMAT_U16_LE;
|
||||
} else if(sun_try_format(d, AUDIO_ENCODING_ULINEAR_BE, 16)) {
|
||||
d->bits = 16;
|
||||
mf = ST_MIXER_FORMAT_U16_BE;
|
||||
}
|
||||
}
|
||||
if(d->bits != 16) {
|
||||
if(sun_try_format(d, AUDIO_ENCODING_SLINEAR, 8)) {
|
||||
d->bits = 8;
|
||||
mf = ST_MIXER_FORMAT_S8;
|
||||
} else if(sun_try_format(d, AUDIO_ENCODING_PCM8, 8)) {
|
||||
d->bits = 8;
|
||||
mf = ST_MIXER_FORMAT_U8;
|
||||
} else {
|
||||
sprintf(buf, _("%s: Required sound encoding not supported.\n"),
|
||||
d->p_devaudio);
|
||||
goto out;
|
||||
}
|
||||
}
|
||||
|
||||
if(d->p_channels == 2 && sun_try_channels(d, 2)) {
|
||||
d->stereo = 1;
|
||||
mf |= ST_MIXER_FORMAT_STEREO;
|
||||
} else if(sun_try_channels(d, 1)) {
|
||||
d->stereo = 0;
|
||||
}
|
||||
|
||||
d->mf = mf;
|
||||
|
||||
i = 0x00040000 + d->p_bufsize + d->stereo + (d->bits / 8 - 1);
|
||||
d->info.blocksize = 1 << (i & 0xffff);
|
||||
d->info.record.buffer_size = d->info.blocksize;
|
||||
d->info.hiwat = ((unsigned)i >> 16) & 0x7fff;
|
||||
printf("input blocksize %d hiwat %d\n", d->info.blocksize, d->info.hiwat);
|
||||
d->info.hiwat = 1;
|
||||
if (d->info.hiwat == 0) {
|
||||
d->info.hiwat = 65536;
|
||||
}
|
||||
if (ioctl(d->soundfd, AUDIO_SETINFO, &d->info) != 0) {
|
||||
sprintf(buf, _("%s: Cannot set block size (%s)"), d->p_devaudio,
|
||||
strerror(errno));
|
||||
goto out;
|
||||
}
|
||||
|
||||
if (ioctl(d->soundfd, AUDIO_GETINFO, &d->info) != 0) {
|
||||
sprintf(buf, _("%s: %s"), d->p_devaudio, strerror(errno));
|
||||
goto out;
|
||||
}
|
||||
d->bufsize = d->info.blocksize;
|
||||
d->numbufs = d->info.hiwat;
|
||||
d->sndbuf = calloc(1, d->bufsize);
|
||||
|
||||
if(d->stereo == 1) {
|
||||
d->bufsize /= 2;
|
||||
}
|
||||
if(d->bits == 16) {
|
||||
d->bufsize /= 2;
|
||||
}
|
||||
|
||||
printf("reading...\n");
|
||||
read(d->soundfd, d->sndbuf, d->bufsize);
|
||||
printf("done\n");
|
||||
|
||||
d->polltag = gdk_input_add(d->soundfd, GDK_INPUT_READ,
|
||||
sun_poll_ready_sampling, d);
|
||||
|
||||
return TRUE;
|
||||
|
||||
out:
|
||||
error_error(buf);
|
||||
sun_release(dp);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
sun_loadsettings (void *dp,
|
||||
prefs_node *f)
|
||||
{
|
||||
sun_driver * const d = dp;
|
||||
|
||||
prefs_get_string(f, "sun-devaudio", d->p_devaudio);
|
||||
|
||||
prefs_init_from_structure(d);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
sun_savesettings (void *dp,
|
||||
prefs_node *f)
|
||||
{
|
||||
sun_driver * const d = dp;
|
||||
|
||||
prefs_put_string(f, "sun-devaudio", d->p_devaudio);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
st_in_driver driver_in_sun = {
|
||||
{ "Sun Sampling",
|
||||
|
||||
sun_new,
|
||||
sun_destroy,
|
||||
|
||||
sun_open,
|
||||
sun_release,
|
||||
|
||||
sun_getwidget,
|
||||
sun_loadsettings,
|
||||
sun_savesettings,
|
||||
}
|
||||
};
|
||||
|
||||
#endif /* DRIVER_SUN */
|
@ -1,576 +0,0 @@
|
||||
|
||||
/*
|
||||
* The Real SoundTracker - Sun (output) driver.
|
||||
*
|
||||
* Copyright (C) 2001 CubeSoft Communications, Inc.
|
||||
* <http://www.csoft.org>
|
||||
*
|
||||
* 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 the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
#include <config.h>
|
||||
|
||||
#if DRIVER_SUN
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <errno.h>
|
||||
|
||||
#include <fcntl.h>
|
||||
#include <sys/ioctl.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/audioio.h>
|
||||
#include <unistd.h>
|
||||
#include <sys/time.h>
|
||||
|
||||
#include <glib.h>
|
||||
#include <gtk/gtk.h>
|
||||
|
||||
#include "i18n.h"
|
||||
#include "driver-out.h"
|
||||
#include "mixer.h"
|
||||
#include "errors.h"
|
||||
#include "gui-subs.h"
|
||||
#include "preferences.h"
|
||||
|
||||
typedef struct sun_driver {
|
||||
GtkWidget *configwidget;
|
||||
GtkWidget *prefs_devaudio_w;
|
||||
GtkWidget *prefs_resolution_w[2];
|
||||
GtkWidget *prefs_channels_w[2];
|
||||
GtkWidget *prefs_mixfreq_w[4];
|
||||
GtkWidget *bufsizespin_w, *bufsizelabel_w, *estimatelabel_w;
|
||||
|
||||
int playrate;
|
||||
int stereo;
|
||||
int bits;
|
||||
int fragsize;
|
||||
int numfrags;
|
||||
int mf;
|
||||
gboolean realtimecaps;
|
||||
|
||||
pthread_mutex_t configmutex;
|
||||
|
||||
int soundfd;
|
||||
void *sndbuf;
|
||||
gpointer polltag;
|
||||
int firstpoll;
|
||||
|
||||
gchar p_devaudio[128];
|
||||
int p_resolution;
|
||||
int p_channels;
|
||||
int p_mixfreq;
|
||||
int p_fragsize;
|
||||
|
||||
double outtime;
|
||||
double playtime;
|
||||
|
||||
audio_info_t info;
|
||||
} sun_driver;
|
||||
|
||||
static const int mixfreqs[] = { 8000, 16000, 22050, 44100, -1 };
|
||||
|
||||
static void
|
||||
sun_poll_ready_playing (gpointer data,
|
||||
gint source,
|
||||
GdkInputCondition condition)
|
||||
{
|
||||
sun_driver * const d = data;
|
||||
static int size;
|
||||
static struct timeval tv;
|
||||
|
||||
if(!d->firstpoll) {
|
||||
size = (d->stereo + 1) * (d->bits / 8) * d->fragsize;
|
||||
write(d->soundfd, d->sndbuf, size);
|
||||
|
||||
if(!d->realtimecaps) {
|
||||
gettimeofday(&tv, NULL);
|
||||
d->outtime = tv.tv_sec + tv.tv_usec / 1e6;
|
||||
d->playtime += (double) d->fragsize / d->playrate;
|
||||
}
|
||||
}
|
||||
|
||||
d->firstpoll = FALSE;
|
||||
|
||||
audio_mix(d->sndbuf, d->fragsize, d->playrate, d->mf);
|
||||
}
|
||||
|
||||
static void
|
||||
prefs_init_from_structure (sun_driver *d)
|
||||
{
|
||||
int i;
|
||||
|
||||
gtk_toggle_button_set_state(
|
||||
GTK_TOGGLE_BUTTON(d->prefs_resolution_w[d->p_resolution / 8 - 1]),
|
||||
TRUE);
|
||||
gtk_toggle_button_set_state(
|
||||
GTK_TOGGLE_BUTTON(d->prefs_channels_w[d->p_channels - 1]),
|
||||
TRUE);
|
||||
|
||||
for(i = 0; mixfreqs[i] != -1; i++) {
|
||||
if(d->p_mixfreq == mixfreqs[i])
|
||||
break;
|
||||
}
|
||||
if(mixfreqs[i] == -1) {
|
||||
i = 3;
|
||||
}
|
||||
gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(d->prefs_mixfreq_w[i]), TRUE);
|
||||
gtk_spin_button_set_value(GTK_SPIN_BUTTON(d->bufsizespin_w), d->p_fragsize);
|
||||
|
||||
gtk_entry_set_text(GTK_ENTRY(d->prefs_devaudio_w), d->p_devaudio);
|
||||
}
|
||||
|
||||
static void
|
||||
prefs_update_estimate (sun_driver *d)
|
||||
{
|
||||
char buf[64];
|
||||
|
||||
sprintf(buf, _("Estimated audio delay: %f milliseconds"),
|
||||
(double)(1000 * (1 << d->p_fragsize)) / d->p_mixfreq);
|
||||
gtk_label_set_text(GTK_LABEL(d->estimatelabel_w), buf);
|
||||
}
|
||||
|
||||
static void
|
||||
prefs_resolution_changed (void *a,
|
||||
sun_driver *d)
|
||||
{
|
||||
d->p_resolution = (find_current_toggle(d->prefs_resolution_w, 2) + 1) * 8;
|
||||
}
|
||||
|
||||
static void
|
||||
prefs_channels_changed (void *a,
|
||||
sun_driver *d)
|
||||
{
|
||||
d->p_channels = find_current_toggle(d->prefs_channels_w, 2) + 1;
|
||||
}
|
||||
|
||||
static void
|
||||
prefs_mixfreq_changed (void *a,
|
||||
sun_driver *d)
|
||||
{
|
||||
d->p_mixfreq = mixfreqs[find_current_toggle(d->prefs_mixfreq_w, 4)];
|
||||
prefs_update_estimate(d);
|
||||
}
|
||||
|
||||
static void
|
||||
prefs_fragsize_changed (GtkSpinButton *w,
|
||||
sun_driver *d)
|
||||
{
|
||||
char buf[30];
|
||||
|
||||
d->p_fragsize = gtk_spin_button_get_value_as_int(w);
|
||||
|
||||
sprintf(buf, _("(%d samples)"), 1 << d->p_fragsize);
|
||||
gtk_label_set_text(GTK_LABEL(d->bufsizelabel_w), buf);
|
||||
prefs_update_estimate(d);
|
||||
}
|
||||
|
||||
static void
|
||||
sun_devaudio_changed (void *a,
|
||||
sun_driver *d)
|
||||
{
|
||||
strncpy(d->p_devaudio, gtk_entry_get_text(GTK_ENTRY(d->prefs_devaudio_w)),
|
||||
127);
|
||||
}
|
||||
|
||||
static void
|
||||
sun_make_config_widgets (sun_driver *d)
|
||||
{
|
||||
GtkWidget *thing, *mainbox, *box2, *box3;
|
||||
static const char *resolutionlabels[] = { "8 bits", "16 bits", NULL };
|
||||
static const char *channelslabels[] = { "Mono", "Stereo", NULL };
|
||||
static const char *mixfreqlabels[] = { "8000", "16000", "22050", "44100",
|
||||
NULL };
|
||||
|
||||
d->configwidget = mainbox = gtk_vbox_new(FALSE, 2);
|
||||
|
||||
thing = gtk_label_new(
|
||||
_("These changes won't take effect until you restart playing."));
|
||||
gtk_widget_show(thing);
|
||||
gtk_box_pack_start(GTK_BOX(mainbox), thing, FALSE, TRUE, 0);
|
||||
|
||||
thing = gtk_hseparator_new();
|
||||
gtk_widget_show(thing);
|
||||
gtk_box_pack_start(GTK_BOX(mainbox), thing, FALSE, TRUE, 0);
|
||||
|
||||
box2 = gtk_hbox_new(FALSE, 4);
|
||||
gtk_widget_show(box2);
|
||||
gtk_box_pack_start(GTK_BOX(mainbox), box2, FALSE, TRUE, 0);
|
||||
|
||||
thing = gtk_label_new(_("Output device (e.g. '/dev/audio'):"));
|
||||
gtk_widget_show(thing);
|
||||
gtk_box_pack_start(GTK_BOX(box2), thing, FALSE, TRUE, 0);
|
||||
add_empty_hbox(box2);
|
||||
thing = gtk_entry_new_with_max_length(126);
|
||||
gtk_widget_show(thing);
|
||||
gtk_box_pack_start(GTK_BOX(box2), thing, FALSE, TRUE, 0);
|
||||
gtk_entry_set_text(GTK_ENTRY(thing), d->p_devaudio);
|
||||
gtk_signal_connect_after(GTK_OBJECT(thing), "changed",
|
||||
GTK_SIGNAL_FUNC(sun_devaudio_changed), d);
|
||||
d->prefs_devaudio_w = thing;
|
||||
|
||||
box2 = gtk_hbox_new(FALSE, 4);
|
||||
gtk_widget_show(box2);
|
||||
gtk_box_pack_start(GTK_BOX(mainbox), box2, FALSE, TRUE, 0);
|
||||
|
||||
thing = gtk_label_new(_("Resolution:"));
|
||||
gtk_widget_show(thing);
|
||||
gtk_box_pack_start(GTK_BOX(box2), thing, FALSE, TRUE, 0);
|
||||
add_empty_hbox(box2);
|
||||
make_radio_group_full(resolutionlabels, box2, d->prefs_resolution_w,
|
||||
FALSE, TRUE, (void(*)())prefs_resolution_changed, d);
|
||||
|
||||
box2 = gtk_hbox_new(FALSE, 4);
|
||||
gtk_widget_show(box2);
|
||||
gtk_box_pack_start(GTK_BOX(mainbox), box2, FALSE, TRUE, 0);
|
||||
|
||||
thing = gtk_label_new(_("Channels:"));
|
||||
gtk_widget_show(thing);
|
||||
gtk_box_pack_start(GTK_BOX(box2), thing, FALSE, TRUE, 0);
|
||||
add_empty_hbox(box2);
|
||||
make_radio_group_full(channelslabels, box2, d->prefs_channels_w,
|
||||
FALSE, TRUE, (void(*)())prefs_channels_changed, d);
|
||||
|
||||
box2 = gtk_hbox_new(FALSE, 4);
|
||||
gtk_widget_show(box2);
|
||||
gtk_box_pack_start(GTK_BOX(mainbox), box2, FALSE, TRUE, 0);
|
||||
|
||||
thing = gtk_label_new(_("Frequency [Hz]:"));
|
||||
gtk_widget_show(thing);
|
||||
gtk_box_pack_start(GTK_BOX(box2), thing, FALSE, TRUE, 0);
|
||||
add_empty_hbox(box2);
|
||||
make_radio_group_full(mixfreqlabels, box2, d->prefs_mixfreq_w,
|
||||
FALSE, TRUE, (void(*)())prefs_mixfreq_changed, d);
|
||||
|
||||
box2 = gtk_hbox_new(FALSE, 4);
|
||||
gtk_widget_show(box2);
|
||||
gtk_box_pack_start(GTK_BOX(mainbox), box2, FALSE, TRUE, 0);
|
||||
|
||||
thing = gtk_label_new(_("Buffer Size:"));
|
||||
gtk_widget_show(thing);
|
||||
gtk_box_pack_start(GTK_BOX(box2), thing, FALSE, TRUE, 0);
|
||||
add_empty_hbox(box2);
|
||||
|
||||
box3 = gtk_vbox_new(FALSE, 2);
|
||||
gtk_box_pack_start(GTK_BOX(box2), box3, FALSE, TRUE, 0);
|
||||
gtk_widget_show(box3);
|
||||
|
||||
d->bufsizespin_w = thing = gtk_spin_button_new(GTK_ADJUSTMENT(
|
||||
gtk_adjustment_new(5.0, 5.0, 15.0, 1.0, 1.0, 0.0)), 0, 0);
|
||||
gtk_box_pack_start(GTK_BOX(box3), thing, FALSE, TRUE, 0);
|
||||
gtk_widget_show(thing);
|
||||
gtk_signal_connect (GTK_OBJECT(thing), "changed",
|
||||
GTK_SIGNAL_FUNC(prefs_fragsize_changed), d);
|
||||
|
||||
d->bufsizelabel_w = thing = gtk_label_new("");
|
||||
gtk_box_pack_start(GTK_BOX(box3), thing, FALSE, TRUE, 0);
|
||||
gtk_widget_show(thing);
|
||||
|
||||
box2 = gtk_hbox_new(FALSE, 4);
|
||||
gtk_widget_show(box2);
|
||||
gtk_box_pack_start(GTK_BOX(mainbox), box2, FALSE, TRUE, 0);
|
||||
|
||||
add_empty_hbox(box2);
|
||||
d->estimatelabel_w = thing = gtk_label_new("");
|
||||
gtk_box_pack_start(GTK_BOX(box2), thing, FALSE, TRUE, 0);
|
||||
gtk_widget_show(thing);
|
||||
add_empty_hbox(box2);
|
||||
|
||||
prefs_init_from_structure(d);
|
||||
}
|
||||
|
||||
static GtkWidget *
|
||||
sun_getwidget (void *dp)
|
||||
{
|
||||
sun_driver * const d = dp;
|
||||
|
||||
return d->configwidget;
|
||||
}
|
||||
|
||||
static void *
|
||||
sun_new (void)
|
||||
{
|
||||
sun_driver *d = g_new(sun_driver, 1);
|
||||
|
||||
strcpy(d->p_devaudio, "/dev/audio");
|
||||
d->p_mixfreq = 44100;
|
||||
d->p_channels = 2;
|
||||
d->p_resolution = 16;
|
||||
d->p_fragsize = 11; // 2048;
|
||||
d->soundfd = -1;
|
||||
d->sndbuf = NULL;
|
||||
d->polltag = NULL;
|
||||
if (pthread_mutex_init(&d->configmutex, NULL) != 0) {
|
||||
return (NULL);
|
||||
}
|
||||
|
||||
sun_make_config_widgets(d);
|
||||
|
||||
return d;
|
||||
}
|
||||
|
||||
static void
|
||||
sun_destroy (void *dp)
|
||||
{
|
||||
sun_driver * const d = dp;
|
||||
|
||||
gtk_widget_destroy(d->configwidget);
|
||||
pthread_mutex_destroy(&d->configmutex);
|
||||
|
||||
g_free(dp);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
sun_try_format (sun_driver *d, int fmt, int precision)
|
||||
{
|
||||
audio_encoding_t enc;
|
||||
|
||||
for(enc.index = 0; ioctl(d->soundfd, AUDIO_GETENC, &enc) == 0;
|
||||
enc.index++) {
|
||||
if (enc.encoding == fmt && enc.precision == precision) {
|
||||
d->info.play.encoding = enc.encoding;
|
||||
d->info.play.precision = enc.precision;
|
||||
if (ioctl(d->soundfd, AUDIO_SETINFO, &d->info) == 0) {
|
||||
return TRUE;
|
||||
} else {
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
sun_try_channels (sun_driver *d, int nch)
|
||||
{
|
||||
d->info.play.channels = nch;
|
||||
if(ioctl(d->soundfd, AUDIO_SETINFO, &d->info) != 0) {
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static void
|
||||
sun_release (void *dp)
|
||||
{
|
||||
sun_driver * const d = dp;
|
||||
|
||||
free(d->sndbuf);
|
||||
d->sndbuf = NULL;
|
||||
|
||||
audio_poll_remove(d->polltag);
|
||||
d->polltag = NULL;
|
||||
|
||||
if(d->soundfd >= 0) {
|
||||
ioctl(d->soundfd, AUDIO_FLUSH, NULL);
|
||||
close(d->soundfd);
|
||||
d->soundfd = -1;
|
||||
}
|
||||
}
|
||||
|
||||
static gboolean
|
||||
sun_open (void *dp)
|
||||
{
|
||||
char buf[256];
|
||||
sun_driver * const d = dp;
|
||||
int mf = 0, i;
|
||||
|
||||
AUDIO_INITINFO(&d->info);
|
||||
|
||||
d->soundfd = open(d->p_devaudio, O_WRONLY);
|
||||
if(d->soundfd < 0) {
|
||||
sprintf(buf, _("%s: %s"), d->p_devaudio, strerror(errno));
|
||||
goto out;
|
||||
}
|
||||
|
||||
d->info.mode = AUMODE_PLAY;
|
||||
if(ioctl(d->soundfd, AUDIO_SETINFO, &d->info) != 0) {
|
||||
sprintf(buf, _("%s: Cannot play (%s)"), d->p_devaudio, strerror(errno));
|
||||
goto out;
|
||||
}
|
||||
|
||||
d->playrate = d->p_mixfreq;
|
||||
d->info.play.sample_rate = d->playrate;
|
||||
if(ioctl(d->soundfd, AUDIO_SETINFO, &d->info) != 0) {
|
||||
sprintf(buf, _("%s: Cannot handle %dHz (%s)"), d->p_devaudio,
|
||||
d->playrate, strerror(errno));
|
||||
goto out;
|
||||
}
|
||||
|
||||
d->bits = 0;
|
||||
if(d->p_resolution == 16) {
|
||||
if(sun_try_format(d, AUDIO_ENCODING_SLINEAR_LE, 16)) {
|
||||
d->bits = 16;
|
||||
mf = ST_MIXER_FORMAT_S16_LE;
|
||||
} else if(sun_try_format(d, AUDIO_ENCODING_SLINEAR_BE, 16)) {
|
||||
d->bits = 16;
|
||||
mf = ST_MIXER_FORMAT_S16_BE;
|
||||
} else if(sun_try_format(d, AUDIO_ENCODING_ULINEAR_LE, 16)) {
|
||||
d->bits = 16;
|
||||
mf = ST_MIXER_FORMAT_U16_LE;
|
||||
} else if(sun_try_format(d, AUDIO_ENCODING_ULINEAR_BE, 16)) {
|
||||
d->bits = 16;
|
||||
mf = ST_MIXER_FORMAT_U16_BE;
|
||||
}
|
||||
}
|
||||
if(d->bits != 16) {
|
||||
if(sun_try_format(d, AUDIO_ENCODING_SLINEAR, 8)) {
|
||||
d->bits = 8;
|
||||
mf = ST_MIXER_FORMAT_S8;
|
||||
} else if(sun_try_format(d, AUDIO_ENCODING_PCM8, 8)) {
|
||||
d->bits = 8;
|
||||
mf = ST_MIXER_FORMAT_U8;
|
||||
} else {
|
||||
sprintf(buf, _("%s: Required sound encoding not supported.\n"),
|
||||
d->p_devaudio);
|
||||
goto out;
|
||||
}
|
||||
}
|
||||
|
||||
if(d->p_channels == 2 && sun_try_channels(d, 2)) {
|
||||
d->stereo = 1;
|
||||
mf |= ST_MIXER_FORMAT_STEREO;
|
||||
} else if(sun_try_channels(d, 1)) {
|
||||
d->stereo = 0;
|
||||
}
|
||||
|
||||
|
||||
d->mf = mf;
|
||||
|
||||
i = 0x00020000 + d->p_fragsize + d->stereo + (d->bits / 8 - 1);
|
||||
d->info.blocksize = 1 << (i & 0xffff);
|
||||
d->info.hiwat = ((unsigned)i >> 16) & 0x7fff;
|
||||
if (d->info.hiwat == 0) {
|
||||
d->info.hiwat = 65536;
|
||||
}
|
||||
if (ioctl(d->soundfd, AUDIO_SETINFO, &d->info) != 0) {
|
||||
sprintf(buf, _("%s: Cannot set block size (%s)"), d->p_devaudio,
|
||||
strerror(errno));
|
||||
goto out;
|
||||
}
|
||||
|
||||
if (ioctl(d->soundfd, AUDIO_GETINFO, &d->info) != 0) {
|
||||
sprintf(buf, _("%s: %s"), d->p_devaudio, strerror(errno));
|
||||
goto out;
|
||||
}
|
||||
d->fragsize = d->info.blocksize;
|
||||
d->numfrags = d->info.hiwat;
|
||||
|
||||
#if 0
|
||||
if (ioctl(d->soundfd, AUDIO_GETPROPS, &i) == 0) {
|
||||
/* XXX use only if we are recording. */
|
||||
d->realtimecaps = i & AUDIO_PROP_FULLDUPLEX;
|
||||
}
|
||||
#endif
|
||||
|
||||
d->sndbuf = calloc(1, d->fragsize);
|
||||
|
||||
if(d->stereo == 1) {
|
||||
d->fragsize /= 2;
|
||||
}
|
||||
if(d->bits == 16) {
|
||||
d->fragsize /= 2;
|
||||
}
|
||||
|
||||
d->polltag = audio_poll_add(d->soundfd, GDK_INPUT_WRITE,
|
||||
sun_poll_ready_playing, d);
|
||||
d->firstpoll = TRUE;
|
||||
d->playtime = 0;
|
||||
|
||||
return TRUE;
|
||||
|
||||
out:
|
||||
error_error(buf);
|
||||
sun_release(dp);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static double
|
||||
sun_get_play_time (void *dp)
|
||||
{
|
||||
sun_driver * const d = dp;
|
||||
|
||||
if(d->realtimecaps) {
|
||||
static audio_offset_t ooffs;
|
||||
|
||||
ioctl(d->soundfd, AUDIO_GETOOFFS, &ooffs);
|
||||
|
||||
return (double)ooffs.samples /
|
||||
(d->stereo + 1) / (d->bits / 8) / d->playrate;
|
||||
} else {
|
||||
struct timeval tv;
|
||||
double curtime;
|
||||
|
||||
gettimeofday(&tv, NULL);
|
||||
curtime = tv.tv_sec + tv.tv_usec / 1e6;
|
||||
|
||||
return d->playtime + curtime - d->outtime -
|
||||
d->numfrags * ((double) d->fragsize / d->playrate);
|
||||
}
|
||||
}
|
||||
|
||||
static gboolean
|
||||
sun_loadsettings (void *dp,
|
||||
prefs_node *f)
|
||||
{
|
||||
sun_driver * const d = dp;
|
||||
|
||||
prefs_get_string(f, "sun-devaudio", d->p_devaudio);
|
||||
prefs_get_int(f, "sun-resolution", &d->p_resolution);
|
||||
prefs_get_int(f, "sun-channels", &d->p_channels);
|
||||
prefs_get_int(f, "sun-mixfreq", &d->p_mixfreq);
|
||||
prefs_get_int(f, "sun-fragsize", &d->p_fragsize);
|
||||
|
||||
prefs_init_from_structure(d);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
sun_savesettings (void *dp,
|
||||
prefs_node *f)
|
||||
{
|
||||
sun_driver * const d = dp;
|
||||
|
||||
prefs_put_string(f, "sun-devaudio", d->p_devaudio);
|
||||
prefs_put_int(f, "sun-resolution", d->p_resolution);
|
||||
prefs_put_int(f, "sun-channels", d->p_channels);
|
||||
prefs_put_int(f, "sun-mixfreq", d->p_mixfreq);
|
||||
prefs_put_int(f, "sun-fragsize", d->p_fragsize);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
st_out_driver driver_out_sun = {
|
||||
{ "Sun Output",
|
||||
|
||||
sun_new,
|
||||
sun_destroy,
|
||||
|
||||
sun_open,
|
||||
sun_release,
|
||||
|
||||
sun_getwidget,
|
||||
sun_loadsettings,
|
||||
sun_savesettings,
|
||||
},
|
||||
|
||||
sun_get_play_time,
|
||||
};
|
||||
|
||||
#endif /* DRIVER_SUN */
|
@ -1,16 +0,0 @@
|
||||
$OpenBSD: patch-FAQ,v 1.2 2002/05/30 09:08:28 wcobb Exp $
|
||||
--- FAQ.orig Tue May 21 19:23:27 2002
|
||||
+++ FAQ Tue May 21 19:23:41 2002
|
||||
@@ -2,12 +2,6 @@
|
||||
FAQ
|
||||
====
|
||||
|
||||
-QQQQ: SoundTracker crashes as soon as I start it or as I press a
|
||||
-button in its window, giving weird X errors.
|
||||
-
|
||||
-a: You don't have thread-safe X libraries (you have a libc5
|
||||
-system). Read the INSTALL file.
|
||||
-
|
||||
------------------------------------------------------------------------
|
||||
|
||||
QQQQ: SoundTracker complains about not being able to open /dev/dsp.
|
@ -1,12 +0,0 @@
|
||||
$OpenBSD: patch-Makefile_in,v 1.1 2002/05/30 09:08:28 wcobb Exp $
|
||||
--- Makefile.in.orig Mon May 20 13:50:54 2002
|
||||
+++ Makefile.in Tue May 21 19:12:41 2002
|
||||
@@ -97,7 +97,7 @@ VERSION = @VERSION@
|
||||
gnomepath = @gnomepath@
|
||||
sedpath = @sedpath@
|
||||
|
||||
-SUBDIRS = intl po doc app
|
||||
+SUBDIRS = intl po app
|
||||
|
||||
EXTRA_DIST = TODO FAQ ABOUT-NLS soundtracker.spec soundtracker.desktop soundtracker_splash.png
|
||||
|
@ -1,11 +0,0 @@
|
||||
$OpenBSD: patch-acconfig_h,v 1.2 2002/05/30 09:08:28 wcobb Exp $
|
||||
--- acconfig.h.orig Mon May 20 13:26:33 2002
|
||||
+++ acconfig.h Tue May 21 18:21:30 2002
|
||||
@@ -8,6 +8,7 @@
|
||||
#undef DRIVER_ALSA_050
|
||||
#undef DRIVER_ESD
|
||||
#undef DRIVER_SGI
|
||||
+#undef DRIVER_SUN
|
||||
#undef USE_GNOME
|
||||
#undef NO_AUDIOFILE
|
||||
#undef NO_GASP
|
@ -1,12 +0,0 @@
|
||||
$OpenBSD: patch-aclocal_m4,v 1.1 2009/06/19 17:50:47 naddy Exp $
|
||||
--- aclocal.m4.orig Fri Jun 19 19:38:46 2009
|
||||
+++ aclocal.m4 Fri Jun 19 19:39:19 2009
|
||||
@@ -224,7 +224,7 @@ return (int) gettext ("")]ifelse([$2], need-ngettext,
|
||||
AC_CACHE_CHECK([for GNU gettext in libintl],
|
||||
gt_cv_func_gnugettext_libintl,
|
||||
[gt_save_LIBS="$LIBS"
|
||||
- LIBS="$LIBS -lintl"
|
||||
+ LIBS="$LIBS -lintl $LIBICONV"
|
||||
AC_TRY_LINK([#include <libintl.h>
|
||||
extern int _nl_msg_cat_cntr;],
|
||||
[bindtextdomain ("", "");
|
@ -1,29 +1,34 @@
|
||||
$OpenBSD: patch-app_Makefile_in,v 1.3 2008/08/21 14:11:14 jasper Exp $
|
||||
--- app/Makefile.in.orig Mon May 20 18:51:13 2002
|
||||
+++ app/Makefile.in Thu Aug 21 15:54:10 2008
|
||||
@@ -436,7 +436,7 @@ check-am: all-am
|
||||
check: check-recursive
|
||||
installcheck-am:
|
||||
installcheck: installcheck-recursive
|
||||
-install-exec-am: install-binPROGRAMS install-exec-local
|
||||
+install-exec-am: install-binPROGRAMS
|
||||
install-exec: install-exec-recursive
|
||||
$OpenBSD: patch-app_Makefile_in,v 1.4 2009/12/19 22:59:27 jakemsr Exp $
|
||||
--- app/Makefile.in.orig Sat Feb 25 05:37:15 2006
|
||||
+++ app/Makefile.in Fri Dec 18 17:40:10 2009
|
||||
@@ -665,7 +665,7 @@ info-am:
|
||||
|
||||
install-data-am:
|
||||
@@ -499,23 +499,12 @@ dvi-recursive mostlyclean-recursive distclean-recursiv
|
||||
maintainer-clean-recursive tags tags-recursive mostlyclean-tags \
|
||||
distclean-tags clean-tags maintainer-clean-tags distdir info-am info \
|
||||
dvi-am dvi check check-am installcheck-am installcheck \
|
||||
-install-exec-local install-exec-am install-exec install-data-am \
|
||||
+install-exec-am install-exec install-data-am \
|
||||
install-data install-am install uninstall-am uninstall all-redirect \
|
||||
all-am all installdirs-am installdirs mostlyclean-generic \
|
||||
distclean-generic clean-generic maintainer-clean-generic clean \
|
||||
mostlyclean distclean maintainer-clean
|
||||
|
||||
-
|
||||
-install-exec-am: install-binPROGRAMS install-exec-local
|
||||
+install-exec-am: install-binPROGRAMS
|
||||
|
||||
install-info: install-info-recursive
|
||||
|
||||
@@ -713,29 +713,6 @@ uninstall-info: uninstall-info-recursive
|
||||
uninstall-info-recursive uninstall-recursive
|
||||
|
||||
|
||||
-install-exec-local:
|
||||
- chown root.root $(bindir)/soundtracker
|
||||
- case `uname` in \
|
||||
- OpenBSD) \
|
||||
- chown root.wheel $(bindir)/soundtracker; \
|
||||
- ;; \
|
||||
- NetBSD) \
|
||||
- chown root.wheel $(bindir)/soundtracker; \
|
||||
- ;; \
|
||||
- Darwin) \
|
||||
- chown root:admin $(bindir)/soundtracker; \
|
||||
- ;; \
|
||||
- *) \
|
||||
- chown root:root $(bindir)/soundtracker; \
|
||||
- ;; \
|
||||
- esac
|
||||
- chmod +s $(bindir)/soundtracker
|
||||
- @echo ""
|
||||
- @echo "***"
|
||||
@ -32,6 +37,6 @@ $OpenBSD: patch-app_Makefile_in,v 1.3 2008/08/21 14:11:14 jasper Exp $
|
||||
- @echo "*** if this is a multi-user machine. See file INSTALL."
|
||||
- @echo "***"
|
||||
- @echo ""
|
||||
|
||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||
.NOEXPORT:
|
||||
|
77
audio/soundtracker/patches/patch-app_audio_c
Normal file
77
audio/soundtracker/patches/patch-app_audio_c
Normal file
@ -0,0 +1,77 @@
|
||||
$OpenBSD: patch-app_audio_c,v 1.1 2009/12/19 22:59:27 jakemsr Exp $
|
||||
--- app/audio.c.orig Sat Feb 25 04:30:54 2006
|
||||
+++ app/audio.c Fri Dec 18 20:07:19 2009
|
||||
@@ -52,6 +52,11 @@
|
||||
#include "gui-settings.h"
|
||||
#include "tracer.h"
|
||||
|
||||
+#ifdef DRIVER_SNDIO
|
||||
+#include <sndio.h>
|
||||
+void * sndio_driver_get_hdl(void *);
|
||||
+#endif
|
||||
+
|
||||
st_mixer *mixer = NULL;
|
||||
st_out_driver *playback_driver = NULL;
|
||||
st_out_driver *editing_driver = NULL;
|
||||
@@ -454,6 +459,10 @@ audio_thread (void)
|
||||
static char *msgbuf = NULL;
|
||||
static int msgbuflen = 0;
|
||||
|
||||
+#ifdef DRIVER_SNDIO
|
||||
+ struct sio_hdl *hdl;
|
||||
+#endif
|
||||
+
|
||||
audio_raise_priority();
|
||||
|
||||
loop:
|
||||
@@ -461,10 +470,27 @@ audio_thread (void)
|
||||
|
||||
for(pl = inputs, npl = 1; pl; pl = pl->next, npl++) {
|
||||
pi = pl->data;
|
||||
+
|
||||
+#ifdef DRIVER_SNDIO
|
||||
+ if (pi->fd == -1) {
|
||||
+ hdl = sndio_driver_get_hdl(pi->data);
|
||||
+ if (!hdl || !(pi->condition & GDK_INPUT_WRITE)) {
|
||||
+ inputs = g_list_remove(inputs, pi);
|
||||
+ goto loop;
|
||||
+ }
|
||||
+ if (sio_nfds(hdl) != 1) {
|
||||
+ printf("too many sndio file handles\n");
|
||||
+ } else {
|
||||
+ sio_pollfd(hdl, &pfd[npl], POLLOUT);
|
||||
+ }
|
||||
+ continue;
|
||||
+ }
|
||||
+#else
|
||||
if(pi->fd == -1) {
|
||||
inputs = g_list_remove(inputs, pi);
|
||||
goto loop;
|
||||
}
|
||||
+#endif
|
||||
pfd[npl].events = pfd[npl].revents = 0;
|
||||
pfd[npl].fd = pi->fd;
|
||||
if(pi->condition & GDK_INPUT_READ)
|
||||
@@ -564,8 +590,22 @@ audio_thread (void)
|
||||
|
||||
for(pl = inputs, i = 1; i < npl; pl = pl->next, i++) {
|
||||
pi = pl->data;
|
||||
+
|
||||
+#ifdef DRIVER_SNDIO
|
||||
+ if(pi->fd == -1) {
|
||||
+ hdl = sndio_driver_get_hdl(pi->data);
|
||||
+ if (hdl && (pi->condition & GDK_INPUT_WRITE)) {
|
||||
+ pfd[i].revents = sio_revents(hdl, &pfd[i]);
|
||||
+ } else {
|
||||
+ continue;
|
||||
+ }
|
||||
+ pfd[i].events = POLLOUT;
|
||||
+ }
|
||||
+#else
|
||||
if(pi->fd == -1)
|
||||
continue;
|
||||
+#endif
|
||||
+
|
||||
if(pfd[i].revents & pfd[i].events) {
|
||||
int x = 0;
|
||||
if(pfd[i].revents & POLLIN)
|
@ -1,12 +0,0 @@
|
||||
$OpenBSD: patch-app_audioconfig_c,v 1.1 2002/07/30 06:51:15 wcobb Exp $
|
||||
--- app/audioconfig.c.orig Tue Jul 30 02:45:44 2002
|
||||
+++ app/audioconfig.c Tue Jul 30 02:46:22 2002
|
||||
@@ -163,7 +163,7 @@ static void
|
||||
audioconfig_object_changed (void *a,
|
||||
void *b)
|
||||
{
|
||||
- unsigned n = (int)b;
|
||||
+ unsigned n = GPOINTER_TO_INT(b);
|
||||
GList *l;
|
||||
gchar *insertbuf[2] = { NULL };
|
||||
int i, active = -1;
|
@ -1,13 +0,0 @@
|
||||
$OpenBSD: patch-app_drivers_Makefile_am,v 1.1.1.1 2002/02/05 18:04:10 espie Exp $
|
||||
--- app/drivers/Makefile.am.orig Mon Feb 4 12:39:19 2002
|
||||
+++ app/drivers/Makefile.am Mon Feb 4 12:39:27 2002
|
||||
@@ -12,6 +12,8 @@ libdrivers_a_SOURCES = \
|
||||
file-output.c \
|
||||
irix-output.c \
|
||||
oss-output.c \
|
||||
- oss-input.c
|
||||
+ oss-input.c \
|
||||
+ sun-output.c \
|
||||
+ sun-input.c
|
||||
|
||||
INCLUDES = -I..
|
@ -1,36 +1,42 @@
|
||||
$OpenBSD: patch-app_drivers_Makefile_in,v 1.3 2008/08/21 14:11:14 jasper Exp $
|
||||
--- app/drivers/Makefile.in.orig Mon May 20 18:51:18 2002
|
||||
+++ app/drivers/Makefile.in Thu Aug 21 15:54:10 2008
|
||||
@@ -99,9 +99,8 @@ sedpath = @sedpath@
|
||||
$OpenBSD: patch-app_drivers_Makefile_in,v 1.4 2009/12/19 22:59:27 jakemsr Exp $
|
||||
--- app/drivers/Makefile.in.orig Sat Feb 25 05:37:16 2006
|
||||
+++ app/drivers/Makefile.in Fri Dec 18 19:16:40 2009
|
||||
@@ -190,7 +190,7 @@ target_vendor = @target_vendor@
|
||||
|
||||
noinst_LIBRARIES = libdrivers.a
|
||||
|
||||
-libdrivers_a_SOURCES = alsa-output.c alsa-input.c alsa2-output.c alsa2-input.c dsound-output.c dummy-drivers.c esd-output.c file-output.c irix-output.c oss-output.c oss-input.c
|
||||
+libdrivers_a_SOURCES = alsa-output.c alsa-input.c alsa2-output.c alsa2-input.c dsound-output.c dummy-drivers.c esd-output.c file-output.c irix-output.c oss-output.c oss-input.c sun-output.c sun-input.c
|
||||
-libdrivers_a_SOURCES = dummy-drivers.c file-output.c $(am__append_1) $(am__append_2) $(am__append_3) $(am__append_4) $(am__append_5) $(am__append_6) $(am__append_7) $(am__append_8)
|
||||
+libdrivers_a_SOURCES = dummy-drivers.c file-output.c $(am__append_1) $(am__append_2) $(am__append_3) $(am__append_4) $(am__append_5) $(am__append_6) $(am__append_7) $(am__append_8) sndio-output.c sndio-input.c
|
||||
|
||||
-
|
||||
INCLUDES = -I..
|
||||
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
|
||||
CONFIG_HEADER = ../../config.h
|
||||
@@ -116,7 +115,7 @@ LIBS = @LIBS@
|
||||
libdrivers_a_LIBADD =
|
||||
libdrivers_a_OBJECTS = alsa-output.o alsa-input.o alsa2-output.o \
|
||||
alsa2-input.o dsound-output.o dummy-drivers.o esd-output.o \
|
||||
-file-output.o irix-output.o oss-output.o oss-input.o
|
||||
+file-output.o irix-output.o oss-output.o oss-input.o sun-output.o sun-input.o
|
||||
AR = ar
|
||||
CFLAGS = @CFLAGS@
|
||||
COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
|
||||
@@ -242,6 +241,12 @@ oss-input.o: oss-input.c ../../config.h ../i18n.h ../d
|
||||
../driver.h ../preferences.h ../mixer.h ../errors.h \
|
||||
../gui-subs.h
|
||||
oss-output.o: oss-output.c ../../config.h ../i18n.h ../driver-out.h \
|
||||
+ ../driver.h ../preferences.h ../mixer.h ../errors.h \
|
||||
+ ../gui-subs.h
|
||||
+sun-input.o: sun-input.c ../../config.h ../i18n.h ../driver-in.h \
|
||||
+ ../driver.h ../preferences.h ../mixer.h ../errors.h \
|
||||
+ ../gui-subs.h
|
||||
+sun-output.o: sun-output.c ../../config.h ../i18n.h ../driver-out.h \
|
||||
../driver.h ../preferences.h ../mixer.h ../errors.h \
|
||||
../gui-subs.h
|
||||
INCLUDES = -I.. ${ST_S_JACK_INCLUDES}
|
||||
|
||||
@@ -223,7 +223,8 @@ am__libdrivers_a_SOURCES_DIST = dummy-drivers.c file-o
|
||||
am_libdrivers_a_OBJECTS = dummy-drivers.$(OBJEXT) file-output.$(OBJEXT) \
|
||||
$(am__objects_1) $(am__objects_2) $(am__objects_3) \
|
||||
$(am__objects_4) $(am__objects_5) $(am__objects_6) \
|
||||
- $(am__objects_7) $(am__objects_8)
|
||||
+ $(am__objects_7) $(am__objects_8) \
|
||||
+ sndio-output.$(OBJEXT) sndio-input.$(OBJEXT)
|
||||
libdrivers_a_OBJECTS = $(am_libdrivers_a_OBJECTS)
|
||||
|
||||
DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
|
||||
@@ -239,7 +240,9 @@ am__depfiles_maybe = depfiles
|
||||
@AMDEP_TRUE@ ./$(DEPDIR)/irix-output.Po \
|
||||
@AMDEP_TRUE@ ./$(DEPDIR)/jack-output.Po ./$(DEPDIR)/oss-input.Po \
|
||||
@AMDEP_TRUE@ ./$(DEPDIR)/oss-output.Po ./$(DEPDIR)/sdl-output.Po \
|
||||
-@AMDEP_TRUE@ ./$(DEPDIR)/sun-input.Po ./$(DEPDIR)/sun-output.Po
|
||||
+@AMDEP_TRUE@ ./$(DEPDIR)/sun-input.Po ./$(DEPDIR)/sun-output.Po \
|
||||
+@AMDEP_TRUE@ ./$(DEPDIR)/sndio-output.Po \
|
||||
+@AMDEP_TRUE@ ./$(DEPDIR)/sndio-input.Po
|
||||
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
|
||||
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
|
||||
CCLD = $(CC)
|
||||
@@ -287,6 +290,8 @@ distclean-compile:
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sdl-output.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sun-input.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sun-output.Po@am__quote@
|
||||
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sndio-output.Po@am__quote@
|
||||
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sndio-input.Po@am__quote@
|
||||
|
||||
.c.o:
|
||||
@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
|
||||
|
@ -1,89 +0,0 @@
|
||||
$OpenBSD: patch-app_event-waiter_c,v 1.1.1.1 2002/02/05 18:04:10 espie Exp $
|
||||
--- app/event-waiter.c.orig Mon Feb 4 04:24:29 2002
|
||||
+++ app/event-waiter.c Mon Feb 4 04:37:54 2002
|
||||
@@ -22,9 +22,10 @@
|
||||
#include "event-waiter.h"
|
||||
|
||||
#include <glib.h>
|
||||
+#include <pthread.h>
|
||||
|
||||
struct event_waiter {
|
||||
- GMutex *mutex;
|
||||
+ pthread_mutex_t mutex;
|
||||
int counter;
|
||||
double time;
|
||||
};
|
||||
@@ -35,7 +36,9 @@ event_waiter_new (void)
|
||||
event_waiter *e = g_new(event_waiter, 1);
|
||||
|
||||
if(e) {
|
||||
- e->mutex = g_mutex_new();
|
||||
+ if (pthread_mutex_init(&e->mutex, NULL) != 0) {
|
||||
+ return NULL;
|
||||
+ }
|
||||
event_waiter_reset(e);
|
||||
}
|
||||
|
||||
@@ -46,7 +49,7 @@ void
|
||||
event_waiter_destroy (event_waiter *e)
|
||||
{
|
||||
if(e) {
|
||||
- g_mutex_free(e->mutex);
|
||||
+ pthread_mutex_destroy(&e->mutex);
|
||||
g_free(e);
|
||||
}
|
||||
}
|
||||
@@ -56,10 +59,10 @@ event_waiter_reset (event_waiter *e)
|
||||
{
|
||||
g_assert(e);
|
||||
|
||||
- g_mutex_lock(e->mutex);
|
||||
+ pthread_mutex_lock(&e->mutex);
|
||||
e->counter = 0;
|
||||
e->time = 0.0;
|
||||
- g_mutex_unlock(e->mutex);
|
||||
+ pthread_mutex_unlock(&e->mutex);
|
||||
}
|
||||
|
||||
void
|
||||
@@ -67,9 +70,9 @@ event_waiter_start (event_waiter *e)
|
||||
{
|
||||
g_assert(e);
|
||||
|
||||
- g_mutex_lock(e->mutex);
|
||||
+ pthread_mutex_lock(&e->mutex);
|
||||
e->counter++;
|
||||
- g_mutex_unlock(e->mutex);
|
||||
+ pthread_mutex_unlock(&e->mutex);
|
||||
}
|
||||
|
||||
void
|
||||
@@ -78,14 +81,14 @@ event_waiter_confirm (event_waiter *e,
|
||||
{
|
||||
g_assert(e);
|
||||
|
||||
- g_mutex_lock(e->mutex);
|
||||
+ pthread_mutex_lock(&e->mutex);
|
||||
if(e->counter > 0) {
|
||||
e->counter--;
|
||||
}
|
||||
if(readytime >= e->time) {
|
||||
e->time = readytime;
|
||||
}
|
||||
- g_mutex_unlock(e->mutex);
|
||||
+ pthread_mutex_unlock(&e->mutex);
|
||||
}
|
||||
|
||||
gboolean
|
||||
@@ -96,9 +99,9 @@ event_waiter_ready (event_waiter *e,
|
||||
|
||||
g_assert(e);
|
||||
|
||||
- g_mutex_lock(e->mutex);
|
||||
+ pthread_mutex_lock(&e->mutex);
|
||||
result = (e->counter == 0 && currenttime >= e->time);
|
||||
- g_mutex_unlock(e->mutex);
|
||||
+ pthread_mutex_unlock(&e->mutex);
|
||||
|
||||
return result;
|
||||
}
|
@ -1,20 +0,0 @@
|
||||
$OpenBSD: patch-app_file-operations_c,v 1.2 2002/07/30 06:51:15 wcobb Exp $
|
||||
--- app/file-operations.c.orig Sat Feb 9 12:20:12 2002
|
||||
+++ app/file-operations.c Tue Jul 30 02:47:43 2002
|
||||
@@ -25,6 +25,7 @@
|
||||
|
||||
#include <errno.h>
|
||||
#include <dirent.h>
|
||||
+#include <unistd.h>
|
||||
|
||||
#include "i18n.h"
|
||||
#include <gdk/gdktypes.h>
|
||||
@@ -214,7 +215,7 @@ void
|
||||
fileops_open_dialog (void *dummy,
|
||||
void *index)
|
||||
{
|
||||
- int n = (int)index;
|
||||
+ int n = GPOINTER_TO_INT(index);
|
||||
|
||||
if(!fileops_dialogs[n]) {
|
||||
error_error(_("Operation not supported."));
|
@ -1,21 +0,0 @@
|
||||
$OpenBSD: patch-app_gui-subs_c,v 1.2 2008/08/21 14:11:14 jasper Exp $
|
||||
--- app/gui-subs.c.orig Mon May 20 15:19:54 2002
|
||||
+++ app/gui-subs.c Thu Aug 21 15:54:06 2008
|
||||
@@ -359,7 +359,7 @@ gui_build_option_menu (OptionMenuItem items[],
|
||||
{
|
||||
menu_item = gtk_radio_menu_item_new_with_label (group, items[i].name);
|
||||
gtk_signal_connect (GTK_OBJECT (menu_item), "activate",
|
||||
- (GtkSignalFunc) items[i].func, (void*)i);
|
||||
+ (GtkSignalFunc) items[i].func, GINT_TO_POINTER(i));
|
||||
group = gtk_radio_menu_item_group (GTK_RADIO_MENU_ITEM (menu_item));
|
||||
gtk_menu_append (GTK_MENU (menu), menu_item);
|
||||
if (i == history)
|
||||
@@ -443,7 +443,7 @@ cdialog_close (gpointer data)
|
||||
gtk_widget_destroy(cdialog);
|
||||
cdialog = NULL;
|
||||
|
||||
- ccallback((gint)data, ccallbackdata);
|
||||
+ ccallback(GPOINTER_TO_INT(data), ccallbackdata);
|
||||
}
|
||||
|
||||
static void
|
@ -1,94 +0,0 @@
|
||||
$OpenBSD: patch-app_gui_c,v 1.4 2008/08/21 14:11:14 jasper Exp $
|
||||
--- app/gui.c.orig Mon May 20 15:06:48 2002
|
||||
+++ app/gui.c Thu Aug 21 15:54:06 2008
|
||||
@@ -227,8 +227,6 @@ gui_save_wav_callback (gint reply,
|
||||
write(audio_ctlpipe, &i, sizeof(i));
|
||||
write(audio_ctlpipe, &l, sizeof(l));
|
||||
write(audio_ctlpipe, data, l + 1);
|
||||
-
|
||||
- gui_set_current_pattern(xm->pattern_order_table[0]);
|
||||
wait_for_player();
|
||||
}
|
||||
}
|
||||
@@ -474,7 +472,7 @@ keyevent (GtkWidget *widget,
|
||||
sample_editor_handle_keys,
|
||||
modinfo_page_handle_keys,
|
||||
};
|
||||
- gboolean pressed = (gboolean)data;
|
||||
+ gboolean pressed = (gboolean)GPOINTER_TO_INT(data);
|
||||
gboolean handled = FALSE;
|
||||
gboolean entry_focus = GTK_IS_ENTRY(GTK_WINDOW(mainwindow)->focus_widget);
|
||||
|
||||
@@ -529,7 +527,7 @@ static void
|
||||
playlist_position_changed (Playlist *p,
|
||||
int newpos)
|
||||
{
|
||||
- if(gui_playing_mode) {
|
||||
+ if(gui_playing_mode != 0) {
|
||||
// This will only be executed when the user changes the song position manually
|
||||
gui_mixer_set_songpos(newpos);
|
||||
event_waiter_start(audio_songpos_ew);
|
||||
@@ -577,8 +575,18 @@ gui_editpat_changed (GtkSpinButton *spin)
|
||||
{
|
||||
int n = gtk_spin_button_get_value_as_int(spin);
|
||||
|
||||
- if(n != editing_pat)
|
||||
+ if(n != editing_pat) {
|
||||
gui_set_current_pattern(n);
|
||||
+
|
||||
+ /* If we are in 'playing pattern' mode and asynchronous
|
||||
+ * editing is disabled, make the audio thread jump to the new
|
||||
+ * pattern, too. I think it would be cool to have this for
|
||||
+ * 'playing song' mode, too, but then modifications in
|
||||
+ * gui_update_player_pos() will be necessary. */
|
||||
+ if(gui_playing_mode == PLAYING_PATTERN && !ASYNCEDIT) {
|
||||
+ gui_mixer_set_pattern(n);
|
||||
+ }
|
||||
+ }
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -870,8 +878,6 @@ play_song (void)
|
||||
write(audio_ctlpipe, &i, sizeof(i));
|
||||
write(audio_ctlpipe, &sp, sizeof(sp));
|
||||
write(audio_ctlpipe, &pp, sizeof(pp));
|
||||
-
|
||||
- gui_set_current_pattern(xm->pattern_order_table[sp]);
|
||||
wait_for_player();
|
||||
}
|
||||
|
||||
@@ -1037,10 +1043,6 @@ gui_set_current_pattern (int p)
|
||||
gtk_spin_button_set_value(GTK_SPIN_BUTTON(spin_editpat), p);
|
||||
gui_update_pattern_data();
|
||||
|
||||
- if(!GUI_ENABLED && !ASYNCEDIT) {
|
||||
- gui_mixer_set_pattern(p);
|
||||
- }
|
||||
-
|
||||
xm_set_modified(m);
|
||||
}
|
||||
|
||||
@@ -1064,13 +1066,12 @@ offset_current_pattern (int offset)
|
||||
int nv;
|
||||
|
||||
nv = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(spin_editpat)) + offset;
|
||||
-
|
||||
if(nv < 0)
|
||||
nv = 0;
|
||||
else if(nv > 255)
|
||||
nv = 255;
|
||||
|
||||
- gui_set_current_pattern(nv);
|
||||
+ gtk_spin_button_set_value(GTK_SPIN_BUTTON(spin_editpat), nv);
|
||||
}
|
||||
|
||||
void
|
||||
@@ -1255,7 +1256,7 @@ gui_splash_set_label (const gchar *text,
|
||||
char buf[256];
|
||||
|
||||
strcpy(buf, "SoundTracker v" VERSION " - ");
|
||||
- strncat(buf, text, 255-sizeof(buf));
|
||||
+ strlcat(buf, text, sizeof buf);
|
||||
|
||||
gtk_label_set_text(GTK_LABEL(gui_splash_label), buf);
|
||||
|
@ -1,12 +0,0 @@
|
||||
$OpenBSD: patch-app_keys_c,v 1.1 2002/07/30 06:51:15 wcobb Exp $
|
||||
--- app/keys.c.orig Tue Jul 30 02:50:01 2002
|
||||
+++ app/keys.c Tue Jul 30 02:50:08 2002
|
||||
@@ -316,7 +316,7 @@ static void
|
||||
keys_key_group_changed (void *a,
|
||||
void *b)
|
||||
{
|
||||
- unsigned n = (int)b;
|
||||
+ unsigned n = GPOINTER_TO_INT(b);
|
||||
keys_key *kpt;
|
||||
gchar string[128];
|
||||
gchar * insertbuf[2] = { NULL, string };
|
@ -1,65 +1,52 @@
|
||||
$OpenBSD: patch-app_main_c,v 1.2 2002/05/30 09:08:28 wcobb Exp $
|
||||
--- app/main.c.orig Sun Feb 17 11:02:22 2002
|
||||
+++ app/main.c Tue May 21 21:10:04 2002
|
||||
@@ -47,18 +47,6 @@
|
||||
$OpenBSD: patch-app_main_c,v 1.3 2009/12/19 22:59:27 jakemsr Exp $
|
||||
--- app/main.c.orig Sat Feb 25 05:02:27 2006
|
||||
+++ app/main.c Fri Dec 18 19:19:12 2009
|
||||
@@ -48,6 +48,7 @@
|
||||
XM *xm = NULL;
|
||||
int pipea[2], pipeb[2];
|
||||
|
||||
-static void
|
||||
-sigsegv_handler (int parameter)
|
||||
-{
|
||||
- signal(SIGSEGV, SIG_DFL);
|
||||
-
|
||||
- if(xm != NULL) {
|
||||
- int retval = XM_Save(xm, "crash-save.xm", FALSE);
|
||||
- printf("*** SIGSEGV caught.\n*** Saved current XM to 'crash-save.xm' in current directory.\n (status %d)\n", retval);
|
||||
- exit(1);
|
||||
- }
|
||||
-}
|
||||
-
|
||||
+#if 0
|
||||
static void
|
||||
sigsegv_handler (int parameter)
|
||||
{
|
||||
@@ -59,6 +60,7 @@ sigsegv_handler (int parameter)
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
+#endif
|
||||
|
||||
int
|
||||
main (int argc,
|
||||
char *argv[])
|
||||
@@ -80,6 +68,9 @@ main (int argc,
|
||||
#ifdef DRIVER_SGI
|
||||
driver_out_irix,
|
||||
@@ -87,6 +89,9 @@ main (int argc,
|
||||
#ifdef DRIVER_SUN
|
||||
driver_out_sun, driver_in_sun,
|
||||
#endif
|
||||
+#ifdef DRIVER_SUN
|
||||
+ driver_out_sun, driver_in_sun,
|
||||
+#ifdef DRIVER_SNDIO
|
||||
+ driver_out_sndio, driver_in_sndio,
|
||||
+#endif
|
||||
#ifndef NO_AUDIOFILE
|
||||
// driver_out_file,
|
||||
#ifdef DRIVER_SDL
|
||||
driver_out_sdl,
|
||||
#endif
|
||||
@@ -92,7 +83,9 @@ main (int argc,
|
||||
mixer_kbfloat,
|
||||
mixer_integer32;
|
||||
|
||||
+#ifndef __OpenBSD__
|
||||
g_thread_init(NULL);
|
||||
+#endif
|
||||
|
||||
if(pipe(pipea) || pipe(pipeb)) {
|
||||
fprintf(stderr, "Cränk. Can't pipe().\n");
|
||||
@@ -178,6 +171,13 @@ main (int argc,
|
||||
&driver_out_irix);
|
||||
@@ -181,6 +186,13 @@ main (int argc,
|
||||
&driver_in_sun);
|
||||
#endif
|
||||
|
||||
+#ifdef DRIVER_SUN
|
||||
+#ifdef DRIVER_SNDIO
|
||||
+ drivers[DRIVER_OUTPUT] = g_list_append(drivers[DRIVER_OUTPUT],
|
||||
+ &driver_out_sun);
|
||||
+ &driver_out_sndio);
|
||||
+ drivers[DRIVER_INPUT] = g_list_append(drivers[DRIVER_INPUT],
|
||||
+ &driver_in_sun);
|
||||
+ &driver_in_sndio);
|
||||
+#endif
|
||||
+
|
||||
#ifdef _WIN32
|
||||
drivers[DRIVER_OUTPUT] = g_list_append(drivers[DRIVER_OUTPUT],
|
||||
&driver_out_dsound);
|
||||
@@ -215,8 +215,6 @@ main (int argc,
|
||||
midi_load_config();
|
||||
@@ -243,7 +255,7 @@ main (int argc,
|
||||
midi_init();
|
||||
#endif
|
||||
-
|
||||
|
||||
- signal(SIGSEGV, sigsegv_handler);
|
||||
+ //signal(SIGSEGV, sigsegv_handler);
|
||||
|
||||
gtk_main();
|
||||
|
||||
|
@ -1,38 +0,0 @@
|
||||
$OpenBSD: patch-app_menubar_c,v 1.2 2008/08/21 14:11:14 jasper Exp $
|
||||
--- app/menubar.c.orig Mon May 20 16:33:38 2002
|
||||
+++ app/menubar.c Thu Aug 21 15:54:06 2008
|
||||
@@ -117,7 +117,7 @@ menubar_clear_callback (gint reply,
|
||||
gpointer data)
|
||||
{
|
||||
if(reply == 0) {
|
||||
- if((gint)data == 0) {
|
||||
+ if(GPOINTER_TO_INT(data) == 0) {
|
||||
gui_free_xm();
|
||||
gui_new_xm();
|
||||
xm->modified = 0;
|
||||
@@ -709,19 +709,22 @@ menubar_gnome_to_gtk (GnomeUIInfo *gnometree,
|
||||
switch(gnometree->type) {
|
||||
case GNOME_APP_UI_SUBTREE:
|
||||
menubar_gtk_items[n].callback = (GtkItemFactoryCallback)gnometree->func;
|
||||
- menubar_gtk_items[n].callback_action = (guint)gnometree->funcparam;
|
||||
+ menubar_gtk_items[n].callback_action =
|
||||
+ GPOINTER_TO_UINT(gnometree->funcparam);
|
||||
menubar_gtk_items[n].item_type = "<Branch>";
|
||||
strip_underscores(buf, buf);
|
||||
n = menubar_gnome_to_gtk((GnomeUIInfo*)gnometree->dummy1, n + 1, buf) - 1;
|
||||
break;
|
||||
case GNOME_APP_UI_ITEM:
|
||||
menubar_gtk_items[n].callback = (GtkItemFactoryCallback)gnometree->func;
|
||||
- menubar_gtk_items[n].callback_action = (guint)gnometree->funcparam;
|
||||
+ menubar_gtk_items[n].callback_action =
|
||||
+ GPOINTER_TO_UINT(gnometree->funcparam);
|
||||
menubar_gtk_items[n].item_type = NULL;
|
||||
break;
|
||||
case GNOME_APP_UI_TOGGLEITEM:
|
||||
menubar_gtk_items[n].callback = (GtkItemFactoryCallback)gnometree->func;
|
||||
- menubar_gtk_items[n].callback_action = (guint)gnometree->funcparam;
|
||||
+ menubar_gtk_items[n].callback_action =
|
||||
+ GPOINTER_TO_UINT(gnometree->funcparam);
|
||||
menubar_gtk_items[n].item_type = "<ToggleItem>";
|
||||
break;
|
||||
case GNOME_APP_UI_SEPARATOR:
|
@ -1,20 +0,0 @@
|
||||
$OpenBSD: patch-app_mixer_h,v 1.1.1.1 2002/02/05 18:04:10 espie Exp $
|
||||
--- app/mixer.h.orig Mon Feb 4 04:21:58 2002
|
||||
+++ app/mixer.h Mon Feb 4 04:37:12 2002
|
||||
@@ -23,6 +23,7 @@
|
||||
#define _ST_MIXER_H
|
||||
|
||||
#include <glib.h>
|
||||
+#include <pthread.h>
|
||||
|
||||
typedef struct st_mixer_sample_info {
|
||||
guint32 looptype; /* see ST_MIXER_SAMPLE_LOOPTYPE_ defines below */
|
||||
@@ -30,7 +31,7 @@ typedef struct st_mixer_sample_info {
|
||||
guint32 loopstart; /* offset in samples, not in bytes */
|
||||
guint32 loopend; /* offset to first sample not being played */
|
||||
gint16 *data; /* pointer to sample data */
|
||||
- GMutex *lock;
|
||||
+ pthread_mutex_t *lock;
|
||||
} st_mixer_sample_info;
|
||||
|
||||
/* values for st_mixer_sample_info.looptype */
|
@ -1,21 +0,0 @@
|
||||
$OpenBSD: patch-app_mixers_integer32_c,v 1.1.1.1 2002/02/05 18:04:10 espie Exp $
|
||||
--- app/mixers/integer32.c.orig Mon Feb 4 04:35:50 2002
|
||||
+++ app/mixers/integer32.c Mon Feb 4 04:36:16 2002
|
||||
@@ -277,7 +277,7 @@ integer32_mix (void *dest,
|
||||
}
|
||||
|
||||
g_assert(c->sample->lock);
|
||||
- g_mutex_lock(c->sample->lock);
|
||||
+ pthread_mutex_lock(c->sample->lock);
|
||||
|
||||
while(t) {
|
||||
/* Check how much of the sample we can fill in one run */
|
||||
@@ -414,7 +414,7 @@ integer32_mix (void *dest,
|
||||
c->current = j;
|
||||
}
|
||||
|
||||
- g_mutex_unlock(c->sample->lock);
|
||||
+ pthread_mutex_unlock(c->sample->lock);
|
||||
}
|
||||
|
||||
/* modules with many channels get additional amplification here */
|
@ -1,21 +0,0 @@
|
||||
$OpenBSD: patch-app_mixers_kb-x86_c,v 1.1.1.1 2002/02/05 18:04:10 espie Exp $
|
||||
--- app/mixers/kb-x86.c.orig Mon Feb 4 04:35:55 2002
|
||||
+++ app/mixers/kb-x86.c Mon Feb 4 04:36:34 2002
|
||||
@@ -739,7 +739,7 @@ kb_x86_mix (void *dest,
|
||||
}
|
||||
|
||||
g_assert(ch->sample->lock);
|
||||
- g_mutex_lock(ch->sample->lock);
|
||||
+ pthread_mutex_lock(ch->sample->lock);
|
||||
|
||||
while(num_samples_left && (ch->flags & KB_FLAG_SAMPLE_RUNNING)) {
|
||||
int num_samples = 0;
|
||||
@@ -770,7 +770,7 @@ kb_x86_mix (void *dest,
|
||||
}
|
||||
}
|
||||
|
||||
- g_mutex_unlock(ch->sample->lock);
|
||||
+ pthread_mutex_unlock(ch->sample->lock);
|
||||
}
|
||||
|
||||
clipflag = kbasm_post_mixing(kb_x86_tempbuf, (gint16*)dest, count, kb_x86_amplification);
|
@ -1,58 +0,0 @@
|
||||
$OpenBSD: patch-app_sample_editor_c,v 1.5 2008/08/21 14:11:14 jasper Exp $
|
||||
--- app/sample-editor.c.orig Thu May 16 16:55:24 2002
|
||||
+++ app/sample-editor.c Thu Aug 21 15:54:06 2008
|
||||
@@ -186,7 +186,7 @@ static void sample_editor_reverse_clicked(void);
|
||||
static void
|
||||
sample_editor_lock_sample (void)
|
||||
{
|
||||
- g_mutex_lock(current_sample->sample.lock);
|
||||
+ pthread_mutex_lock(current_sample->sample.lock);
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -195,7 +195,7 @@ sample_editor_unlock_sample (void)
|
||||
if(gui_playing_mode) {
|
||||
mixer->updatesample(¤t_sample->sample);
|
||||
}
|
||||
- g_mutex_unlock(current_sample->sample.lock);
|
||||
+ pthread_mutex_unlock(current_sample->sample.lock);
|
||||
}
|
||||
|
||||
void
|
||||
@@ -2038,7 +2038,7 @@ static void
|
||||
sample_editor_lrvol (GtkWidget *widget,
|
||||
gpointer data)
|
||||
{
|
||||
- int mode = (int)data;
|
||||
+ int mode = GPOINTER_TO_INT(data);
|
||||
|
||||
switch(mode)
|
||||
{
|
||||
@@ -2056,7 +2056,7 @@ static void
|
||||
sample_editor_open_volume_ramp_dialog (void)
|
||||
{
|
||||
GtkWidget *mainbox, *box1, *thing;
|
||||
- int i;
|
||||
+ gint i;
|
||||
const char *labels1[] = {
|
||||
_("Normalize"),
|
||||
_("Execute"),
|
||||
@@ -2146,7 +2146,8 @@ sample_editor_open_volume_ramp_dialog (void)
|
||||
gtk_widget_show(thing);
|
||||
gtk_box_pack_start(GTK_BOX(box1), thing, TRUE, TRUE, 0);
|
||||
gtk_signal_connect(GTK_OBJECT(thing), "clicked",
|
||||
- GTK_SIGNAL_FUNC(sample_editor_perform_ramp), (gpointer)i);
|
||||
+ GTK_SIGNAL_FUNC(sample_editor_perform_ramp),
|
||||
+ GINT_TO_POINTER(i));
|
||||
}
|
||||
|
||||
gtk_widget_show (volrampwindow);
|
||||
@@ -2166,7 +2167,7 @@ static void
|
||||
sample_editor_perform_ramp (GtkWidget *w,
|
||||
gpointer data)
|
||||
{
|
||||
- int action = (int)data;
|
||||
+ int action = GPOINTER_TO_INT(data);
|
||||
double left, right;
|
||||
const int ss = sampledisplay->sel_start, se = sampledisplay->sel_end;
|
||||
int i;
|
@ -1,21 +0,0 @@
|
||||
$OpenBSD: patch-app_scope-group_c,v 1.1 2002/07/30 06:51:15 wcobb Exp $
|
||||
--- app/scope-group.c.orig Tue Jul 30 02:53:16 2002
|
||||
+++ app/scope-group.c Tue Jul 30 02:53:33 2002
|
||||
@@ -223,7 +223,7 @@ scope_group_new (void)
|
||||
{
|
||||
ScopeGroup *s;
|
||||
GtkWidget *button, *box, *thing;
|
||||
- int i;
|
||||
+ gint i;
|
||||
char buf[5];
|
||||
|
||||
s = gtk_type_new(scope_group_get_type());
|
||||
@@ -244,7 +244,7 @@ scope_group_new (void)
|
||||
gtk_signal_connect(GTK_OBJECT(button), "event",
|
||||
GTK_SIGNAL_FUNC(scope_group_scope_event), s);
|
||||
gtk_signal_connect(GTK_OBJECT(button), "toggled",
|
||||
- GTK_SIGNAL_FUNC(button_toggled), (void*)i);
|
||||
+ GTK_SIGNAL_FUNC(button_toggled), GINT_TO_POINTER(i));
|
||||
gtk_widget_show(button);
|
||||
gtk_widget_ref(button);
|
||||
|
@ -1,25 +0,0 @@
|
||||
$OpenBSD: patch-app_st-subs_c,v 1.1.1.1 2002/02/05 18:04:10 espie Exp $
|
||||
--- app/st-subs.c.orig Mon Feb 4 04:18:39 2002
|
||||
+++ app/st-subs.c Mon Feb 4 04:38:47 2002
|
||||
@@ -359,7 +359,7 @@ void
|
||||
st_clean_sample (STSample *s,
|
||||
const char *name)
|
||||
{
|
||||
- GMutex *lock = s->sample.lock;
|
||||
+ pthread_mutex_t *lock = s->sample.lock;
|
||||
free(s->sample.data);
|
||||
memset(s, 0, sizeof(STSample));
|
||||
if(name)
|
||||
@@ -367,8 +367,10 @@ st_clean_sample (STSample *s,
|
||||
s->sample.loopend = 1;
|
||||
if(lock)
|
||||
s->sample.lock = lock;
|
||||
- else
|
||||
- s->sample.lock = g_mutex_new();
|
||||
+ else {
|
||||
+ s->sample.lock = malloc(sizeof(pthread_mutex_t));
|
||||
+ pthread_mutex_init(s->sample.lock, NULL);
|
||||
+ }
|
||||
}
|
||||
|
||||
void
|
@ -1,75 +0,0 @@
|
||||
$OpenBSD: patch-app_time-buffer_c,v 1.1.1.1 2002/02/05 18:04:10 espie Exp $
|
||||
--- app/time-buffer.c.orig Mon Feb 4 04:06:19 2002
|
||||
+++ app/time-buffer.c Mon Feb 4 04:39:34 2002
|
||||
@@ -21,13 +21,14 @@
|
||||
|
||||
#include "time-buffer.h"
|
||||
|
||||
+#include <pthread.h>
|
||||
#include <glib.h>
|
||||
|
||||
/* This implementation of the time buffer interface might be rather
|
||||
suboptimal... */
|
||||
|
||||
struct time_buffer {
|
||||
- GMutex *mutex;
|
||||
+ pthread_mutex_t mutex;
|
||||
GList *list;
|
||||
};
|
||||
|
||||
@@ -42,7 +43,9 @@ time_buffer_new (double maxtimedelta)
|
||||
time_buffer *t = g_new(time_buffer, 1);
|
||||
|
||||
if(t) {
|
||||
- t->mutex = g_mutex_new();
|
||||
+ if (pthread_mutex_init(&t->mutex, NULL) != 0) {
|
||||
+ return NULL;
|
||||
+ }
|
||||
t->list = NULL;
|
||||
}
|
||||
|
||||
@@ -54,7 +57,7 @@ time_buffer_destroy (time_buffer *t)
|
||||
{
|
||||
if(t) {
|
||||
g_list_free(t->list);
|
||||
- g_mutex_free(t->mutex);
|
||||
+ pthread_mutex_destroy(&t->mutex);
|
||||
g_free(t);
|
||||
}
|
||||
}
|
||||
@@ -75,10 +78,10 @@ time_buffer_add (time_buffer *t,
|
||||
{
|
||||
time_buffer_item *a = item;
|
||||
|
||||
- g_mutex_lock(t->mutex);
|
||||
+ pthread_mutex_lock(&t->mutex);
|
||||
a->time = time;
|
||||
t->list = g_list_append(t->list, a);
|
||||
- g_mutex_unlock(t->mutex);
|
||||
+ pthread_mutex_unlock(&t->mutex);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
@@ -91,11 +94,11 @@ time_buffer_get (time_buffer *t,
|
||||
void *result = NULL;
|
||||
GList *list;
|
||||
|
||||
- g_mutex_lock(t->mutex);
|
||||
+ pthread_mutex_lock(&t->mutex);
|
||||
l = g_list_length(t->list);
|
||||
|
||||
if(l == 0) {
|
||||
- g_mutex_unlock(t->mutex);
|
||||
+ pthread_mutex_unlock(&t->mutex);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
@@ -114,7 +117,7 @@ time_buffer_get (time_buffer *t,
|
||||
|
||||
result = t->list->data;
|
||||
|
||||
- g_mutex_unlock(t->mutex);
|
||||
+ pthread_mutex_unlock(&t->mutex);
|
||||
|
||||
return result;
|
||||
}
|
@ -1,12 +0,0 @@
|
||||
$OpenBSD: patch-app_tracker-settings_c,v 1.1 2002/07/30 06:46:24 wcobb Exp $
|
||||
--- app/tracker-settings.c.orig Tue Jul 30 02:53:55 2002
|
||||
+++ app/tracker-settings.c Tue Jul 30 02:54:38 2002
|
||||
@@ -23,6 +23,8 @@
|
||||
|
||||
#include <gtk/gtk.h>
|
||||
|
||||
+#include <string.h>
|
||||
+
|
||||
#include "tracker-settings.h"
|
||||
#include "i18n.h"
|
||||
#include "gui-subs.h"
|
@ -1,59 +0,0 @@
|
||||
$OpenBSD: patch-app_transposition_c,v 1.2 2008/08/21 14:11:14 jasper Exp $
|
||||
--- app/transposition.c.orig Fri May 17 15:21:59 2002
|
||||
+++ app/transposition.c Thu Aug 21 15:54:06 2008
|
||||
@@ -127,7 +127,7 @@ transposition_transpose_notes (GtkWidget *w,
|
||||
{
|
||||
int add = 0;
|
||||
|
||||
- switch((int)data) {
|
||||
+ switch(GPOINTER_TO_INT(data)) {
|
||||
case 0:
|
||||
add = +1;
|
||||
break;
|
||||
@@ -173,7 +173,7 @@ static void
|
||||
transposition_change_instruments (GtkWidget *w,
|
||||
gpointer data)
|
||||
{
|
||||
- int b = (int)data;
|
||||
+ int b = GPOINTER_TO_INT(data);
|
||||
|
||||
transposition_for_each (transposition_change_instruments_sub, b);
|
||||
tracker_redraw(tracker);
|
||||
@@ -184,14 +184,15 @@ static void
|
||||
transposition_current_instrument_clicked (GtkWidget *w,
|
||||
gpointer data)
|
||||
{
|
||||
- gtk_spin_button_set_value(GTK_SPIN_BUTTON(transposition_instrument_w[(int)data]),
|
||||
+ gtk_spin_button_set_value(GTK_SPIN_BUTTON(transposition_instrument_w[
|
||||
+ GPOINTER_TO_INT(data)]),
|
||||
gui_get_current_instrument());
|
||||
}
|
||||
|
||||
void
|
||||
transposition_dialog (void)
|
||||
{
|
||||
- int i;
|
||||
+ gint i;
|
||||
GtkWidget *mainbox, *thing, *box1, *box2, *frame, *hbox;
|
||||
const char *labels1[] = {
|
||||
_("Whole Song"),
|
||||
@@ -279,7 +280,8 @@ transposition_dialog (void)
|
||||
gtk_widget_show(thing);
|
||||
gtk_box_pack_start(GTK_BOX(box1), thing, TRUE, TRUE, 0);
|
||||
gtk_signal_connect(GTK_OBJECT(thing), "clicked",
|
||||
- GTK_SIGNAL_FUNC(transposition_transpose_notes), (gpointer)i);
|
||||
+ GTK_SIGNAL_FUNC(transposition_transpose_notes),
|
||||
+ GINT_TO_POINTER(i));
|
||||
}
|
||||
|
||||
frame = gtk_frame_new(NULL);
|
||||
@@ -327,7 +329,8 @@ transposition_dialog (void)
|
||||
gtk_widget_show(thing);
|
||||
gtk_box_pack_start(GTK_BOX(box1), thing, TRUE, TRUE, 0);
|
||||
gtk_signal_connect(GTK_OBJECT(thing), "clicked",
|
||||
- GTK_SIGNAL_FUNC(transposition_change_instruments), (gpointer)i);
|
||||
+ GTK_SIGNAL_FUNC(transposition_change_instruments),
|
||||
+ GINT_TO_POINTER(i));
|
||||
}
|
||||
|
||||
/* The button area */
|
@ -1,24 +0,0 @@
|
||||
$OpenBSD: patch-app_xm_c,v 1.2 2002/05/30 09:08:28 wcobb Exp $
|
||||
--- app/xm.c.orig Mon May 20 10:21:08 2002
|
||||
+++ app/xm.c Tue May 21 18:21:30 2002
|
||||
@@ -765,7 +765,8 @@ xm_init_locks (XM *xm)
|
||||
for(i = 0; i < sizeof(xm->instruments) / sizeof(xm->instruments[0]); i++) {
|
||||
STInstrument *ins = &xm->instruments[i];
|
||||
for(j = 0; j < sizeof(ins->samples) / sizeof(ins->samples[0]); j++) {
|
||||
- ins->samples[j].sample.lock = g_mutex_new();
|
||||
+ ins->samples[j].sample.lock = malloc(sizeof(pthread_mutex_t));
|
||||
+ pthread_mutex_init(ins->samples[j].sample.lock, NULL);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1094,7 +1095,9 @@ XM_Free (XM *xm)
|
||||
STInstrument *ins = &xm->instruments[i];
|
||||
st_clean_instrument(ins, NULL);
|
||||
for(j = 0; j < sizeof(ins->samples) / sizeof(ins->samples[0]); j++) {
|
||||
- g_mutex_free(ins->samples[j].sample.lock);
|
||||
+ pthread_mutex_destroy(ins->samples[j].sample.lock);
|
||||
+ free(ins->samples[j].sample.lock);
|
||||
+ ins->samples[j].sample.lock = NULL;
|
||||
}
|
||||
}
|
||||
|
@ -1,21 +0,0 @@
|
||||
$OpenBSD: patch-config_h_in,v 1.3 2008/08/21 14:11:14 jasper Exp $
|
||||
--- config.h.in.orig Mon May 20 18:41:08 2002
|
||||
+++ config.h.in Thu Aug 21 15:54:10 2008
|
||||
@@ -9,6 +9,7 @@
|
||||
#undef DRIVER_ALSA_050
|
||||
#undef DRIVER_ESD
|
||||
#undef DRIVER_SGI
|
||||
+#undef DRIVER_SUN
|
||||
#undef USE_GNOME
|
||||
#undef NO_AUDIOFILE
|
||||
#undef NO_GASP
|
||||
@@ -146,6 +147,9 @@
|
||||
|
||||
/* Define if you have the <string.h> header file. */
|
||||
#undef HAVE_STRING_H
|
||||
+
|
||||
+/* Define if you have the <sys/audioio.h> header file. */
|
||||
+#undef HAVE_SYS_AUDIOIO_H
|
||||
|
||||
/* Define if you have the <sys/param.h> header file. */
|
||||
#undef HAVE_SYS_PARAM_H
|
@ -1,56 +0,0 @@
|
||||
$OpenBSD: patch-configure_in,v 1.4 2009/06/19 17:50:47 naddy Exp $
|
||||
--- configure.in.orig Mon May 20 18:47:38 2002
|
||||
+++ configure.in Thu Aug 21 15:54:10 2008
|
||||
@@ -61,10 +61,19 @@ dnl --------------------------------------------------
|
||||
dnl Test for GTK+ / GNOME
|
||||
dnl -----------------------------------------------------------------------
|
||||
|
||||
+case `uname` in
|
||||
+ OpenBSD)
|
||||
+ gtk_threads=""
|
||||
+ LIBS="$LIBS -pthread"
|
||||
+ ;;
|
||||
+ *)
|
||||
+ gtk_threads="gthreads"
|
||||
+ ;;
|
||||
+esac
|
||||
AM_PATH_GTK(1.2.2,
|
||||
,
|
||||
AC_MSG_ERROR(Cannot find GTK: Is gtk-config in path?),
|
||||
- "gthread")
|
||||
+ $gtk_threads)
|
||||
|
||||
gnome=yes
|
||||
AC_ARG_ENABLE(gnome,
|
||||
@@ -76,7 +85,7 @@ if test "$gnome" = yes; then
|
||||
AC_MSG_CHECKING(for Gnome compile flags)
|
||||
GNOME_CFLAGS=`$gnomepath gnomeui --cflags 2>/dev/null`
|
||||
GNOME_VER=`$gnomepath --version |$sedpath 's/gnome-libs //'`
|
||||
- GNOME_MAJOR=`echo $GNOME_VER |$sedpath 's/\([[0-9]*]*\).\([[0-9]*]*\).\([[0-9]*]*\)/\1/'`
|
||||
+ GNOME_MAJOR=`echo $GNOME_VER |$sedpath 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\1/'`
|
||||
if test "_$GNOME_MAJOR" = "_0"; then
|
||||
gnome=no
|
||||
AC_MSG_RESULT([old Gnome found, building without it.])
|
||||
@@ -218,6 +227,22 @@ case `uname` in
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
+
|
||||
+
|
||||
+dnl -----------------------------------------------------------------------
|
||||
+dnl Test for Sun audio
|
||||
+dnl -----------------------------------------------------------------------
|
||||
+
|
||||
+AC_ARG_ENABLE(sun,
|
||||
+[ --disable-sun Disable Sun driver (default = try)],
|
||||
+sun_support=no)
|
||||
+
|
||||
+if test x$sun_support != xno; then
|
||||
+ AC_CHECK_HEADERS(sys/audioio.h)
|
||||
+ if test "${ac_cv_header_sys_audioio_h}" = "yes"; then
|
||||
+ AC_DEFINE(DRIVER_SUN)
|
||||
+ fi
|
||||
+fi
|
||||
|
||||
dnl -----------------------------------------------------------------------
|
||||
dnl Other tests
|
@ -1,4 +1,5 @@
|
||||
@comment $OpenBSD: PLIST,v 1.7 2009/06/19 17:50:47 naddy Exp $
|
||||
@comment $OpenBSD: PLIST,v 1.8 2009/12/19 22:59:27 jakemsr Exp $
|
||||
@pkgpath audio/soundtracker,esd
|
||||
@pkgpath audio/soundtracker,gnome
|
||||
@pkgpath audio/soundtracker,gnome,esd
|
||||
@bin bin/soundtracker
|
||||
@ -8,15 +9,36 @@ share/doc/soundtracker/NEWS
|
||||
share/doc/soundtracker/README
|
||||
share/doc/soundtracker/xi.txt
|
||||
share/doc/soundtracker/xm.txt
|
||||
share/doc/soundtracker/xp.txt
|
||||
share/locale/da/LC_MESSAGES/soundtracker.mo
|
||||
share/locale/de/LC_MESSAGES/soundtracker.mo
|
||||
share/locale/en@boldquot/LC_MESSAGES/soundtracker.mo
|
||||
share/locale/en@quot/LC_MESSAGES/soundtracker.mo
|
||||
share/locale/es/LC_MESSAGES/soundtracker.mo
|
||||
share/locale/fr/LC_MESSAGES/soundtracker.mo
|
||||
share/locale/gl/LC_MESSAGES/soundtracker.mo
|
||||
share/locale/hr/LC_MESSAGES/soundtracker.mo
|
||||
share/locale/it/LC_MESSAGES/soundtracker.mo
|
||||
share/locale/ja/LC_MESSAGES/soundtracker.mo
|
||||
share/locale/no/LC_MESSAGES/soundtracker.mo
|
||||
share/locale/pl/LC_MESSAGES/soundtracker.mo
|
||||
share/locale/ru/LC_MESSAGES/soundtracker.mo
|
||||
share/locale/rw/
|
||||
share/locale/rw/LC_MESSAGES/
|
||||
share/locale/rw/LC_MESSAGES/soundtracker.mo
|
||||
share/locale/sk/LC_MESSAGES/soundtracker.mo
|
||||
share/locale/sl/LC_MESSAGES/soundtracker.mo
|
||||
share/locale/sv/LC_MESSAGES/soundtracker.mo
|
||||
share/locale/tr/LC_MESSAGES/soundtracker.mo
|
||||
share/locale/vi/LC_MESSAGES/soundtracker.mo
|
||||
share/soundtracker/
|
||||
share/soundtracker/downarrow.xpm
|
||||
share/soundtracker/flat.xpm
|
||||
share/soundtracker/lock.xpm
|
||||
share/soundtracker/muted.png
|
||||
share/soundtracker/play.xpm
|
||||
share/soundtracker/play_cur.xpm
|
||||
share/soundtracker/rightarrow.xpm
|
||||
share/soundtracker/sharp.xpm
|
||||
share/soundtracker/soundtracker_splash.png
|
||||
share/soundtracker/stop.xpm
|
||||
|
Loading…
Reference in New Issue
Block a user