devilhorns pushed a commit to branch master.

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

commit ff5bac5e6e38cde53f5e008e58f78d0efdc1dc3c
Author: Chris Michael <cp.mich...@samsung.com>
Date:   Thu Jul 17 14:47:02 2014 -0400

    ecore-drm: Fix trapping of SIGUSR1 for VT switching signals
    
    SIGUSR1 is used here to catch VT switching and either acquire or
    release the VT. The problem is that XWayland Also sends SIGUSR1 when
    it has finished initializing. In order to not get confused about where
    the SIGUSR1 came from we can check the pid inside the siginfo
    structure and see if it matches.
    
    @fix
    
    Signed-off-by: Chris Michael <cp.mich...@samsung.com>
---
 src/lib/ecore_drm/ecore_drm_tty.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/src/lib/ecore_drm/ecore_drm_tty.c 
b/src/lib/ecore_drm/ecore_drm_tty.c
index b100bf6..1bc7fff 100644
--- a/src/lib/ecore_drm/ecore_drm_tty.c
+++ b/src/lib/ecore_drm/ecore_drm_tty.c
@@ -17,11 +17,13 @@ _ecore_drm_tty_cb_signal(void *data, int type EINA_UNUSED, 
void *event)
 {
    Ecore_Drm_Device *dev;
    Ecore_Event_Signal_User *ev;
+   siginfo_t sigdata;
 
    dev = data;
    ev = event;
 
-   DBG("Caught user signal: %d", ev->number);
+   sigdata = ev->data;
+   if (sigdata.si_pid != getpid()) return ECORE_CALLBACK_RENEW;
 
    if (ev->number == 1)
      {
@@ -83,7 +85,7 @@ _ecore_drm_tty_cb_signal(void *data, int type EINA_UNUSED, 
void *event)
           ERR("Could not acquire VT: %m");
      }
 
-   return EINA_TRUE;
+   return ECORE_CALLBACK_RENEW;
 }
 
 static Eina_Bool 

-- 


Reply via email to