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
|
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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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();
|
||||||
|
|
|
@ -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();
|
||||||
|
|
|
@ -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)
|
||||||
{
|
{
|
||||||
|
|
|
@ -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();
|
||||||
|
|
|
@ -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();
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue