Enlightenment CVS committal Author : kwo Project : e16 Module : e
Dir : e16/e/src Modified Files: ewins.c Log Message: Fix segv in some obscure client exit scenarios involving reparent/destroy. =================================================================== RCS file: /cvs/e/e16/e/src/ewins.c,v retrieving revision 1.187 retrieving revision 1.188 diff -u -3 -r1.187 -r1.188 --- ewins.c 13 Jan 2007 19:14:27 -0000 1.187 +++ ewins.c 15 Jan 2007 00:29:17 -0000 1.188 @@ -64,6 +64,8 @@ static void EwinHandleEventsContainer(Win win, XEvent * ev, void *prm); static void EwinHandleEventsClient(Win win, XEvent * ev, void *prm); +static void EwinUnmap2(EWin * ewin); + Window EwinGetClientXwin(const EWin * ewin) { @@ -354,6 +356,9 @@ if (!ewin) return; + if (ewin->state.state == EWIN_STATE_MAPPED) + EwinUnmap2(ewin); + if (EDebug(EDBUG_TYPE_EWINS)) Eprintf("EwinDestroy %#lx st=%d: %s\n", EwinGetClientXwin(ewin), ewin->state.state, EwinGetTitle(ewin)); @@ -2092,8 +2097,14 @@ break; case EX_EVENT_REPARENT_GONE: + if (ev->xreparent.window != EwinGetClientXwin(ewin)) + break; EoSetGone(ewin); + goto do_reparent; case ReparentNotify: + if (ev->xreparent.window != EwinGetClientXwin(ewin)) + break; + do_reparent: EwinEventReparent(ewin); break; ------------------------------------------------------------------------- Take Surveys. Earn Cash. Influence the Future of IT Join SourceForge.net's Techsay panel and you'll get the chance to share your opinions on IT & business topics through brief surveys - and earn cash http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs