stefan pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=2761b71c68bd4a4a15c49af065ef093aa9c9de38

commit 2761b71c68bd4a4a15c49af065ef093aa9c9de38
Author: Stefan Schmidt <[email protected]>
Date:   Fri Aug 29 12:48:49 2014 +0200

    evas/engine/drm: Hold a reference to the Ecore_Drm_Device
    
    We will need this in more places of the evas drm engine so keep a reference
    in Evas_Engine_Info_Drm for later access.
---
 src/modules/evas/engines/drm/Evas_Engine_Drm.h |  3 +++
 src/modules/evas/engines/drm/evas_engine.c     | 18 ++++++++----------
 2 files changed, 11 insertions(+), 10 deletions(-)

diff --git a/src/modules/evas/engines/drm/Evas_Engine_Drm.h 
b/src/modules/evas/engines/drm/Evas_Engine_Drm.h
index aea3750..87e55ca 100644
--- a/src/modules/evas/engines/drm/Evas_Engine_Drm.h
+++ b/src/modules/evas/engines/drm/Evas_Engine_Drm.h
@@ -1,6 +1,8 @@
 #ifndef _EVAS_ENGINE_DRM_H
 # define _EVAS_ENGINE_DRM_H
 
+#include <Ecore_Drm.h>
+
 typedef struct _Evas_Engine_Info_Drm Evas_Engine_Info_Drm;
 
 struct _Evas_Engine_Info_Drm
@@ -27,6 +29,7 @@ struct _Evas_Engine_Info_Drm
         int plane;
 
         Eina_Bool use_hw_accel : 1;
+        Ecore_Drm_Device *dev;
      } info;
 
    /* non-blocking or blocking mode */
diff --git a/src/modules/evas/engines/drm/evas_engine.c 
b/src/modules/evas/engines/drm/evas_engine.c
index c6f2034..f71a14f 100644
--- a/src/modules/evas/engines/drm/evas_engine.c
+++ b/src/modules/evas/engines/drm/evas_engine.c
@@ -1,9 +1,7 @@
 #include "evas_engine.h"
-#include <Ecore_Drm.h>
 
 /* local structures */
 typedef struct _Render_Engine Render_Engine;
-static Ecore_Drm_Device *drm_dev = NULL;
 
 struct _Render_Engine
 {
@@ -35,21 +33,21 @@ _output_setup(Evas_Engine_Info_Drm *info, int w, int h)
         return NULL;
 
       /* try getting the default drm device */
-      if (!(drm_dev = ecore_drm_device_find(NULL, NULL)))
+      if (!(info->info.dev = ecore_drm_device_find(NULL, NULL)))
         goto on_error;
 
       /* check if we already opened the drm device with ecore_evas */
       /* try to open the drm ourselfs (most likely because we get called from 
expedite) */
-      if (!ecore_drm_device_open(drm_dev))
+      if (!ecore_drm_device_open(info->info.dev))
         goto on_error;
 
       info->info.own_fd = EINA_TRUE;
-      info->info.fd = ecore_drm_device_fd_get(drm_dev);
+      info->info.fd = ecore_drm_device_fd_get(info->info.dev);
 
       if (info->info.tty < 0)
         {
            info->info.own_tty = EINA_TRUE;
-           info->info.tty = ecore_drm_tty_get(drm_dev);
+           info->info.tty = ecore_drm_tty_get(info->info.dev);
        }
      }
 
@@ -82,9 +80,9 @@ _output_setup(Evas_Engine_Info_Drm *info, int w, int h)
    /* check if we already opened the card. if so, close it */
    if ((info->info.fd >= 0) && (info->info.own_fd))
      {
-        ecore_drm_device_close(drm_dev);
+        ecore_drm_device_close(info->info.dev);
         info->info.fd = -1;
-        ecore_drm_device_free(drm_dev);
+        ecore_drm_device_free(info->info.dev);
      }
 
    free(re);
@@ -197,9 +195,9 @@ eng_output_free(void *data)
    /* check if we already opened the card. if so, close it */
    if ((re->info->info.fd >= 0) && (re->info->info.own_fd))
      {
-        ecore_drm_device_close(drm_dev);
+        ecore_drm_device_close(re->info->info.dev);
         re->info->info.fd = -1;
-        ecore_drm_device_free(drm_dev);
+        ecore_drm_device_free(re->info->info.dev);
      }
 
    evas_render_engine_software_generic_clean(&re->generic);

-- 


Reply via email to