Introduced in 73698d41e41ce76bef2d9a90b46ac0c24ae148dd "Make XYToWindow a screen function"
Moving the code into miwindow.c changed the start of the loop from RootWindow()->firstChild to DeepestSpriteWindow(). The latter isn't the first child of the root, but the deepest (furthest from the root window) window. This window may have disappeared since, causing all sorts of invalid reads/writes. Signed-off-by: Peter Hutterer <[email protected]> --- mi/miwindow.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/mi/miwindow.c b/mi/miwindow.c index 951b8c5..ed5a65e 100644 --- a/mi/miwindow.c +++ b/mi/miwindow.c @@ -763,10 +763,11 @@ miSegregateChildren(WindowPtr pWin, RegionPtr pReg, int depth) WindowPtr miSpriteTrace(SpritePtr pSprite, int x, int y) { - WindowPtr pWin; + WindowPtr pWin, pRoot; BoxRec box; - pWin = DeepestSpriteWin(pSprite); + pRoot = pSprite->spriteTrace[0]; + pWin = pRoot->firstChild; while (pWin) { if ((pWin->mapped) && (x >= pWin->drawable.x - wBorderWidth(pWin)) && -- 1.9.0 _______________________________________________ [email protected]: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel
