changeset 492:0dd1ff7e5ba7 trunk

[svn] flac 112 plugin: stability fixes and a new option to disable bitrate update in player window during playback (saves cpu, this is the solution for most people playing flac and reporting high cpu usage)
author giacomo
date Sun, 21 Jan 2007 16:03:30 -0800
parents 9fc8b269e811
children 31d21ad70903
files ChangeLog src/flac112/configure.c src/flac112/configure.h src/flac112/plugin.c
diffstat 4 files changed, 35 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog	Sun Jan 21 15:34:56 2007 -0800
+++ b/ChangeLog	Sun Jan 21 16:03:30 2007 -0800
@@ -1,3 +1,10 @@
+2007-01-21 23:34:56 +0000  Giacomo Lozito <james@develia.org>
+  revision [1068]
+  flac 113 plugin: small fixes
+  trunk/src/flac113/plugin.c |    8 ++++++--
+  1 file changed, 6 insertions(+), 2 deletions(-)
+
+
 2007-01-21 23:33:20 +0000  Giacomo Lozito <james@develia.org>
   revision [1066]
   flac 112 plugin: disabled built-in http stream support
--- a/src/flac112/configure.c	Sun Jan 21 15:34:56 2007 -0800
+++ b/src/flac112/configure.c	Sun Jan 21 16:03:30 2007 -0800
@@ -46,7 +46,8 @@
 		FALSE, /* tag_override */
 		NULL, /* tag_format */
 		FALSE, /* convert_char_set */
-		NULL /* user_char_set */
+		NULL, /* user_char_set */
+		FALSE /* disable bitrate update */
 	},
 	/* stream */
 	{
@@ -92,7 +93,7 @@
 static GtkWidget *flac_configurewin = NULL;
 static GtkWidget *vbox, *notebook;
 
-static GtkWidget *title_tag_override, *title_tag_box, *title_tag_entry, *title_desc;
+static GtkWidget *title_tag_override, *title_tag_box, *title_tag_entry, *title_desc, *title_disable_bitrate_update;
 static GtkWidget *convert_char_set, *fileCharacterSetEntry, *userCharacterSetEntry;
 static GtkWidget *replaygain_enable, *replaygain_album_mode;
 static GtkWidget *replaygain_preamp_hscale, *replaygain_preamp_label, *replaygain_hard_limit;
@@ -126,12 +127,14 @@
 
 	(void)widget, (void)data; /* unused arguments */
 	g_free(flac_cfg.title.tag_format);
+	g_free(flac_cfg.title.user_char_set);
 	flac_cfg.title.tag_format = g_strdup(gtk_entry_get_text(GTK_ENTRY(title_tag_entry)));
-	flac_cfg.title.user_char_set = Charset_Get_Name_From_Title(gtk_entry_get_text_1(userCharacterSetEntry));
+	flac_cfg.title.user_char_set = g_strdup(Charset_Get_Name_From_Title(gtk_entry_get_text_1(userCharacterSetEntry)));
 
 	db = bmp_cfg_db_open();
 	/* title */
 	bmp_cfg_db_set_bool(db, "flac", "title.tag_override", flac_cfg.title.tag_override);
+	bmp_cfg_db_set_bool(db, "flac", "title.disable_bitrate_update", flac_cfg.title.disable_bitrate_update);
 	bmp_cfg_db_set_string(db, "flac", "title.tag_format", flac_cfg.title.tag_format);
 	bmp_cfg_db_set_bool(db, "flac", "title.convert_char_set", flac_cfg.title.convert_char_set);
 	bmp_cfg_db_set_string(db, "flac", "title.user_char_set", flac_cfg.title.user_char_set);
@@ -198,6 +201,12 @@
 	gtk_widget_set_sensitive(userCharacterSetEntry, flac_cfg.title.convert_char_set);
 }
 
