changeset 2761:41a80a649b9d

Automated merge with ssh://hg.atheme.org//hg/audacious-plugins
author Matti Hamalainen <ccr@tnsp.org>
date Wed, 02 Jul 2008 08:04:04 +0300
parents 652651eeb5f1 (current diff) 35ac6cb80680 (diff)
children 22d73f09eecc
files
diffstat 3 files changed, 88 insertions(+), 82 deletions(-) [+]
line wrap: on
line diff
--- a/src/alsa/alsa.h	Tue Jul 01 21:13:48 2008 +0300
+++ b/src/alsa/alsa.h	Wed Jul 02 08:04:04 2008 +0300
@@ -41,15 +41,15 @@
 
 struct alsa_config
 {
-	char *pcm_device;
-	int mixer_card;
-	char *mixer_device;
-	int buffer_time;
-	int period_time;
+	gchar *pcm_device;
+	gint mixer_card;
+	gchar *mixer_device;
+	gint buffer_time;
+	gint period_time;
 	gboolean debug;
 	struct
 	{
-		int left, right;
+		gint left, right;
 	} vol;
 };
 
@@ -57,21 +57,21 @@
 
 void alsa_about(void);
 void alsa_configure(void);
-int alsa_get_mixer(snd_mixer_t **mixer, int card);
+gint alsa_get_mixer(snd_mixer_t **mixer, gint card);
 void alsa_save_config(void);
 
-void alsa_get_volume(int *l, int *r);
-void alsa_set_volume(int l, int r);
+void alsa_get_volume(gint *l, gint *r);
+void alsa_set_volume(gint l, gint r);
 
-int alsa_playing(void);
-int alsa_free(void);
-void alsa_write(void *ptr, int length);
+gint alsa_playing(void);
+gint alsa_free(void);
+void alsa_write(void *ptr, gint length);
 void alsa_close(void);
-void alsa_flush(int time);
-void alsa_pause(short p);
-int alsa_open(AFormat fmt, int rate, int nch);
-int alsa_get_output_time(void);
-int alsa_get_written_time(void);
+void alsa_flush(gint time);
+void alsa_pause(gshort p);
+gint alsa_open(AFormat fmt, gint rate, gint nch);
+gint alsa_get_output_time(void);
+gint alsa_get_written_time(void);
 void alsa_tell(AFormat * fmt, gint * rate, gint * nch);
 
 extern GStaticMutex alsa_mutex;
--- a/src/alsa/audio.c	Tue Jul 01 21:13:48 2008 +0300
+++ b/src/alsa/audio.c	Wed Jul 02 08:04:04 2008 +0300
@@ -46,8 +46,8 @@
 static guint64 output_time_offset;
 
 /* device buffer/period sizes in bytes */
-static int hw_buffer_size, hw_period_size;		/* in output bytes */
-static int hw_buffer_size_in, hw_period_size_in;	/* in input bytes */
+static gint hw_buffer_size, hw_period_size;		/* in output bytes */
+static gint hw_buffer_size_in, hw_period_size_in;	/* in input bytes */
 
 /* Set/Get volume */
 static snd_mixer_elem_t *pcm_element;
@@ -60,32 +60,32 @@
 
 /* for audio thread */
 static GThread *audio_thread;	 /* audio loop thread */
-static int thread_buffer_size;	 /* size of intermediate buffer in bytes */
-static char *thread_buffer;	 /* audio intermediate buffer */
-static int rd_index, wr_index;	 /* current read/write position in int-buffer */
+static gint thread_buffer_size;	 /* size of intermediate buffer in bytes */
+static gchar *thread_buffer;	 /* audio intermediate buffer */
+static gint rd_index, wr_index;	 /* current read/write position in int-buffer */
 static gboolean pause_request;	 /* pause status currently requested */
-static int flush_request;	 /* flush status (time) currently requested */
-static int prebuffer_size;
+static gint flush_request;	 /* flush status (time) currently requested */
+static gint prebuffer_size;
 GStaticMutex alsa_mutex = G_STATIC_MUTEX_INIT;
 
 struct snd_format {
-	unsigned int rate;
-	unsigned int channels;
+	guint rate;
+	guint channels;
 	snd_pcm_format_t format;
 	AFormat xmms_format;
-	int sample_bits;
-	int bps;
+	gint sample_bits;
+	gint bps;
 };
 
 static struct snd_format *inputf = NULL;
 static struct snd_format *outputf = NULL;
 
-static int alsa_setup(struct snd_format *f);
-static void alsa_write_audio(char *data, int length);
+static gint alsa_setup(struct snd_format *f);
+static void alsa_write_audio(gchar *data, gint length);
 static void alsa_cleanup_mixer(void);
-static int get_thread_buffer_filled(void);
+static gint get_thread_buffer_filled(void);
 
-static struct snd_format * snd_format_from_xmms(AFormat fmt, int rate, int channels);
+static struct snd_format * snd_format_from_xmms(AFormat fmt, gint rate, gint channels);
 
 static const struct {
 	AFormat xmms;
@@ -115,9 +115,9 @@
 };
 
 
