changeset 577:fdddab8f0c1b

Scrubbing through the filter configuration code; Configuration dialog window delete event was not handled and caused problems if WM's "close window" was used, fixed.
author Matti Hamalainen <ccr@tnsp.org>
date Tue, 20 Mar 2007 13:43:00 +0000
parents 7d08a5adc162
children d9290bd40037
files src/xs_config.c src/xs_genui.c src/xs_genui.h src/xs_sidplay2.cc xmms-sid.glade
diffstat 5 files changed, 105 insertions(+), 19 deletions(-) [+]
line wrap: on
line diff
--- a/src/xs_config.c	Tue Mar 20 13:14:02 2007 +0000
+++ b/src/xs_config.c	Tue Mar 20 13:43:00 2007 +0000
@@ -292,8 +292,6 @@
 	g_snprintf(tmpKey, sizeof(tmpKey), "filter%dNPoints", nFilter);
 	if (!XS_CFG_GET_INT(cfg, XS_CONFIG_IDENT, tmpKey, &(pResult->npoints)))
 		return FALSE;
-	if (pResult->npoints > XS_SIDPLAY2_NFPOINTS)
-		return FALSE;
 	
 	g_snprintf(tmpKey, sizeof(tmpKey), "filter%dName", nFilter);
 	if (!XS_CFG_GET_STRING(cfg, XS_CONFIG_IDENT, tmpKey, &tmpStr))
@@ -473,7 +471,8 @@
 		}
 	}
 	
-xs_filter_load_into(cfg, 0, &xs_cfg.sid2Filter);
+	/* Filters and presets are a special case */
+	xs_filter_load_into(cfg, 0, &xs_cfg.sid2Filter);
 
 	XS_CONFIG_FREE(cfg);
 
@@ -481,7 +480,6 @@
 	XSDEBUG("OK\n");
 }
 
-#include "tmp.c"
 
 /* Write the current configuration
  */
@@ -498,6 +496,7 @@
 
 #ifndef AUDACIOUS_PLUGIN
 	if (!cfg) cfg = xmms_cfg_new();
+	if (!cfg) return -1;
 #endif
 
 	/* Write the new settings to XMMS configuration file */
@@ -529,10 +528,6 @@
 		}
 	}
 
-xs_filter_save(cfg, &testFilter6581R4, 0);
-xs_filter_save(cfg, &testFilter6581R1, 1);
-xs_filters_export("paske.filters", &testFilter6581R1, 1);
-
 
 	XS_CONFIG_WRITE(cfg);
 	XS_CONFIG_FREE(cfg);
@@ -939,6 +934,21 @@
 }
 
 
+gboolean xs_configwin_delete(GtkWidget * widget, GdkEvent * event, gpointer user_data)
+{
+	(void) widget;
+	(void) event;
+	(void) user_data;
+	
+	XSDEBUG("config::delete_event\n");
+	if (xs_configwin) {
+		gtk_widget_destroy(xs_configwin);
+		xs_configwin = NULL;
+	}
+	return FALSE;
+}
+
+
 /* Execute the configuration panel
  */
 void xs_configure(void)
@@ -946,10 +956,10 @@
 	gint i;
 	gfloat tmpValue;
 	gchar tmpStr[32];
-	GtkWidget *c;
+	GtkWidget *tmpCurve;
 
 	/* Check if the window already exists */
-	if (xs_configwin != NULL) {
+	if (xs_configwin) {
 		gdk_window_raise(xs_configwin->window);
 		return;
 	}
@@ -961,19 +971,20 @@
 	XS_MUTEX_LOCK(xs_cfg);
 
 	/* Create the custom filter curve widget for libSIDPlay2 */
-	c = xs_curve_new();
-	xs_curve_reset(XS_CURVE(c));
-	xs_curve_set_range(XS_CURVE(c),
+	tmpCurve = xs_curve_new();
+	xs_curve_reset(XS_CURVE(tmpCurve));
+	xs_curve_set_range(XS_CURVE(tmpCurve),
 		0,0, XS_SIDPLAY2_NFPOINTS, XS_SIDPLAY2_FMAX);
-	xs_curve_set_points(XS_CURVE(c),
+
+	xs_curve_set_points(XS_CURVE(tmpCurve),
 		xs_cfg.sid2Filter.points, xs_cfg.sid2Filter.npoints);
 	
-	gtk_widget_set_name(c, "cfg_sp2_filter_curve");
-	gtk_widget_ref(c);
+	gtk_widget_set_name(tmpCurve, "cfg_sp2_filter_curve");
+	gtk_widget_ref(tmpCurve);
 	gtk_object_set_data_full(GTK_OBJECT(xs_configwin),
-		"cfg_sp2_filter_curve", c, (GtkDestroyNotify) gtk_widget_unref);
-	gtk_widget_show(c);
-	gtk_container_add(GTK_CONTAINER(LUW("cfg_sp2_filter_frame")), c);
+		"cfg_sp2_filter_curve", tmpCurve, (GtkDestroyNotify) gtk_widget_unref);
+	gtk_widget_show(tmpCurve);
+	gtk_container_add(GTK_CONTAINER(LUW("cfg_sp2_filter_frame")), tmpCurve);
 
 
 	/* Based on available optional parts, gray out options */
--- a/src/xs_genui.c	Tue Mar 20 13:14:02 2007 +0000
+++ b/src/xs_genui.c	Tue Mar 20 13:43:00 2007 +0000
@@ -39,3 +39,43 @@
 {
 
 }
+
+
+void
+xs_filter_import_fs_ok                 (GtkButton       *button,
+                                        gpointer         user_data)
+{
+
+}
+
+
+void
+xs_filter_import_fs_cancel             (GtkButton       *button,
+                                        gpointer         user_data)
+{
+
+}
+
+
+void
+xs_filter_export_fs_ok                 (GtkButton       *button,
+                                        gpointer         user_data)
+{
+
+}
+
+
+void
+xs_filter_export_fs_cancel             (GtkButton       *button,
+                                        gpointer         user_data)
+{
+
+}
+
+
+void
+xs_cfg_sp2_filter_delete               (GtkButton       *button,
+                                        gpointer         user_data)
+{
+
+}
--- a/src/xs_genui.h	Tue Mar 20 13:14:02 2007 +0000
+++ b/src/xs_genui.h	Tue Mar 20 13:43:00 2007 +0000
@@ -133,3 +133,28 @@
 void
 xs_cfg_hvsc_fs_cancel                  (GtkButton       *button,
                                         gpointer         user_data);
+
+void
+xs_filter_import_fs_ok                 (GtkButton       *button,
+                                        gpointer         user_data);
+
+void
+xs_filter_import_fs_cancel             (GtkButton       *button,
+                                        gpointer         user_data);
+
+void
+xs_filter_export_fs_ok                 (GtkButton       *button,
+                                        gpointer         user_data);
+
+void
+xs_filter_export_fs_cancel             (GtkButton       *button,
+                                        gpointer         user_data);
+
+void
+xs_cfg_sp2_filter_delete               (GtkButton       *button,
+                                        gpointer         user_data);
+
+gboolean
+xs_configwin_delete                    (GtkWidget       *widget,
+                                        GdkEvent        *event,
+                                        gpointer         user_data);
--- a/src/xs_sidplay2.cc	Tue Mar 20 13:14:02 2007 +0000
+++ b/src/xs_sidplay2.cc	Tue Mar 20 13:43:00 2007 +0000
@@ -204,6 +204,11 @@
 	/* Convert filter */
 	f = &(xs_cfg.sid2Filter);
 	XSDEBUG("using filter '%s', %d points\n", f->name, f->npoints);
+	if (f->npoints > XS_SIDPLAY2_NFPOINTS) {
+		xs_error(_("[SIDPlay2] Invalid number of filter curve points (%d > %d)\n"),
+			f->npoints, XS_SIDPLAY2_NFPOINTS);
+		f->npoints = XS_SIDPLAY2_NFPOINTS;
+	}
 	
 	tmpFilter.points = f->npoints;
 	for (i = 0; i < f->npoints; i++) {
--- a/xmms-sid.glade	Tue Mar 20 13:14:02 2007 +0000
+++ b/xmms-sid.glade	Tue Mar 20 13:43:00 2007 +0000
@@ -24,6 +24,11 @@
 <widget>
   <class>GtkWindow</class>
   <name>xs_configwin</name>
+  <signal>
+    <name>delete_event</name>
+    <handler>xs_configwin_delete</handler>
+    <last_modification_time>Tue, 20 Mar 2007 13:23:53 GMT</last_modification_time>
+  </signal>
   <title>XMMS-SID configuration</title>
   <type>GTK_WINDOW_DIALOG</type>
   <position>GTK_WIN_POS_NONE</position>