+static void disable_bitrate_update_cb(GtkWidget *widget, gpointer data)
+{
+	(void)widget, (void)data; /* unused arguments */
+	flac_cfg.title.disable_bitrate_update = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(title_disable_bitrate_update));
+}
+
 static void replaygain_enable_cb(GtkWidget *widget, gpointer data)
 {
 	(void)widget, (void)data; /* unused arguments */
@@ -378,6 +387,12 @@
 	gtk_widget_set_sensitive(title_desc, flac_cfg.title.tag_override);
 	gtk_box_pack_start(GTK_BOX(title_tag_vbox), title_desc, FALSE, FALSE, 0);
 
+	gtk_box_pack_start(GTK_BOX(title_tag_vbox), gtk_hseparator_new(), FALSE, FALSE, 0);
+	title_disable_bitrate_update = gtk_check_button_new_with_label(_("Disable bitrate update during playback (saves cpu)"));
+	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(title_disable_bitrate_update), flac_cfg.title.disable_bitrate_update);
+	gtk_signal_connect(GTK_OBJECT(title_disable_bitrate_update), "clicked", (GCallback)disable_bitrate_update_cb, NULL);
+	gtk_box_pack_start(GTK_BOX(title_tag_vbox), title_disable_bitrate_update, FALSE, FALSE, 0);
+
 	gtk_notebook_append_page(GTK_NOTEBOOK(notebook), title_frame, gtk_label_new(_("Title")));
 
 	/* Output config.. */
--- a/src/flac112/configure.h	Sun Jan 21 15:34:56 2007 -0800
+++ b/src/flac112/configure.h	Sun Jan 21 16:03:30 2007 -0800
@@ -29,6 +29,7 @@
 		gchar *tag_format;
 		gboolean convert_char_set;
 		gchar *user_char_set;
+		gboolean disable_bitrate_update;
 	} title;
 
 	struct {
--- a/src/flac112/plugin.c	Sun Jan 21 15:34:56 2007 -0800
+++ b/src/flac112/plugin.c	Sun Jan 21 16:03:30 2007 -0800
@@ -239,6 +239,8 @@
 
 	bmp_cfg_db_get_bool(db, "flac", "title.tag_override", &flac_cfg.title.tag_override);
 
+	bmp_cfg_db_get_bool(db, "flac", "title.disable_bitrate_update", &flac_cfg.title.disable_bitrate_update);
+
 	if(!bmp_cfg_db_get_string(db, "flac", "title.tag_format", &flac_cfg.title.tag_format))
 		flac_cfg.title.tag_format = g_strdup("%p - %t");
 
@@ -447,28 +449,28 @@
     flac_ip.description = NULL;
 
     if (flac_cfg.title.tag_format) {
-        free(flac_cfg.title.tag_format);
+        g_free(flac_cfg.title.tag_format);
         flac_cfg.title.tag_format = NULL;
     }
 
     if (flac_cfg.title.user_char_set) {
-        free(flac_cfg.title.user_char_set);
+        g_free(flac_cfg.title.user_char_set);
         flac_cfg.title.user_char_set = NULL;
     }
 
     if (flac_cfg.stream.proxy_host) {
-        free(flac_cfg.stream.proxy_host);
+        g_free(flac_cfg.stream.proxy_host);
         flac_cfg.stream.proxy_host = NULL;
     }
 
     if (flac_cfg.stream.proxy_user) {
-        free(flac_cfg.stream.proxy_user);
+        g_free(flac_cfg.stream.proxy_user);
         flac_cfg.stream.proxy_user = NULL;
 
     }
 
     if (flac_cfg.stream.proxy_pass) {
-        free(flac_cfg.stream.proxy_pass);
+        g_free(flac_cfg.stream.proxy_pass);
         flac_cfg.stream.proxy_pass = NULL;
     }
 
@@ -587,7 +589,8 @@
 				sample_buffer_first_ = sample_buffer_last_ = 0;
 			}
 		}
-		else {
+		else if ( !flac_cfg.title.disable_bitrate_update )
+		{
 			/* display the right bitrate from history */
 			unsigned bh_index_o = flac_ip.output->output_time() / BITRATE_HIST_SEGMENT_MSEC % BITRATE_HIST_SIZE;
 			if(bh_index_o != bh_index_last_o && bh_index_o != bh_index_last_w && bh_index_o != (bh_index_last_w + 1) % BITRATE_HIST_SIZE) {