graesslin added a comment.

  I think the effect system is the wrong place for it - at least if we want to 
add it to KWin directly. The transformation should be done directly in the 
Scene.

INLINE COMMENTS

> projector.cpp:101-126
> +    if (m_cursorTexture && m_cursorVisible) {
> +        QPoint p = effects->cursorPos();
> +        for (const ScreenData &screenData : m_screenData) {
> +            if ((screenData.number != -1) && (screenData.rect.contains(p))) {
> +                p = translatePoint(p.x() - screenData.rect.left(), p.y() - 
> screenData.rect.top(),
> +                                   screenData.transMatrix).toPoint();
> +                p.rx() += screenData.rect.left();

This is something which we should not do. That has major impact on the 
performance of the overall system. Cursors are on an own layer and thus cursor 
movement does not require a repaint.

Also on X11 we are not able to perfectly track the cursor. On Wayland, though 
we have full control over it.

> projector.cpp:261-263
> +    // load the cursor-theme image from the Xcursor-library
> +    xcb_xfixes_get_cursor_image_cookie_t keks = 
> xcb_xfixes_get_cursor_image_unchecked(xcbConnection());
> +    xcb_xfixes_get_cursor_image_reply_t *ximg = 
> xcb_xfixes_get_cursor_image_reply(xcbConnection(), keks, 0);

unrelated to the fact that I think we shouldn't do cursor manipulation: we do 
have access to the cursor image in the effects API.

REPOSITORY
  R108 KWin

REVISION DETAIL
  https://phabricator.kde.org/D5249

To: nowicki, #plasma, graesslin
Cc: kwin, plasma-devel, #kwin, progwolff, lesliezhai, ali-mohamed, 
jensreuterberg, abetts, sebas, apol

Reply via email to