forked from enlightenment/efl
ECORE_EVAS_FPS_DEBUG now printfs useful data.
SVN revision: 39273
This commit is contained in:
parent
56e28f91b6
commit
9911c70dff
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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)
|
||||
{
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue