devilhorns pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=3ec7c4b5174dc373ddaf5f1bf65e4113d2fd59d2

commit 3ec7c4b5174dc373ddaf5f1bf65e4113d2fd59d2
Author: Chris Michael <[email protected]>
Date:   Tue Mar 18 07:29:47 2014 +0000

    evas-drm: Fix engine to use the output's framebuffer as window id
    
    @fix: ecore_evas_window_get expects an Ecore_Window to be returned.
    Because of this, we need to have a 'window' that can be returned via
    ecore_evas. For this case, we will use the output's framebuffer id as
    the 'window' so we need to set that into the engine info so that
    ecore_evas can fetch it.
    
    Signed-off-by: Chris Michael <[email protected]>
---
 src/modules/evas/engines/drm/evas_drm.c    | 5 ++---
 src/modules/evas/engines/drm/evas_engine.h | 2 +-
 src/modules/evas/engines/drm/evas_outbuf.c | 2 ++
 3 files changed, 5 insertions(+), 4 deletions(-)

diff --git a/src/modules/evas/engines/drm/evas_drm.c 
b/src/modules/evas/engines/drm/evas_drm.c
index 0f63bad..3fc952f 100644
--- a/src/modules/evas/engines/drm/evas_drm.c
+++ b/src/modules/evas/engines/drm/evas_drm.c
@@ -469,7 +469,6 @@ evas_drm_outbuf_setup(Outbuf *ob)
    drmModePlaneResPtr pres;
    int i = 0;
    uint64_t dumb;
-   unsigned int fb;
 
    /* check for valid Output buffer */
    if ((!ob) || (ob->priv.fd < 0)) return EINA_FALSE;
@@ -539,7 +538,7 @@ evas_drm_outbuf_setup(Outbuf *ob)
         ob->priv.crtc = crtc;
 
         /* get the current framebuffer */
-        fb = _evas_drm_crtc_buffer_get(ob->priv.fd, crtc);
+        ob->priv.fb = _evas_drm_crtc_buffer_get(ob->priv.fd, crtc);
 
         /* spew out connector properties for testing */
         /* drmModePropertyPtr props; */
@@ -576,7 +575,7 @@ evas_drm_outbuf_setup(Outbuf *ob)
             (ob->priv.mode.vdisplay != conn->modes[0].vdisplay))
           {
              /* set new crtc mode */
-             drmModeSetCrtc(ob->priv.fd, ob->priv.crtc, fb, 0, 0, 
+             drmModeSetCrtc(ob->priv.fd, ob->priv.crtc, ob->priv.fb, 0, 0, 
                             &ob->priv.conn, 1, &ob->priv.mode);
           }
 
diff --git a/src/modules/evas/engines/drm/evas_engine.h 
b/src/modules/evas/engines/drm/evas_engine.h
index 3d7eff8..0487ad6 100644
--- a/src/modules/evas/engines/drm/evas_engine.h
+++ b/src/modules/evas/engines/drm/evas_engine.h
@@ -108,7 +108,7 @@ struct _Outbuf
    struct 
      {
         int fd;
-        unsigned int conn, crtc;
+        unsigned int conn, crtc, fb;
 
         Buffer buffer[NUM_BUFFERS];
         int curr, num;
diff --git a/src/modules/evas/engines/drm/evas_outbuf.c 
b/src/modules/evas/engines/drm/evas_outbuf.c
index 8cafcf2..5a1fcea 100644
--- a/src/modules/evas/engines/drm/evas_outbuf.c
+++ b/src/modules/evas/engines/drm/evas_outbuf.c
@@ -97,6 +97,8 @@ evas_outbuf_setup(Evas_Engine_Info_Drm *info, int w, int h)
         return NULL;
      }
 
+   info->info.output = ob->priv.fb;
+
    ob->priv.num = NUM_BUFFERS;
 
    /* check for buffer override */

-- 


Reply via email to