ECORE_EVAS_FPS_DEBUG now printfs useful data.

SVN revision: 39273
This commit is contained in:
Carsten Haitzler 2009-02-28 07:54:47 +00:00
parent 56e28f91b6
commit 9911c70dff
7 changed files with 48 additions and 26 deletions

View File

@ -2398,19 +2398,30 @@ _ecore_evas_fps_debug_shutdown(void)
void void
_ecore_evas_fps_debug_rendertime_add(double t) _ecore_evas_fps_debug_rendertime_add(double t)
{ {
if ((_ecore_evas_fps_debug_fd >= 0) && static double rtime = 0.0;
(_ecore_evas_fps_rendertime_mmap)) static double rlapse = 0.0;
static int frames = 0;
static int flapse = 0;
double tim;
tim = ecore_time_get();
rtime += t;
frames++;
if (rlapse == 0.0)
{ {
unsigned int tm; rlapse = tim;
flapse = frames;
tm = (unsigned int)(t * 1000000.0); }
/* i know its not 100% theoretically guaranteed, but i'd say a write */ else if ((tim - rlapse) >= 0.5)
/* of an int could be considered atomic for all practical purposes */ {
/* oh and since this is cumulative, 1 second = 1,000,000 ticks, so */ printf("FRAME: %i, FPS: %3.1f, RTIME %3.0f%%\n",
/* this can run for about 4294 seconds becore looping. if you are */ frames,
/* doing performance testing in one run for over an hour... well */ (frames - flapse) / (tim - rlapse),
/* time to restart or handle a loop condition :) */ (100.0 * rtime) / (tim - rlapse)
*(_ecore_evas_fps_rendertime_mmap) += tm; );
rlapse = tim;
flapse = frames;
rtime = 0.0;
} }
} }

View File

@ -55,9 +55,10 @@ static int
_ecore_evas_directfb_idle_enter(void *data __UNUSED__) _ecore_evas_directfb_idle_enter(void *data __UNUSED__)
{ {
Ecore_List2 *l; Ecore_List2 *l;
double t1 = 0.; double t1 = 0.0;
double t2 = 0.; double t2 = 0.0;
if (!ecore_evases) return 1;
if (_ecore_evas_fps_debug) if (_ecore_evas_fps_debug)
{ {
t1 = ecore_time_get(); t1 = ecore_time_get();

View File

@ -205,9 +205,10 @@ static int
_ecore_evas_idle_enter(void *data __UNUSED__) _ecore_evas_idle_enter(void *data __UNUSED__)
{ {
Ecore_List2 *l; Ecore_List2 *l;
double t1 = 0.; double t1 = 0.0;
double t2 = 0.; double t2 = 0.0;
if (!ecore_evases) return 1;
if (_ecore_evas_fps_debug) if (_ecore_evas_fps_debug)
{ {
t1 = ecore_time_get(); t1 = ecore_time_get();

View File

@ -235,9 +235,10 @@ static int
_ecore_evas_idle_enter(void *data __UNUSED__) _ecore_evas_idle_enter(void *data __UNUSED__)
{ {
Ecore_List2 *l; Ecore_List2 *l;
double t1 = 0.; double t1 = 0.0;
double t2 = 0.; double t2 = 0.0;
if (!ecore_evases) return 1;
#ifndef _WIN32 #ifndef _WIN32
if (_ecore_evas_fps_debug) if (_ecore_evas_fps_debug)
{ {

View File

@ -114,6 +114,7 @@ _ecore_evas_win32_idle_enter(void *data __UNUSED__)
double t1 = 0.0; double t1 = 0.0;
double t2 = 0.0; double t2 = 0.0;
if (!ecore_evases) return 1;
if (_ecore_evas_fps_debug) if (_ecore_evas_fps_debug)
{ {
t1 = ecore_time_get(); t1 = ecore_time_get();

View File

@ -110,6 +110,7 @@ _ecore_evas_wince_idle_enter(void *data __UNUSED__)
double t1 = 0.0; double t1 = 0.0;
double t2 = 0.0; double t2 = 0.0;
if (!ecore_evases) return 1;
if (_ecore_evas_fps_debug) if (_ecore_evas_fps_debug)
{ {
t1 = ecore_time_get(); t1 = ecore_time_get();

View File

@ -139,11 +139,12 @@ _ecore_evas_x_gl_window_new(Ecore_Evas *ee, Ecore_X_Window parent, int x, int y,
#endif /* HAVE_ECORE_X_XCB */ #endif /* HAVE_ECORE_X_XCB */
#endif #endif
static void static int
_ecore_evas_x_render(Ecore_Evas *ee) _ecore_evas_x_render(Ecore_Evas *ee)
{ {
Evas_Rectangle *r; Evas_Rectangle *r;
Eina_List *updates, *l; Eina_List *updates, *l;
int rend = 0;
#ifdef BUILD_ECORE_EVAS_BUFFER #ifdef BUILD_ECORE_EVAS_BUFFER
Eina_List *ll; Eina_List *ll;
Ecore_Evas *ee2; Ecore_Evas *ee2;
@ -171,11 +172,9 @@ _ecore_evas_x_render(Ecore_Evas *ee)
ecore_x_window_shape_mask_set(ee->engine.x.win, ee->engine.x.mask); ecore_x_window_shape_mask_set(ee->engine.x.win, ee->engine.x.mask);
if ((ee->alpha) && (updates)) if ((ee->alpha) && (updates))
ecore_x_window_shape_input_mask_set(ee->engine.x.win, ee->engine.x.mask); ecore_x_window_shape_input_mask_set(ee->engine.x.win, ee->engine.x.mask);
}
if (updates)
{
evas_render_updates_free(updates); evas_render_updates_free(updates);
_ecore_evas_idle_timeout_update(ee); _ecore_evas_idle_timeout_update(ee);
rend = 1;
} }
} }
else else
@ -280,6 +279,7 @@ _ecore_evas_x_render(Ecore_Evas *ee)
{ {
evas_render_updates_free(updates); evas_render_updates_free(updates);
_ecore_evas_idle_timeout_update(ee); _ecore_evas_idle_timeout_update(ee);
rend = 1;
} }
} }
} }
@ -295,6 +295,7 @@ _ecore_evas_x_render(Ecore_Evas *ee)
ecore_x_window_shape_mask_set(ee->engine.x.win, ee->engine.x.mask); ecore_x_window_shape_mask_set(ee->engine.x.win, ee->engine.x.mask);
evas_render_updates_free(updates); evas_render_updates_free(updates);
_ecore_evas_idle_timeout_update(ee); _ecore_evas_idle_timeout_update(ee);
rend = 1;
} }
} }
else else
@ -306,12 +307,14 @@ _ecore_evas_x_render(Ecore_Evas *ee)
if (ee->alpha) if (ee->alpha)
ecore_x_window_shape_input_mask_set(ee->engine.x.win, ee->engine.x.mask); ecore_x_window_shape_input_mask_set(ee->engine.x.win, ee->engine.x.mask);
_ecore_evas_idle_timeout_update(ee); _ecore_evas_idle_timeout_update(ee);
rend = 1;
} }
} }
} }
else else
evas_norender(ee->evas); evas_norender(ee->evas);
if (ee->func.fn_post_render) ee->func.fn_post_render(ee); if (ee->func.fn_post_render) ee->func.fn_post_render(ee);
return rend;
} }
static void static void
@ -1256,7 +1259,9 @@ _ecore_evas_x_idle_enter(void *data __UNUSED__)
Ecore_List2 *l; Ecore_List2 *l;
double t1 = 0.0; double t1 = 0.0;
double t2 = 0.0; double t2 = 0.0;
int rend = 0;
if (!ecore_evases) return 1;
if (_ecore_evas_fps_debug) if (_ecore_evas_fps_debug)
{ {
t1 = ecore_time_get(); t1 = ecore_time_get();
@ -1266,13 +1271,14 @@ _ecore_evas_x_idle_enter(void *data __UNUSED__)
Ecore_Evas *ee; Ecore_Evas *ee;
ee = (Ecore_Evas *)l; ee = (Ecore_Evas *)l;
_ecore_evas_x_render(ee); rend |= _ecore_evas_x_render(ee);
} }
ecore_x_flush(); ecore_x_flush();
if (_ecore_evas_fps_debug) if (_ecore_evas_fps_debug)
{ {
t2 = ecore_time_get(); t2 = ecore_time_get();
_ecore_evas_fps_debug_rendertime_add(t2 - t1); if (rend)
_ecore_evas_fps_debug_rendertime_add(t2 - t1);
} }
return 1; return 1;
} }