summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPerttu Ahola <celeron55@gmail.com>2012-03-21 13:31:47 +0200
committerPerttu Ahola <celeron55@gmail.com>2012-03-21 15:06:44 +0200
commit71b2e0e002603e1a0e01a095e5e8e562e758c209 (patch)
tree5356eacebec72f104bce18a99fc6ff8d6a512d0c
parent7d1ac4d1f6b53fb5e99ba86dd654d27b27146898 (diff)
downloadminetest-71b2e0e002603e1a0e01a095e5e8e562e758c209.tar.gz
minetest-71b2e0e002603e1a0e01a095e5e8e562e758c209.tar.bz2
minetest-71b2e0e002603e1a0e01a095e5e8e562e758c209.zip
Modify and clean main loop to allow measuring the proper times
-rw-r--r--src/game.cpp156
1 files changed, 55 insertions, 101 deletions
diff --git a/src/game.cpp b/src/game.cpp
index 49f4b4ad9..34fdaf559 100644
--- a/src/game.cpp
+++ b/src/game.cpp
@@ -1040,12 +1040,6 @@ void the_game(
Inventory local_inventory(itemdef);
/*
- Move into game
- */
-
- //gui_loadingtext->remove();
-
- /*
Add some gui stuff
*/
@@ -1095,26 +1089,6 @@ void the_game(
guitext_profiler->setBackgroundColor(video::SColor(120,0,0,0));
guitext_profiler->setVisible(false);
- /*GUIQuickInventory *quick_inventory = new GUIQuickInventory
- (guienv, NULL, v2s32(10, 70), 5, &local_inventory);*/
- /*GUIQuickInventory *quick_inventory = new GUIQuickInventory
- (guienv, NULL, v2s32(0, 0), quickinv_itemcount, &local_inventory);*/
-
- // Test the text input system
- /*(new GUITextInputMenu(guienv, guiroot, -1, &g_menumgr,
- NULL))->drop();*/
- /*GUIMessageMenu *menu =
- new GUIMessageMenu(guienv, guiroot, -1,
- &g_menumgr,
- L"Asd");
- menu->drop();*/
-
- // Launch pause menu
- /*(new GUIPauseMenu(guienv, guiroot, -1, g_gamecallback,
- &g_menumgr))->drop();*/
-
- //s32 guitext_chat_pad_bottom = 70;
-
/*
Some statistics are collected in these
*/
@@ -1122,11 +1096,7 @@ void the_game(
u32 beginscenetime = 0;
u32 scenetime = 0;
u32 endscenetime = 0;
- u32 alltime = 0;
- // A test
- //throw con::PeerNotFoundException("lol");
-
float recent_turn_speed = 0.0;
ProfilerGraph graph;
@@ -1179,68 +1149,9 @@ void the_game(
for(;;)
{
- TimeTaker tt_all("mainloop: all");
-
if(device->run() == false || kill == true)
break;
- if(client.accessDenied())
- {
- error_message = L"Access denied. Reason: "
- +client.accessDeniedReason();
- errorstream<<wide_to_narrow(error_message)<<std::endl;
- break;
- }
-
- if(g_gamecallback->disconnect_requested)
- {
- g_gamecallback->disconnect_requested = false;
- break;
- }
-
- if(g_gamecallback->changepassword_requested)
- {
- (new GUIPasswordChange(guienv, guiroot, -1,
- &g_menumgr, &client))->drop();
- g_gamecallback->changepassword_requested = false;
- }
-
- /*
- Process TextureSource's queue
- */
- tsrc->processQueue();
-
- /*
- Random calculations
- */
- last_screensize = screensize;
- screensize = driver->getScreenSize();
- v2s32 displaycenter(screensize.X/2,screensize.Y/2);
- //bool screensize_changed = screensize != last_screensize;
-
- // Resize hotbar
- if(screensize.Y <= 800)
- hotbar_imagesize = 32;
- else if(screensize.Y <= 1280)
- hotbar_imagesize = 48;
- else
- hotbar_imagesize = 64;
-
- // Hilight boxes collected during the loop and displayed
- core::list< core::aabbox3d<f32> > hilightboxes;
-
- // Info text
- std::wstring infotext;
-
- // When screen size changes, update positions and sizes of stuff
- /*if(screensize_changed)
- {
- v2s32 pos(displaycenter.X-((quickinv_itemcount-1)*quickinv_spacing+quickinv_size)/2, screensize.Y-quickinv_spacing);
- quick_inventory->updatePosition(pos);
- }*/
-
- //TimeTaker //timer1("//timer1");
-
// Time of frame without fps limit
float busytime;
u32 busytime_u32;
@@ -1253,9 +1164,9 @@ void the_game(
busytime_u32 = 0;
busytime = busytime_u32 / 1000.0;
}
+
+ g_profiler->graphAdd("mainloop_other", busytime - (float)drawtime/1000.0f);
- //infostream<<"busytime_u32="<<busytime_u32<<std::endl;
-
// Necessary for device->getTimer()->getTime()
device->run();
@@ -1271,6 +1182,7 @@ void the_game(
{
u32 sleeptime = frametime_min - busytime_u32;
device->sleep(sleeptime);
+ g_profiler->graphAdd("mainloop_sleep", (float)sleeptime/1000.0f);
}
}
@@ -1301,13 +1213,6 @@ void the_game(
g_profiler->avg("FPS", 1./dtime);
/*
- Visualize frametime in terminal
- */
- /*for(u32 i=0; i<dtime*400; i++)
- infostream<<"X";
- infostream<<std::endl;*/
-
- /*
Time average and jitter calculation
*/
@@ -1360,7 +1265,59 @@ void the_game(
jitter1_min = 0.0;
}
}
+
+ /*
+ Handle miscellaneous stuff
+ */
+ if(client.accessDenied())
+ {
+ error_message = L"Access denied. Reason: "
+ +client.accessDeniedReason();
+ errorstream<<wide_to_narrow(error_message)<<std::endl;
+ break;
+ }
+
+ if(g_gamecallback->disconnect_requested)
+ {
+ g_gamecallback->disconnect_requested = false;
+ break;
+ }
+
+ if(g_gamecallback->changepassword_requested)
+ {
+ (new GUIPasswordChange(guienv, guiroot, -1,
+ &g_menumgr, &client))->drop();
+ g_gamecallback->changepassword_requested = false;
+ }
+
+ /*
+ Process TextureSource's queue
+ */
+ tsrc->processQueue();
+
+ /*
+ Random calculations
+ */
+ last_screensize = screensize;
+ screensize = driver->getScreenSize();
+ v2s32 displaycenter(screensize.X/2,screensize.Y/2);
+ //bool screensize_changed = screensize != last_screensize;
+
+ // Resize hotbar
+ if(screensize.Y <= 800)
+ hotbar_imagesize = 32;
+ else if(screensize.Y <= 1280)
+ hotbar_imagesize = 48;
+ else
+ hotbar_imagesize = 64;
+
+ // Hilight boxes collected during the loop and displayed
+ core::list< core::aabbox3d<f32> > hilightboxes;
+
+ // Info text
+ std::wstring infotext;
+
/*
Debug info for client
*/
@@ -2718,9 +2675,6 @@ void the_game(
lastFPS = fps;
}
- alltime = tt_all.stop(true);
- g_profiler->graphAdd("mainloop_other", (float)(alltime-drawtime)/1000.0f);
-
/*
Log times and stuff for visualization
*/