https://bugs.kde.org/show_bug.cgi?id=368847

Martin Gräßlin <mgraess...@kde.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Priority|NOR                         |HI
          Component|general                     |scene-opengl

--- Comment #3 from Martin Gräßlin <mgraess...@kde.org> ---
Relevant code section:
    m_hardwareClipping = region != infiniteRegion() && (mask &
PAINT_WINDOW_TRANSFORMED) && !(mask & PAINT_SCREEN_TRANSFORMED);
    if (region != infiniteRegion() && !m_hardwareClipping) {
        WindowQuadList quads;
        quads.reserve(data.quads.count());

        const QRegion filterRegion = region.translated(-x(), -y());
        // split all quads in bounding rect with the actual rects in the region
        foreach (const WindowQuad &quad, data.quads) {
            foreach (const QRect &r, filterRegion.rects()) {
                const QRectF rf(r);
                const QRectF quadRect(QPointF(quad.left(), quad.top()),
QPointF(quad.right(), quad.bottom()));
                const QRectF &intersected = rf.intersected(quadRect);
                if (intersected.isValid()) {
                    if (quadRect == intersected) {
                        // case 1: completely contains, include and do not
check other rects
                        quads << quad;
                        break;
                    }
                    // case 2: intersection
                    quads << quad.makeSubQuad(intersected.left(),
intersected.top(), intersected.right(), intersected.bottom());
                }
            }
        }
        data.quads = quads;
    }

The crash happens in the "case 2: intersection". The complete if-section should
not have been taken.

We need to figure out why the system went into that branch and either fix that
or remove the qFatal.

-- 
You are receiving this mail because:
You are watching all bug changes.

Reply via email to