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

View File

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

View File

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

View File

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

View File

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

View File

@ -110,6 +110,7 @@ _ecore_evas_wince_idle_enter(void *data __UNUSED__)
double t1 = 0.0;
double t2 = 0.0;
if (!ecore_evases) return 1;
if (_ecore_evas_fps_debug)
{
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
static void
static int
_ecore_evas_x_render(Ecore_Evas *ee)
{
Evas_Rectangle *r;
Eina_List *updates, *l;
Evas_Rectangle *r;
Eina_List *updates, *l;
int rend = 0;
#ifdef BUILD_ECORE_EVAS_BUFFER
Eina_List *ll;
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);
if ((ee->alpha) && (updates))
ecore_x_window_shape_input_mask_set(ee->engine.x.win, ee->engine.x.mask);
}
if (updates)
{
evas_render_updates_free(updates);
_ecore_evas_idle_timeout_update(ee);
rend = 1;
}
}
else
@ -280,6 +279,7 @@ _ecore_evas_x_render(Ecore_Evas *ee)
{
evas_render_updates_free(updates);
_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);
evas_render_updates_free(updates);
_ecore_evas_idle_timeout_update(ee);
rend = 1;
}
}
else
@ -306,12 +307,14 @@ _ecore_evas_x_render(Ecore_Evas *ee)
if (ee->alpha)
ecore_x_window_shape_input_mask_set(ee->engine.x.win, ee->engine.x.mask);
_ecore_evas_idle_timeout_update(ee);
rend = 1;
}
}
}
else
evas_norender(ee->evas);
if (ee->func.fn_post_render) ee->func.fn_post_render(ee);
return rend;
}
static void
@ -1256,7 +1259,9 @@ _ecore_evas_x_idle_enter(void *data __UNUSED__)
Ecore_List2 *l;
double t1 = 0.0;
double t2 = 0.0;
int rend = 0;
if (!ecore_evases) return 1;
if (_ecore_evas_fps_debug)
{
t1 = ecore_time_get();
@ -1266,13 +1271,14 @@ _ecore_evas_x_idle_enter(void *data __UNUSED__)
Ecore_Evas *ee;
ee = (Ecore_Evas *)l;
_ecore_evas_x_render(ee);
rend |= _ecore_evas_x_render(ee);
}
ecore_x_flush();
if (_ecore_evas_fps_debug)
{
t2 = ecore_time_get();
_ecore_evas_fps_debug_rendertime_add(t2 - t1);
if (rend)
_ecore_evas_fps_debug_rendertime_add(t2 - t1);
}
return 1;
}