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

--- Comment #8 from Ritchie Frodomar <alkalinethun...@gmail.com> ---
First time looking at this bug *as a programmer*, and here's what I've found so
far.

The zoom effect generally hides the true mouse cursor and takes control over
rendering it, so that the cursor can do things like scale based on zoom level.
Great.

It only does this when the zoom level is other than 1.0 (so, when you're zoomed
in). Otherwise it just lets kwin normally render the mouse cursor.

When zoom is in charge of rendering the cursor, there's texture caching going
on here.

This code, although I don't fully understand it yet because my debugger is
being really annoying about breakpoints, seems to be what's responsible for
refreshing zoom's cursor texture when the cache becomes invalid. Usually it
gets called when the cursor shape or theme changes.

<code>
GLTexture *ZoomEffect::ensureCursorTexture()
{
    if (!m_cursorTexture || m_cursorTextureDirty) {
        m_cursorTexture.reset();
        m_cursorTextureDirty = false;
        const auto cursor = effects->cursorImage();
        if (!cursor.image().isNull()) {
            m_cursorTexture = GLTexture::upload(cursor.image());
            if (!m_cursorTexture) {
                return nullptr;
            }
            m_cursorTexture->setWrapMode(GL_CLAMP_TO_EDGE);
        }
    }
    return m_cursorTexture.get();
}
</code>

What I've noticed in some limited debugging is that the body of the `if`
statement just never executes when testing the Xwayland case. I have a code
editor open running under xwayland in a nested Kwin session, and moving the
mouse between the code editor and file tree never causes the cursor to change
between an I-Beam and arrow. That code also never gets called.

If zoomed out, the cursor does change properly between arrow/I-Beam, but the
moment I zoom in, this stops working properly. Which makes sense, knowing zoom
only takes over cursor rendering when you actually zoom into the screen.

So that's where I'm at. This is definitely specific to just the zoom app and
Xwayland windows. Normal Wayland ones work fine.

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

Reply via email to