graesslin created this revision. graesslin added a reviewer: Plasma. Herald added a project: Plasma. Herald added a subscriber: plasma-devel.
REVISION SUMMARY A sub-surface changed in a way which needs a repaint. Of course only if the surface is mapped. Make Scene::Window::window() and WindowPixmap::toplevel() const No need to have them not const. Add support for SubSurface to WindowPixmap This change introduces a tree for WindowPixmap. A WindowPixmap can have a parent WindowPixmap and children. Each child represents a SubSurface and references the buffer of that SubSurface. The tree of WindowPixmaps is updated each time updateBuffer is called. If there are new SubSurfaces new WindowPixmaps are created, for removed SubSurfaces the old WindowPixmap gets removed. Also the ordering is updated to reflect the current state. This is currently rather expensive and should be changed to only rebuild the tree if it actually changed. Add a SurfaceInterface *WindowPixmap::surface() const Convenience method to get the Surface for a WindowPixmap which is either the toplevel's surface or a SubSurface. Use new surface() method in WindowPixmap::updateBuffer Render child WindowPixmap in SceneQPainter The rendering is done in a recursive way. For updating the buffer an important change is done: the buffer is copied into a new QImage on each change and the differences are no longer painted. This is due to damage region in a sub-surface tree being basically unknown. Create sub OpenGLWindowPixmap for sub-surfaces Properly update EGL Texture for sub-surface buffers We need to use the tracked damage instead of Toplevel's damage. Render sub-surfaces in OpenGL compositor This is more a hack than an actual implementation. It just renders all sub-surfaces after the main window got rendered. But it does not: - use window quads (e.g. splitting not supported) - is not combined with rendering of the main surface - does not support previous pixmap Still it renders, which is the main goal at the moment. Announce support for subcompositor protocol REPOSITORY rKWIN KWin BRANCH subcompositor-arc REVISION DETAIL https://phabricator.kde.org/D1282 AFFECTED FILES abstract_egl_backend.cpp scene.cpp scene.h scene_opengl.cpp scene_opengl.h scene_qpainter.cpp scene_qpainter.h toplevel.cpp wayland_server.cpp EMAIL PREFERENCES https://phabricator.kde.org/settings/panel/emailpreferences/ To: graesslin, Plasma Cc: plasma-devel, sebas
_______________________________________________ Plasma-devel mailing list Plasma-devel@kde.org https://mail.kde.org/mailman/listinfo/plasma-devel