On 23/07/13 07:17, Sung W. Park wrote: > No problem. :) > > I was worried that I would break something since I couldn't compile it but > it was simple a simple addition so I just went ahead with it. No Worries :) Ideally I would request at Least a compile check ;) (let's not pick up any bad habits from the French borker) ;) but I understand not being able to compile it. Yes, for simple additions like this don't worry too much about it. I'll be able to compile and run it for testing so any breakage would get detected promptly anyway ;) > For big ones, I'll let you know. :) Not a problem :) I look forward to any help or efforts that you want to contribute :)
Cheers, Chris > cheers, > Sung > > > On Tue, Jul 23, 2013 at 2:58 PM, Christopher Michael <cp.mich...@samsung.com >> wrote: >> Thank you for porting this !! :) >> >> Cheers, >> dh >> >> On 23/07/13 02:29, Sung W. Park - Enlightenment Git wrote: >>> sung pushed a commit to branch master. >>> >>> commit 7aa516c01a620da3438de864ac0c0e5b80c93d0b >>> Author: Sung W. Park <dunamis.p...@samsung.com> >>> Date: Tue Jul 23 10:23:36 2013 +0900 >>> >>> Evas: adding image dump debug feature for wayland_egl backend >>> >>> Porting commit f10c108283d9b76708418ba172b9ff0b28a09cd6 to wayland >>> engine. >>> >>> Added a feature to dump out a png image before calling SwapBuffers. >>> To turn on the feature, use the following env vars. >>> >>> EVAS_GL_SWAP_BUFFER_DEBUG_DIR="dir_name" sets the name of the >> directory >>> that the files will be output to and enables the debug mode. >>> >>> EVAS_GL_SWAP_BUFFER_DEBUG_ALWAYS=1 will enable the writing of the >>> files every frame. This in effect turns on the swap_buffer_debug >>> variable, which can be set on or off in gdb for debugging. This >> will >>> allow dumping of certain frames without having to dump out a ton of >>> files to track down one frame. >>> --- >>> src/modules/evas/engines/wayland_egl/evas_engine.c | 43 >> ++++++++++++++++++++++ >>> 1 file changed, 43 insertions(+) >>> >>> diff --git a/src/modules/evas/engines/wayland_egl/evas_engine.c >> b/src/modules/evas/engines/wayland_egl/evas_engine.c >>> index 1db4dbd..65edcca 100644 >>> --- a/src/modules/evas/engines/wayland_egl/evas_engine.c >>> +++ b/src/modules/evas/engines/wayland_egl/evas_engine.c >>> @@ -41,6 +41,7 @@ struct _Render_Engine >>> Eina_Bool lost_back : 1; >>> Eina_Bool end : 1; >>> Eina_Bool evgl_initted : 1; >>> + int frame_cnt; >>> >>> struct >>> { >>> @@ -103,6 +104,9 @@ static Eina_Bool extn_have_buffer_age = EINA_TRUE; >>> static int safe_native = -1; >>> static int partial_rect_union_mode = -1; >>> >>> +static int swap_buffer_debug_mode = -1; >>> +static int swap_buffer_debug = 0; >>> + >>> /* function tables - filled in later (func and parent func) */ >>> static Evas_Func func, pfunc; >>> static EVGL_Interface evgl_funcs = >>> @@ -1188,6 +1192,7 @@ static void >>> eng_output_flush(void *data, Evas_Render_Mode render_mode) >>> { >>> Render_Engine *re; >>> + static char *dname = NULL; >>> >>> if (!(re = (Render_Engine *)data)) return; >>> >>> @@ -1201,6 +1206,41 @@ eng_output_flush(void *data, Evas_Render_Mode >> render_mode) >>> evas_gl_common_context_done(re->win->gl_context); >>> >>> + // Save contents of the framebuffer to a file >>> + if (swap_buffer_debug_mode == -1) >>> + { >>> + if ((dname = getenv("EVAS_GL_SWAP_BUFFER_DEBUG_DIR"))) >>> + { >>> + int stat; >>> + // Create a directory with 0775 permission >>> + stat = mkdir(dname, >> S_IRWXU|S_IRGRP|S_IXGRP|S_IROTH|S_IXOTH); >>> + if ((!stat) || errno == EEXIST) swap_buffer_debug_mode = 1; >>> + } >>> + else >>> + swap_buffer_debug_mode = 0; >>> + } >>> + >>> + if (swap_buffer_debug_mode == 1) >>> + { >>> + // Set this env var to dump files every frame >>> + // Or set the global var in gdb to 1|0 to turn it on and off >>> + if (getenv("EVAS_GL_SWAP_BUFFER_DEBUG_ALWAYS")) >>> + swap_buffer_debug = 1; >>> + >>> + if (swap_buffer_debug) >>> + { >>> + char fname[100]; >>> + int ret = 0; >>> + sprintf(fname, "%p", (void*)re->win); >>> + >>> + ret = evas_gl_common_buffer_dump(re->win->gl_context, >>> + (const char*)dname, >>> + (const char*)fname, >>> + re->frame_cnt); >>> + if (!ret) swap_buffer_debug_mode = 0; >>> + } >>> + } >>> + >>> if (!re->vsync) >>> { >>> if (re->info->vsync) eglSwapInterval(re->win->egl_disp, 1); >>> @@ -1278,6 +1318,9 @@ eng_output_flush(void *data, Evas_Render_Mode >> render_mode) >>> evas_common_tilebuf_free_render_rects(re->rects); >>> re->rects = NULL; >>> } >>> + >>> + re->frame_cnt++; >>> + >>> end: >>> evas_gl_preload_render_unlock(eng_gl_preload_make_current, re); >>> } >>> >> >> ------------------------------------------------------------------------------ See everything from the browser to the database with AppDynamics Get end-to-end visibility with application monitoring from AppDynamics Isolate bottlenecks and diagnose root cause in seconds. Start your free trial of AppDynamics Pro today! http://pubads.g.doubleclick.net/gampad/clk?id=48808831&iu=/4140/ostg.clktrk _______________________________________________ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel