# HG changeset patch # User Matti Hamalainen # Date 1103475244 0 # Node ID a9a5924eb10cce8b1673713204a2f5b2b45ff728 # Parent 92bad4c7b9981dc64098f5590a9ca6ac7461e789 Have and use a mutex for xs_cfg configuration structure. diff -r 92bad4c7b998 -r a9a5924eb10c src/xs_config.c --- a/src/xs_config.c Sun Dec 19 16:53:05 2004 +0000 +++ b/src/xs_config.c Sun Dec 19 16:54:04 2004 +0000 @@ -40,6 +40,9 @@ /* * Configuration specific stuff */ +XS_MUTEX(xs_cfg); +struct t_xs_cfg xs_cfg; + t_xs_cfg_item xs_cfgtable[] = { {CTYPE_INT, &xs_cfg.audioBitsPerSample, "audioBitsPerSample"}, {CTYPE_INT, &xs_cfg.audioChannels, "audioChannels"}, @@ -81,7 +84,7 @@ {CTYPE_STR, &xs_cfg.titleFormat, "titleFormat"}, }; -const gint xs_cfgtable_max = (sizeof(xs_cfgtable) / sizeof(t_xs_cfg_item)); +static const gint xs_cfgtable_max = (sizeof(xs_cfgtable) / sizeof(t_xs_cfg_item)); t_xs_wid_item xs_widtable[] = { @@ -139,7 +142,7 @@ }; -const gint xs_widtable_max = (sizeof(xs_widtable) / sizeof(t_xs_wid_item)); +static const gint xs_widtable_max = (sizeof(xs_widtable) / sizeof(t_xs_wid_item)); /* @@ -148,9 +151,13 @@ void xs_reset_filters(void) { /* Reset filter values (copied from libsidplay1's headers) */ + XS_MUTEX_LOCK(xs_cfg); + xs_cfg.filterFs = 400.0f; xs_cfg.filterFm = 60.0f; xs_cfg.filterFt = 0.05f; + + XS_MUTEX_UNLOCK(xs_cfg); } @@ -164,6 +171,7 @@ gint i; XSDEBUG("initializing configuration ...\n"); + XS_MUTEX_LOCK(xs_cfg); /* Pre-initialize configuration structure */ xs_cfg.audioBitsPerSample = XS_RES_16BIT; @@ -287,6 +295,7 @@ /* Free the config file */ xmms_cfg_free(cfgFile); + XS_MUTEX_UNLOCK(xs_cfg); XSDEBUG("OK\n"); } @@ -302,6 +311,7 @@ gint i; XSDEBUG("writing configuration ...\n"); + XS_MUTEX_LOCK(xs_cfg); /* * Try to open the XMMS configuration file @@ -316,7 +326,6 @@ if (!cfgFile) cfgFile = xmms_cfg_new(); - /* Write the new settings to XMMS configuration file */ for (i = 0; i < xs_cfgtable_max; i++) { @@ -354,6 +363,8 @@ /* Free the memory areas */ xmms_cfg_free(cfgFile); + XS_MUTEX_UNLOCK(xs_cfg); + return 0; } @@ -452,11 +463,15 @@ */ void xs_cfg_filter_reset(void) { + XS_MUTEX_LOCK(xs_cfg); + xs_reset_filters(); gtk_adjustment_set_value(gtk_range_get_adjustment(GTK_RANGE(LUW("cfg_emu_filt_fs"))), xs_cfg.filterFs); gtk_adjustment_set_value(gtk_range_get_adjustment(GTK_RANGE(LUW("cfg_emu_filt_fm"))), xs_cfg.filterFm); gtk_adjustment_set_value(gtk_range_get_adjustment(GTK_RANGE(LUW("cfg_emu_filt_ft"))), xs_cfg.filterFt); + + XS_MUTEX_UNLOCK(xs_cfg); } @@ -737,6 +752,8 @@ /* Create the window */ xs_configwin = create_xs_configwin(); + /* Get lock on configuration */ + XS_MUTEX_LOCK(xs_cfg); /* Based on available optional parts, gray out options */ #ifndef HAVE_SIDPLAY1 @@ -832,7 +849,11 @@ break; } } - + + /* Release the configuration */ + XS_MUTEX_UNLOCK(xs_cfg); + + /* Show the widget */ gtk_widget_show(xs_configwin); } diff -r 92bad4c7b998 -r a9a5924eb10c src/xs_config.h --- a/src/xs_config.h Sun Dec 19 16:53:05 2004 +0000 +++ b/src/xs_config.h Sun Dec 19 16:54:04 2004 +0000 @@ -111,6 +111,7 @@ } xs_cfg; +XS_MUTEX_H(xs_cfg); /* * Configuration-file