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.

For big ones, I'll let you know. :)

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
>
------------------------------------------------------------------------------
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

Reply via email to