devilhorns pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=47a2602af7554c8876ad078bc49d029a292aa715

commit 47a2602af7554c8876ad078bc49d029a292aa715
Author: Chris Michael <cp.mich...@samsung.com>
Date:   Wed Jun 3 14:30:10 2015 -0400

    evas-gl-drm: Readd support for pre_swap/post_swap callbacks
    
    Summary: The pre/post swap callbacks were forgotten when doing the
    engine rewrite, so readd them
    
    @fix
    
    Signed-off-by: Chris Michael <cp.mich...@samsung.com>
---
 src/modules/evas/engines/gl_drm/Evas_Engine_GL_Drm.h |  7 +++++++
 src/modules/evas/engines/gl_drm/evas_engine.c        |  6 ++++++
 src/modules/evas/engines/gl_drm/evas_engine.h        |  2 ++
 src/modules/evas/engines/gl_drm/evas_outbuf.c        | 10 +++++-----
 4 files changed, 20 insertions(+), 5 deletions(-)

diff --git a/src/modules/evas/engines/gl_drm/Evas_Engine_GL_Drm.h 
b/src/modules/evas/engines/gl_drm/Evas_Engine_GL_Drm.h
index 6cb7923..17fe8cb 100644
--- a/src/modules/evas/engines/gl_drm/Evas_Engine_GL_Drm.h
+++ b/src/modules/evas/engines/gl_drm/Evas_Engine_GL_Drm.h
@@ -29,6 +29,13 @@ struct _Evas_Engine_Info_GL_Drm
         unsigned char swap_mode : 4;
      } info;
 
+   struct
+     {
+        void (*pre_swap)(void *data, Evas *evas);
+        void (*post_swap)(void *data, Evas *evas);
+        void *data;
+     } callback;
+
    /* non-blocking or blocking mode */
    Evas_Engine_Render_Mode render_mode;
 };
diff --git a/src/modules/evas/engines/gl_drm/evas_engine.c 
b/src/modules/evas/engines/gl_drm/evas_engine.c
index 280035d..835417c 100644
--- a/src/modules/evas/engines/gl_drm/evas_engine.c
+++ b/src/modules/evas/engines/gl_drm/evas_engine.c
@@ -794,6 +794,8 @@ eng_setup(Evas *evas, void *in)
              return 0;
           }
 
+        ob->evas = evas;
+
         if (!evas_render_engine_gl_generic_init(&re->generic, ob,
                                                 evas_outbuf_buffer_state_get,
                                                 evas_outbuf_rot_get,
@@ -861,6 +863,8 @@ eng_setup(Evas *evas, void *in)
                   evas_outbuf_use(ob);
                   if (ob)
                     {
+                       ob->evas = evas;
+
                        
evas_render_engine_software_generic_update(&re->generic.software, ob,
                                                                   
epd->output.w, epd->output.h);
 
@@ -889,6 +893,8 @@ eng_setup(Evas *evas, void *in)
                   evas_outbuf_use(ob);
                   if (ob)
                     {
+                       ob->evas = evas;
+
                        
evas_render_engine_software_generic_update(&re->generic.software, ob,
                                                                   
epd->output.w, epd->output.h);
 
diff --git a/src/modules/evas/engines/gl_drm/evas_engine.h 
b/src/modules/evas/engines/gl_drm/evas_engine.h
index b00cf38..3aa25e4 100644
--- a/src/modules/evas/engines/gl_drm/evas_engine.h
+++ b/src/modules/evas/engines/gl_drm/evas_engine.h
@@ -66,6 +66,8 @@ struct _Outbuf
    Evas_Engine_Info_GL_Drm *info;
    Evas_Engine_GL_Context *gl_context;
 
+   Evas *evas; // used for pre_swap, post_swap
+
    int w, h;
    unsigned int rotation, depth;
    Render_Engine_Swap_Mode swap_mode;
diff --git a/src/modules/evas/engines/gl_drm/evas_outbuf.c 
b/src/modules/evas/engines/gl_drm/evas_outbuf.c
index 124a356..4365efe 100644
--- a/src/modules/evas/engines/gl_drm/evas_outbuf.c
+++ b/src/modules/evas/engines/gl_drm/evas_outbuf.c
@@ -214,7 +214,7 @@ evas_outbuf_new(Evas_Engine_Info_GL_Drm *info, int w, int 
h, Render_Engine_Swap_
    ob->depth = info->info.depth;
    ob->rotation = info->info.rotation;
    ob->destination_alpha = info->info.destination_alpha;
-   ob->vsync = info->info.vsync;
+   /* ob->vsync = info->info.vsync; */
    ob->gbm = info->info.gbm;
    ob->surface = info->info.surface;
    ob->swap_mode = swap_mode;
@@ -528,8 +528,8 @@ evas_outbuf_flush(Outbuf *ob, Tilebuf_Rect *rects 
EINA_UNUSED, Evas_Render_Mode
         ob->vsync = 1;
      }
 
-   /* if (ob->info->callback.pre_swap) */
-   /*   ob->info->callback.pre_swap(ob->info->callback.data, ob->evas); */
+   if (ob->info->callback.pre_swap)
+     ob->info->callback.pre_swap(ob->info->callback.data, ob->evas);
 
 // TODO: Check eglSwapBuffersWithDamage for gl_drm and apply
 #if 0
@@ -592,8 +592,8 @@ evas_outbuf_flush(Outbuf *ob, Tilebuf_Rect *rects 
EINA_UNUSED, Evas_Render_Mode
 #endif
       eglSwapBuffers(ob->egl.disp, ob->egl.surface[0]);
 
-   /* if (ob->info->callback.post_swap) */
-   /*   ob->info->callback.post_swap(ob->info->callback.data, ob->evas); */
+   if (ob->info->callback.post_swap)
+     ob->info->callback.post_swap(ob->info->callback.data, ob->evas);
 
    //Flush GL Surface data to Framebuffer
    _evas_outbuf_buffer_swap(ob, NULL, 0);

-- 


Reply via email to