Enlightenment CVS committal

Author  : kwo
Project : e16
Module  : e

Dir     : e16/e/src


Modified Files:
        E.h events.c 


Log Message:
Discard events for destroyed windows.
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/E.h,v
retrieving revision 1.506
retrieving revision 1.507
diff -u -3 -r1.506 -r1.507
--- E.h 30 Oct 2005 19:40:49 -0000      1.506
+++ E.h 2 Nov 2005 18:03:08 -0000       1.507
@@ -901,9 +901,10 @@
 /* events.c */
 /* Re-mapped X-events */
 #define EX_EVENT_CREATE_GONE             64
-#define EX_EVENT_MAP_GONE                65
-#define EX_EVENT_UNMAP_GONE              66
-#define EX_EVENT_REPARENT_GONE           67
+#define EX_EVENT_UNMAP_GONE              65
+#define EX_EVENT_MAP_GONE                66
+#define EX_EVENT_MAPREQUEST_GONE         67
+#define EX_EVENT_REPARENT_GONE           68
 
 #define EX_EVENT_SHAPE_NOTIFY            72
 #define EX_EVENT_SCREEN_CHANGE_NOTIFY    73
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/events.c,v
retrieving revision 1.105
retrieving revision 1.106
diff -u -3 -r1.105 -r1.106
--- events.c    29 Oct 2005 08:48:40 -0000      1.105
+++ events.c    2 Nov 2005 18:03:08 -0000       1.106
@@ -338,21 +338,32 @@
                       ev2->type = EX_EVENT_CREATE_GONE;
                       j = -1;  /* Break for() */
                       break;
+                   case UnmapNotify:
+                      if (ev2->xunmap.window != ev->xdestroywindow.window)
+                         continue;
+                      ev2->type = EX_EVENT_UNMAP_GONE;
+                      break;
                    case MapNotify:
-                      if (ev2->xmap.window != ev->xmap.window)
+                      if (ev2->xmap.window != ev->xdestroywindow.window)
                          continue;
                       ev2->type = EX_EVENT_MAP_GONE;
                       break;
-                   case UnmapNotify:
-                      if (ev2->xunmap.window != ev->xunmap.window)
+                   case MapRequest:
+                      if (ev2->xmaprequest.window != ev->xdestroywindow.window)
                          continue;
-                      ev2->type = EX_EVENT_UNMAP_GONE;
+                      ev2->type = EX_EVENT_MAPREQUEST_GONE;
                       break;
                    case ReparentNotify:
-                      if (ev2->xreparent.window != ev->xreparent.window)
+                      if (ev2->xreparent.window != ev->xdestroywindow.window)
                          continue;
                       ev2->type = EX_EVENT_REPARENT_GONE;
                       break;
+                   default:
+                      /* Nuke all other events on a destroyed window */
+                      if (ev2->xany.window != ev->xdestroywindow.window)
+                         continue;
+                      ev2->type = 0;
+                      break;
                    }
               }
             break;
@@ -723,10 +734,12 @@
      {
      case EX_EVENT_CREATE_GONE:
        return "Create-Gone";
-     case EX_EVENT_MAP_GONE:
-       return "Map-Gone";
      case EX_EVENT_UNMAP_GONE:
        return "Unmap-Gone";
+     case EX_EVENT_MAP_GONE:
+       return "Map-Gone";
+     case EX_EVENT_MAPREQUEST_GONE:
+       return "MapRequest-Gone";
      case EX_EVENT_REPARENT_GONE:
        return "Reparent-Gone";
      case EX_EVENT_SHAPE_NOTIFY:
@@ -824,8 +837,9 @@
      case MapNotify:
      case MapRequest:
      case EX_EVENT_CREATE_GONE:
-     case EX_EVENT_MAP_GONE:
      case EX_EVENT_UNMAP_GONE:
+     case EX_EVENT_MAP_GONE:
+     case EX_EVENT_MAPREQUEST_GONE:
        Eprintf("%#08lx EV-%s ev=%#lx win=%#lx\n", ser, name, win,
                ev->xcreatewindow.window);
        break;




-------------------------------------------------------
SF.Net email is sponsored by:
Tame your development challenges with Apache's Geronimo App Server. Download
it for free - -and be entered to win a 42" plasma tv or your very own
Sony(tm)PSP.  Click here to play: http://sourceforge.net/geronimo.php
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to