-static void debug(char *str, ...) G_GNUC_PRINTF(1, 2);
+static void debug(gchar *str, ...) G_GNUC_PRINTF(1, 2);
 
-static void debug(char *str, ...)
+static void debug(gchar *str, ...)
 {
 	va_list args;
 
@@ -140,10 +140,10 @@
                get_thread_buffer_filled() > hw_period_size_in;
 }
 
-static int
-alsa_recovery(int err)
+static gint
+alsa_recovery(gint err)
 {
-	int err2;
+	gint err2;
 
 	/* if debug mode is enabled, dump ALSA state to console */
 	if (alsa_cfg.debug)
@@ -298,7 +298,7 @@
 
 /* reopen ALSA PCM */
 #if 0
-static int alsa_reopen(struct snd_format *f)
+static gint alsa_reopen(struct snd_format *f)
 {
 	/* remember the current position */
 	output_time_offset += (alsa_hw_written * 1000) / outputf->bps;
@@ -311,7 +311,7 @@
 #endif
 
 /* do flush (drop) operation */
-static void alsa_do_flush(int time)
+static void alsa_do_flush(gint time)
 {
 	if (alsa_pcm)
 	{
@@ -324,16 +324,16 @@
 	rd_index = wr_index = alsa_hw_written = 0;
 }
 
-void alsa_flush(int time)
+void alsa_flush(gint time)
 {
 	flush_request = time;
 	while ((flush_request != -1) && (going))
 		g_usleep(10000);
 }
 
-static void parse_mixer_name(char *str, char **name, int *index)
+static void parse_mixer_name(gchar *str, gchar **name, gint *index)
 {
-	char *end;
+	gchar *end;
 
 	while (isspace(*str))
 		str++;
@@ -351,10 +351,10 @@
 	}
 }
 
-int alsa_get_mixer(snd_mixer_t **mixer, int card)
+gint alsa_get_mixer(snd_mixer_t **mixer, gint card)
 {
-	char *dev;
-	int err;
+	gchar *dev;
+	gint err;
 
 	debug("alsa_get_mixer");
 
@@ -393,7 +393,7 @@
 }
 
 
-static snd_mixer_elem_t* alsa_get_mixer_elem(snd_mixer_t *mixer, char *name, int index)
+static snd_mixer_elem_t* alsa_get_mixer_elem(snd_mixer_t *mixer, gchar *name, gint index)
 {
 	snd_mixer_selem_id_t *selem_id;
 	snd_mixer_elem_t* elem;
@@ -411,10 +411,10 @@
 
 static int alsa_setup_mixer(void)
 {
-	char *name;
-	long int a, b;
-	long alsa_min_vol, alsa_max_vol;
-	int err, index;
+	gchar *name;
+	glong a, b;
+	glong alsa_min_vol, alsa_max_vol;
+	gint err, index;
 
 	debug("alsa_setup_mixer");
 
@@ -471,9 +471,9 @@
 	}
 }
 
-void alsa_get_volume(int *l, int *r)
+void alsa_get_volume(gint *l, gint *r)
 {
-	long ll = *l, lr = *r;
+	glong ll = *l, lr = *r;
 
 	if (mixer_start)
 	{
@@ -497,7 +497,7 @@
 }
 
 
-void alsa_set_volume(int l, int r)
+void alsa_set_volume(gint l, gint r)
 {
 	if (!pcm_element)
 		return;
@@ -541,7 +541,7 @@
 	return thread_buffer_size - (rd_index - wr_index);
 }
 
-int alsa_get_output_time(void)
+gint alsa_get_output_time(void)
 {
 	snd_pcm_sframes_t delay;
 	guint64 bytes = alsa_hw_written;
@@ -560,7 +560,7 @@
 	return output_time_offset + (bytes * 1000) / outputf->bps;
 }
 
-int alsa_get_written_time(void)
+gint alsa_get_written_time(void)
 {
 	if (!going)
 		return 0;
@@ -581,10 +581,10 @@
 }
 
 /* write callback */
-void alsa_write(gpointer data, int length)
+void alsa_write(gpointer data, gint length)
 {
-	int cnt;
-	char *src = (char *)data;
+	gint cnt;
+	gchar *src = (gchar *)data;
 	
 	remove_prebuffer = FALSE;
 	
@@ -602,7 +602,7 @@
 }
 
 /* transfer data to audio h/w via normal write */
-static void alsa_write_audio(char *data, int length)
+static void alsa_write_audio(gchar *data, gint length)
 {
 	snd_pcm_sframes_t written_frames;
 
@@ -655,8 +655,8 @@
 /* FIXME: proper lock? */
 static void *alsa_loop(void *arg)
 {
-	int npfds = snd_pcm_poll_descriptors_count(alsa_pcm);
-	int wr = 0;
+	gint npfds = snd_pcm_poll_descriptors_count(alsa_pcm);
+	gint wr = 0;
 
 	g_static_mutex_lock(&alsa_mutex);
 
@@ -704,7 +704,7 @@
 }
 
 /* open callback */
-int alsa_open(AFormat fmt, int rate, int nch)
+gint alsa_open(AFormat fmt, gint rate, gint nch)
 {
 	debug("Opening device");
 	if((inputf = snd_format_from_xmms(fmt, rate, nch)) == NULL) return 0;
@@ -751,11 +751,11 @@
 	return 1;
 }
 
-static struct snd_format * snd_format_from_xmms(AFormat fmt, int rate, int channels)
+static struct snd_format * snd_format_from_xmms(AFormat fmt, gint rate, gint channels)
 {
 	struct snd_format *f = g_malloc(sizeof(struct snd_format));
 	size_t i;
-        int found = 0;
+    gint found = 0;
 
 	f->xmms_format = fmt;
 	f->format = SND_PCM_FORMAT_UNKNOWN;
@@ -790,12 +790,12 @@
 	return f;
 }
 
-static int alsa_setup(struct snd_format *f)
+static gint alsa_setup(struct snd_format *f)
 {
-	int err;
+	gint err;
 	snd_pcm_hw_params_t *hwparams = NULL;
 	snd_pcm_sw_params_t *swparams = NULL;
-	unsigned int alsa_buffer_time, alsa_period_time;
+	guint alsa_buffer_time, alsa_period_time;
 	snd_pcm_uframes_t alsa_buffer_size, alsa_period_size;
 
 	debug("alsa_setup");
--- a/src/alsa/configure.c	Tue Jul 01 21:13:48 2008 +0300
+++ b/src/alsa/configure.c	Wed Jul 02 08:04:04 2008 +0300
@@ -24,7 +24,7 @@
 
 static GtkWidget *devices_combo, *mixer_devices_combo;
 
-static int current_mixer_card;
+static gint current_mixer_card;
 
 #define GET_SPIN_INT(spin) \
 	gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(spin))
@@ -58,10 +58,10 @@
 	aud_cfg_db_close(cfgfile);
 }
 
-static int get_cards(GtkOptionMenu *omenu, GtkSignalFunc cb, int active)
+static gint get_cards(GtkOptionMenu *omenu, GtkSignalFunc cb, gint active)
 {
 	GtkWidget *menu, *item;
-	int card = -1, err, set = 0, curr = -1;
+	gint card = -1, err, set = 0, curr = -1;
 
 	menu = gtk_menu_new();
 	if ((err = snd_card_next(&card)) != 0)
@@ -69,7 +69,7 @@
 
 	while (card > -1)
 	{
-		char *label;
+		gchar *label;
 
 		curr++;
 		if (card == active)
@@ -98,10 +98,10 @@
 	return set;
 }
 
-static int get_mixer_devices(GtkCombo *combo, int card)
+static gint get_mixer_devices(GtkCombo *combo, gint card)
 {
 	GList *items = NULL;
-	int err;
+	gint err;
 	snd_mixer_t *mixer;
 	snd_mixer_elem_t *current;
 
@@ -112,10 +112,16 @@
 
 	while (current)
 	{
-		const char *sname = snd_mixer_selem_get_name(current);
 		if (snd_mixer_selem_is_active(current) &&
 		    snd_mixer_selem_has_playback_volume(current))
-			items = g_list_append(items, g_strdup(sname));
+		{
+			const gchar *sname = snd_mixer_selem_get_name(current);
+			gint index = snd_mixer_selem_get_index(current);
+			if (index)
+				items = g_list_append(items, g_strdup_printf("%s,%d", sname, index));
+			else
+				items = g_list_append(items, g_strdup(sname));
+		}
 		current = snd_mixer_elem_next(current);
 	}
 
@@ -124,13 +130,13 @@
 	return 0;
 }
 
-static void get_devices_for_card(GtkCombo *combo, int card)
+static void get_devices_for_card(GtkCombo *combo, gint card)
 {
 	GtkWidget *item;
-	int pcm_device = -1, err;
+	gint pcm_device = -1, err;
 	snd_pcm_info_t *pcm_info = NULL;
 	snd_ctl_t *ctl;
-	char dev[64], *card_name;
+	gchar dev[64], *card_name;
 
 	sprintf(dev, "hw:%i", card);
 
@@ -194,9 +200,9 @@
 static void get_devices(GtkCombo *combo)
 {
 	GtkWidget *item;
-	int card = -1;
-	int err = 0;
-	char *descr;
+	gint card = -1;
+	gint err = 0;
+	gchar *descr;
 
 	descr = g_strdup_printf(_("Default PCM device (%s)"), "default");
 	item = gtk_list_item_new_with_label(descr);
@@ -244,7 +250,7 @@
 	GtkObject *buffer_time_adj, *period_time_adj;
 	GtkWidget *bbox, *ok, *cancel;
 
-	int mset;
+	gint mset;
 
 	if (configure_win)
 	{