diff -u base/plugins/swapchannels/swapchannels.C hvirtual-1.1.5/plugins/swapchannels/swapchannels.C
--- base/plugins/swapchannels/swapchannels.C	2003-05-04 02:51:49.000000000 +0200
+++ hvirtual-1.1.5/plugins/swapchannels/swapchannels.C	2003-05-09 15:24:12.000000000 +0200
@@ -179,6 +179,7 @@
  : PluginVClient(server)
 {
 	PLUGIN_CONSTRUCTOR_MACRO
+	temp = 0;
 	reset();
 }
 
@@ -186,15 +187,15 @@
 {
 	PLUGIN_DESTRUCTOR_MACRO
 	
-	if (defaults) delete defaults;
 	if(temp) delete temp;
 }
 
 void SwapMain::reset()
 {
+	if (temp) delete temp;
 	temp = 0;
 	thread = 0;
-	defaults = 0;
+//	defaults = 0;
 }
 
 int SwapMain::is_realtime() 
@@ -219,14 +220,16 @@
 
 int SwapMain::load_defaults()
 {
-	char directory[1024], string[1024];
+	if (!defaults) 
+	{
+		char directory[1024];
 // set the default directory
-	sprintf(directory, "%sswapchannels.rc", BCASTDIR);
+		sprintf(directory, "%sswapchannels.rc", BCASTDIR);
 
 // load the defaults
-	defaults = new Defaults(directory);
-	defaults->load();
-
+		defaults = new Defaults(directory);
+		defaults->load();
+	}
 	config.red = defaults->get("RED", config.red);
 	config.green = defaults->get("GREEN", config.green);
 	config.blue = defaults->get("BLUE", config.blue);
diff -u base/libmpeg3/audio/mpeg3audio.c hvirtual-1.1.5/libmpeg3/audio/mpeg3audio.c
--- base/libmpeg3/audio/mpeg3audio.c	2003-05-01 15:11:39.000000000 +0200
+++ hvirtual-1.1.5/libmpeg3/audio/mpeg3audio.c	2003-05-09 15:14:43.000000000 +0200
@@ -8,6 +8,7 @@
 
 
 static pthread_mutex_t *decode_lock = 0;
+static decode_lock_usage_count = 0;
 
 
 
@@ -170,6 +171,14 @@
 	if(audio->layer_decoder) mpeg3_delete_layer(audio->layer_decoder);
 	if(audio->pcm_decoder) mpeg3_delete_pcm(audio->pcm_decoder);
 	free(audio);
+	decode_lock_usage_count --;
+	if (!decode_lock_usage_count)
+	{
+		pthread_mutex_destroy(decode_lock);
+		free(decode_lock);
+		decode_lock = 0;
+	}
+
 	return 0;
 }
 
@@ -396,6 +405,7 @@
 		pthread_mutexattr_init(&attr);
 		pthread_mutex_init(decode_lock, &attr);
 	}
+	decode_lock_usage_count ++;
 
 	audio->file = file;
 	audio->track = track;
