about summary refs log tree commit diff
path: root/src/game
diff options
context:
space:
mode:
Diffstat (limited to 'src/game')
-rw-r--r--src/game/client/gc_hooks.cpp48
-rw-r--r--src/game/g_variables.h2
2 files changed, 23 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());
diff --git a/src/game/g_variables.h b/src/game/g_variables.h
index 25dddf32..29030aae 100644
--- a/src/game/g_variables.h
+++ b/src/game/g_variables.h
@@ -7,6 +7,8 @@ MACRO_CONFIG_INT(cl_autoswitch_weapons, 0, 0, 1)
 MACRO_CONFIG_INT(cl_showfps, 0, 0, 1)
 
 MACRO_CONFIG_INT(cl_airjumpindicator, 1, 0, 1)
+MACRO_CONFIG_INT(cl_threadsoundloading, 0, 0, 1)
+
 
 MACRO_CONFIG_INT(cl_warning_tuning, 1, 0, 1)