76af96bcc9
In case Xwayland does not use multiple buffers, the currently attached buffer is going to be destroyed if the frame window is resized. It may render the previous and the current window pixmap invalid and thus result in visual artifacts when an X11 client is being interactively resized. In order to avoid the visual artifacts, this change disables support for synchronized resizing for X11 clients if the version of Xwayland is less than the version in which Xwayland started using multiple buffers, i.e. 1.21. Differential Revision: https://phabricator.kde.org/D29250
37 lines
1.5 KiB
C++
37 lines
1.5 KiB
C++
/********************************************************************
|
|
KWin - the KDE window manager
|
|
This file is part of the KDE project.
|
|
|
|
Copyright (C) 2020 Vlad Zahorodnii <vlad.zahorodnii@kde.org>
|
|
|
|
This program is free software; you can redistribute it and/or modify
|
|
it under the terms of the GNU General Public License as published by
|
|
the Free Software Foundation; either version 2 of the License, or
|
|
(at your option) any later version.
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
*********************************************************************/
|
|
|
|
#include "xwaylandclient.h"
|
|
|
|
namespace KWin
|
|
{
|
|
|
|
bool XwaylandClient::wantsSyncCounter() const
|
|
{
|
|
// When the frame window is resized, the attached buffer will be destroyed by
|
|
// Xwayland, causing unexpected invalid previous and current window pixmaps.
|
|
// With the addition of multiple window buffers in Xwayland 1.21, X11 clients
|
|
// are no longer able to destroy the buffer after it's been committed and not
|
|
// released by the compositor yet.
|
|
static const quint32 xwaylandVersion = xcb_get_setup(connection())->release_number;
|
|
return xwaylandVersion >= 12100000;
|
|
}
|
|
|
|
} // namespace KWin
|