about summary refs log tree commit diff
path: root/src/game/client
diff options
context:
space:
mode:
authorMagnus Auvinen <magnus.auvinen@gmail.com>2008-03-23 13:18:53 +0000
committerMagnus Auvinen <magnus.auvinen@gmail.com>2008-03-23 13:18:53 +0000
commit5c8b89e7e6b34a4c69a8fc9e662617d7e48e342b (patch)
treefcb9d8d4a787ecd976b63df6eef41385269a1318 /src/game/client
parenteecd528e705df3e76d957dc7e94043a8041b4fc7 (diff)
downloadzcatch-5c8b89e7e6b34a4c69a8fc9e662617d7e48e342b.tar.gz
zcatch-5c8b89e7e6b34a4c69a8fc9e662617d7e48e342b.zip
added option to thread the sound loading
Diffstat (limited to 'src/game/client')
-rw-r--r--src/game/client/gc_hooks.cpp48
1 files changed, 21 insertions, 27 deletions
diff --git a/src/game/client/gc_hooks.cpp b/src/game/client/gc_hooks.cpp
index 82ec33e2..d1882e9e 100644
--- a/src/game/client/gc_hooks.cpp
+++ b/src/game/client/gc_hooks.cpp
@@ -26,6 +26,9 @@ extern void menu_init();
 extern bool menu_active;
 extern bool menu_game_active;
 
+static float load_total;
+static float load_current;
+
 extern "C" void modc_console_init()
 {
 	client_console_init();
@@ -33,19 +36,23 @@ extern "C" void modc_console_init()
 
 //binds_save()
 
-/*static void load_sounds_thread(void *)
+static void load_sounds_thread(void *do_render)
 {
 	// load sounds
 	for(int s = 0; s < data->num_sounds; s++)
 	{
-		//render_loading(current/total);
+		if(do_render)
+			render_loading(load_current/load_total);
 		for(int i = 0; i < data->sounds[s].num_sounds; i++)
 		{
 			int id = snd_load_wv(data->sounds[s].sounds[i].filename);
 			data->sounds[s].sounds[i].id = id;
 		}
+
+		if(do_render)
+			load_current++;
 	}
-}*/
+}
 
 extern "C" void modc_init()
 {
@@ -81,39 +88,26 @@ extern "C" void modc_init()
 	// TODO: should be removed
 	snd_set_listener_pos(0.0f, 0.0f);
 
-	float total = data->num_images+data->num_sounds;
-	float current = 0;
+	// setup load amount
+	load_total = data->num_images;
+	load_current = 0;
+	if(!config.cl_threadsoundloading)
+		load_total += data->num_sounds;
 	
 	// load textures
 	for(int i = 0; i < data->num_images; i++)
 	{
-		render_loading(current/total);
+		render_loading(load_current/load_total);
 		data->images[i].id = gfx_load_texture(data->images[i].filename, IMG_AUTO);
-		current++;
+		load_current++;
 	}
 
 	skin_init();
 	
-	//load_sounds_thread(0);
-	//thread_create(load_sounds_thread, 0);
-
-	// load sounds
-	for(int s = 0; s < data->num_sounds; s++)
-	{
-		render_loading(current/total);
-		for(int i = 0; i < data->sounds[s].num_sounds; i++)
-		{
-			int id;
-			//if (strcmp(data->sounds[s].sounds[i].filename + strlen(data->sounds[s].sounds[i].filename) - 3, ".wv") == 0)
-			id = snd_load_wv(data->sounds[s].sounds[i].filename);
-			//else
-			//	id = snd_load_wav(data->sounds[s].sounds[i].filename);
-
-			data->sounds[s].sounds[i].id = id;
-		}
-
-		current++;
-	}
+	if(config.cl_threadsoundloading)
+		thread_create(load_sounds_thread, 0);
+	else
+		load_sounds_thread((void*)1);
 	
 	int64 end = time_get();
 	dbg_msg("", "%f.2ms", ((end-start)*1000)/(float)time_freq());