It's possible I missed a patch or resolved a conflict incorrectly, but I'm getting crashes after this patch series.
Reproducible by running twm and opening/closing the root window popup menu. On 2014-10-08 11:04, Adam Jackson wrote: > @@ -2742,7 +2742,7 @@ UnmapWindow(WindowPtr pWin, Bool fromConfigure) > return Success; > if (SubStrSend(pWin, pParent)) > DeliverUnmapNotify(pWin, fromConfigure); > - if (wasViewable && !fromConfigure) { > + if (wasPaintable && !fromConfigure) { > pWin->valdata = UnmapValData; UnmapValData is a special not-pointer that is only valid if !pWin->paintable (or !pWin->viewable before this patch series). If Composite resets pWin->paintable on this window, miComputeClips will dx = pParent->drawable.x - pParent->valdata->before.oldAbsCorner.x; causing everything to explode. > (*pScreen->MarkOverlappedWindows) (pWin, pWin->nextSib, &pLayerWin); > (*pScreen->MarkWindow) (pLayerWin->parent); > @@ -2750,13 +2750,11 @@ UnmapWindow(WindowPtr pWin, Bool fromConfigure) > pWin->mapped = FALSE; > if (wasRealized) > UnrealizeTree(pWin, fromConfigure); > - if (wasViewable) { > - if (!fromConfigure) { > - (*pScreen->ValidateTree) (pLayerWin->parent, pWin, VTUnmap); > - (*pScreen->HandleExposures) (pLayerWin->parent); > - if (pScreen->PostValidateTree) > - (*pScreen->PostValidateTree) (pLayerWin->parent, pWin, > VTUnmap); > - } > + if (wasPaintable && !fromConfigure) { An extra block here + if (pWin->paintable) { + pWin->valdata = NULL; + pScreen->MarkWindow(pWin); + } appears to fix the crash. I haven't considered the equivalent for UnmapSubwindows yet. Peter Harris -- Open Text Connectivity Solutions Group Peter Harris http://connectivity.opentext.com/ Research and Development Phone: +1 905 762 6001 phar...@opentext.com Toll Free: 1 877 359 4866 _______________________________________________ xorg-devel@lists.x.org: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel