x11: Prefer kwinApp()->x11Connection() over connection()
With connection(), we will look up the x11 connection property on kwinApp() object, which is less efficient than just calling a method on the app object.
This commit is contained in:
parent
b62630c8ac
commit
ec7198ee33
14 changed files with 71 additions and 70 deletions
|
@ -8,6 +8,7 @@
|
||||||
*/
|
*/
|
||||||
// own
|
// own
|
||||||
#include "client_machine.h"
|
#include "client_machine.h"
|
||||||
|
#include "main.h"
|
||||||
#include "utils/common.h"
|
#include "utils/common.h"
|
||||||
// KF5
|
// KF5
|
||||||
#include <NETWM>
|
#include <NETWM>
|
||||||
|
|
|
@ -94,7 +94,7 @@ class CompositorSelectionOwner : public KSelectionOwner
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
CompositorSelectionOwner(const char *selection)
|
CompositorSelectionOwner(const char *selection)
|
||||||
: KSelectionOwner(selection, connection(), rootWindow())
|
: KSelectionOwner(selection, kwinApp()->x11Connection(), rootWindow())
|
||||||
, m_owning(false)
|
, m_owning(false)
|
||||||
{
|
{
|
||||||
connect (this, &CompositorSelectionOwner::lostOwnership,
|
connect (this, &CompositorSelectionOwner::lostOwnership,
|
||||||
|
|
|
@ -638,7 +638,7 @@ xcb_window_t EffectsHandlerImpl::x11RootWindow() const
|
||||||
inline
|
inline
|
||||||
xcb_connection_t *EffectsHandlerImpl::xcbConnection() const
|
xcb_connection_t *EffectsHandlerImpl::xcbConnection() const
|
||||||
{
|
{
|
||||||
return connection();
|
return kwinApp()->x11Connection();
|
||||||
}
|
}
|
||||||
|
|
||||||
inline
|
inline
|
||||||
|
|
|
@ -190,7 +190,7 @@ bool Workspace::workspaceEvent(xcb_generic_event_t *e)
|
||||||
// see comments for allowClientActivation()
|
// see comments for allowClientActivation()
|
||||||
updateXTime();
|
updateXTime();
|
||||||
const xcb_timestamp_t t = xTime();
|
const xcb_timestamp_t t = xTime();
|
||||||
xcb_change_property(connection(), XCB_PROP_MODE_REPLACE, event->window, atoms->kde_net_wm_user_creation_time, XCB_ATOM_CARDINAL, 32, 1, &t);
|
xcb_change_property(kwinApp()->x11Connection(), XCB_PROP_MODE_REPLACE, event->window, atoms->kde_net_wm_user_creation_time, XCB_ATOM_CARDINAL, 32, 1, &t);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -221,9 +221,9 @@ bool Workspace::workspaceEvent(xcb_generic_event_t *e)
|
||||||
// NOTICE: The save-set support in X11Client::mapRequestEvent() actually requires that
|
// NOTICE: The save-set support in X11Client::mapRequestEvent() actually requires that
|
||||||
// this code doesn't check the parent to be root.
|
// this code doesn't check the parent to be root.
|
||||||
if (!createClient(event->window, false)) {
|
if (!createClient(event->window, false)) {
|
||||||
xcb_map_window(connection(), event->window);
|
xcb_map_window(kwinApp()->x11Connection(), event->window);
|
||||||
const uint32_t values[] = { XCB_STACK_MODE_ABOVE };
|
const uint32_t values[] = { XCB_STACK_MODE_ABOVE };
|
||||||
xcb_configure_window(connection(), event->window, XCB_CONFIG_WINDOW_STACK_MODE, values);
|
xcb_configure_window(kwinApp()->x11Connection(), event->window, XCB_CONFIG_WINDOW_STACK_MODE, values);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
|
@ -271,7 +271,7 @@ bool Workspace::workspaceEvent(xcb_generic_event_t *e)
|
||||||
if (value_mask & XCB_CONFIG_WINDOW_BORDER_WIDTH) {
|
if (value_mask & XCB_CONFIG_WINDOW_BORDER_WIDTH) {
|
||||||
values[i++] = event->border_width;
|
values[i++] = event->border_width;
|
||||||
}
|
}
|
||||||
xcb_configure_window(connection(), event->window, value_mask, values);
|
xcb_configure_window(kwinApp()->x11Connection(), event->window, value_mask, values);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -357,7 +357,7 @@ bool X11Client::windowEvent(xcb_generic_event_t *e)
|
||||||
setOpacity(info->opacityF());
|
setOpacity(info->opacityF());
|
||||||
} else {
|
} else {
|
||||||
// forward to the frame if there's possibly another compositing manager running
|
// forward to the frame if there's possibly another compositing manager running
|
||||||
NETWinInfo i(connection(), frameId(), rootWindow(), NET::Properties(), NET::Properties2());
|
NETWinInfo i(kwinApp()->x11Connection(), frameId(), rootWindow(), NET::Properties(), NET::Properties2());
|
||||||
i.setOpacity(info->opacity());
|
i.setOpacity(info->opacity());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -787,7 +787,7 @@ void X11Client::updateMouseGrab()
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
xcb_ungrab_button(connection(), XCB_BUTTON_INDEX_ANY, m_wrapper, XCB_MOD_MASK_ANY);
|
xcb_ungrab_button(kwinApp()->x11Connection(), XCB_BUTTON_INDEX_ANY, m_wrapper, XCB_MOD_MASK_ANY);
|
||||||
|
|
||||||
if (TabBox::TabBox::self()->forcedGlobalMouseGrab()) { // see TabBox::establishTabBoxGrab()
|
if (TabBox::TabBox::self()->forcedGlobalMouseGrab()) { // see TabBox::establishTabBoxGrab()
|
||||||
m_wrapper.grabButton(XCB_GRAB_MODE_SYNC, XCB_GRAB_MODE_ASYNC);
|
m_wrapper.grabButton(XCB_GRAB_MODE_SYNC, XCB_GRAB_MODE_ASYNC);
|
||||||
|
@ -854,7 +854,7 @@ bool X11Client::buttonPressEvent(xcb_window_t w, int button, int state, int x, i
|
||||||
}
|
}
|
||||||
if (isInteractiveMoveResizePointerButtonDown()) {
|
if (isInteractiveMoveResizePointerButtonDown()) {
|
||||||
if (w == wrapperId())
|
if (w == wrapperId())
|
||||||
xcb_allow_events(connection(), XCB_ALLOW_SYNC_POINTER, XCB_TIME_CURRENT_TIME); //xTime());
|
xcb_allow_events(kwinApp()->x11Connection(), XCB_ALLOW_SYNC_POINTER, XCB_TIME_CURRENT_TIME); //xTime());
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -868,7 +868,7 @@ bool X11Client::buttonPressEvent(xcb_window_t w, int button, int state, int x, i
|
||||||
// hide splashwindow if the user clicks on it
|
// hide splashwindow if the user clicks on it
|
||||||
hideClient();
|
hideClient();
|
||||||
if (w == wrapperId())
|
if (w == wrapperId())
|
||||||
xcb_allow_events(connection(), XCB_ALLOW_SYNC_POINTER, XCB_TIME_CURRENT_TIME); //xTime());
|
xcb_allow_events(kwinApp()->x11Connection(), XCB_ALLOW_SYNC_POINTER, XCB_TIME_CURRENT_TIME); //xTime());
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -907,13 +907,13 @@ bool X11Client::buttonPressEvent(xcb_window_t w, int button, int state, int x, i
|
||||||
replay = true;
|
replay = true;
|
||||||
|
|
||||||
if (w == wrapperId()) // these can come only from a grab
|
if (w == wrapperId()) // these can come only from a grab
|
||||||
xcb_allow_events(connection(), replay ? XCB_ALLOW_REPLAY_POINTER : XCB_ALLOW_SYNC_POINTER, XCB_TIME_CURRENT_TIME); //xTime());
|
xcb_allow_events(kwinApp()->x11Connection(), replay ? XCB_ALLOW_REPLAY_POINTER : XCB_ALLOW_SYNC_POINTER, XCB_TIME_CURRENT_TIME); //xTime());
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (w == wrapperId()) { // these can come only from a grab
|
if (w == wrapperId()) { // these can come only from a grab
|
||||||
xcb_allow_events(connection(), XCB_ALLOW_REPLAY_POINTER, XCB_TIME_CURRENT_TIME); //xTime());
|
xcb_allow_events(kwinApp()->x11Connection(), XCB_ALLOW_REPLAY_POINTER, XCB_TIME_CURRENT_TIME); //xTime());
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
if (w == inputId()) {
|
if (w == inputId()) {
|
||||||
|
@ -986,7 +986,7 @@ bool X11Client::buttonReleaseEvent(xcb_window_t w, int button, int state, int x,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (w == wrapperId()) {
|
if (w == wrapperId()) {
|
||||||
xcb_allow_events(connection(), XCB_ALLOW_SYNC_POINTER, XCB_TIME_CURRENT_TIME); //xTime());
|
xcb_allow_events(kwinApp()->x11Connection(), XCB_ALLOW_SYNC_POINTER, XCB_TIME_CURRENT_TIME); //xTime());
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
if (w != frameId() && w != inputId() && w != moveResizeGrabWindow())
|
if (w != frameId() && w != inputId() && w != moveResizeGrabWindow())
|
||||||
|
|
|
@ -34,7 +34,7 @@ Group::Group(xcb_window_t leader_P)
|
||||||
{
|
{
|
||||||
if (leader_P != XCB_WINDOW_NONE) {
|
if (leader_P != XCB_WINDOW_NONE) {
|
||||||
leader_client = workspace()->findClient(Predicate::WindowMatch, leader_P);
|
leader_client = workspace()->findClient(Predicate::WindowMatch, leader_P);
|
||||||
leader_info = new NETWinInfo(connection(), leader_P, rootWindow(),
|
leader_info = new NETWinInfo(kwinApp()->x11Connection(), leader_P, rootWindow(),
|
||||||
NET::Properties(), NET::WM2StartupId);
|
NET::Properties(), NET::WM2StartupId);
|
||||||
}
|
}
|
||||||
effect_group = new EffectWindowGroupImpl(this);
|
effect_group = new EffectWindowGroupImpl(this);
|
||||||
|
@ -53,7 +53,7 @@ QIcon Group::icon() const
|
||||||
return leader_client->icon();
|
return leader_client->icon();
|
||||||
else if (leader_wid != XCB_WINDOW_NONE) {
|
else if (leader_wid != XCB_WINDOW_NONE) {
|
||||||
QIcon ic;
|
QIcon ic;
|
||||||
NETWinInfo info(connection(), leader_wid, rootWindow(), NET::WMIcon, NET::WM2IconPixmap);
|
NETWinInfo info(kwinApp()->x11Connection(), leader_wid, rootWindow(), NET::WMIcon, NET::WM2IconPixmap);
|
||||||
auto readIcon = [&ic, &info, this](int size, bool scale = true) {
|
auto readIcon = [&ic, &info, this](int size, bool scale = true) {
|
||||||
const QPixmap pix = KWindowSystem::icon(leader_wid, size, size, scale, KWindowSystem::NETWM | KWindowSystem::WMHints, &info);
|
const QPixmap pix = KWindowSystem::icon(leader_wid, size, size, scale, KWindowSystem::NETWM | KWindowSystem::WMHints, &info);
|
||||||
if (!pix.isNull()) {
|
if (!pix.isNull()) {
|
||||||
|
|
|
@ -41,7 +41,7 @@ void KillWindow::start()
|
||||||
if (AbstractClient *c = qobject_cast<AbstractClient*>(t)) {
|
if (AbstractClient *c = qobject_cast<AbstractClient*>(t)) {
|
||||||
c->killWindow();
|
c->killWindow();
|
||||||
} else if (Unmanaged *u = qobject_cast<Unmanaged*>(t)) {
|
} else if (Unmanaged *u = qobject_cast<Unmanaged*>(t)) {
|
||||||
xcb_kill_client(connection(), u->window());
|
xcb_kill_client(kwinApp()->x11Connection(), u->window());
|
||||||
}
|
}
|
||||||
}, QByteArrayLiteral("pirate")
|
}, QByteArrayLiteral("pirate")
|
||||||
);
|
);
|
||||||
|
|
|
@ -112,7 +112,7 @@ private:
|
||||||
bool genericReply(xcb_atom_t target_P, xcb_atom_t property_P, xcb_window_t requestor_P) override {
|
bool genericReply(xcb_atom_t target_P, xcb_atom_t property_P, xcb_window_t requestor_P) override {
|
||||||
if (target_P == xa_version) {
|
if (target_P == xa_version) {
|
||||||
int32_t version[] = { 2, 0 };
|
int32_t version[] = { 2, 0 };
|
||||||
xcb_change_property(connection(), XCB_PROP_MODE_REPLACE, requestor_P,
|
xcb_change_property(kwinApp()->x11Connection(), XCB_PROP_MODE_REPLACE, requestor_P,
|
||||||
property_P, XCB_ATOM_INTEGER, 32, 2, version);
|
property_P, XCB_ATOM_INTEGER, 32, 2, version);
|
||||||
} else
|
} else
|
||||||
return KSelectionOwner::genericReply(target_P, property_P, requestor_P);
|
return KSelectionOwner::genericReply(target_P, property_P, requestor_P);
|
||||||
|
@ -123,7 +123,7 @@ private:
|
||||||
KSelectionOwner::replyTargets(property_P, requestor_P);
|
KSelectionOwner::replyTargets(property_P, requestor_P);
|
||||||
xcb_atom_t atoms[ 1 ] = { xa_version };
|
xcb_atom_t atoms[ 1 ] = { xa_version };
|
||||||
// PropModeAppend !
|
// PropModeAppend !
|
||||||
xcb_change_property(connection(), XCB_PROP_MODE_APPEND, requestor_P,
|
xcb_change_property(kwinApp()->x11Connection(), XCB_PROP_MODE_APPEND, requestor_P,
|
||||||
property_P, XCB_ATOM_ATOM, 32, 1, atoms);
|
property_P, XCB_ATOM_ATOM, 32, 1, atoms);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -132,8 +132,8 @@ private:
|
||||||
if (xa_version == XCB_ATOM_NONE) {
|
if (xa_version == XCB_ATOM_NONE) {
|
||||||
const QByteArray name(QByteArrayLiteral("VERSION"));
|
const QByteArray name(QByteArrayLiteral("VERSION"));
|
||||||
ScopedCPointer<xcb_intern_atom_reply_t> atom(xcb_intern_atom_reply(
|
ScopedCPointer<xcb_intern_atom_reply_t> atom(xcb_intern_atom_reply(
|
||||||
connection(),
|
kwinApp()->x11Connection(),
|
||||||
xcb_intern_atom_unchecked(connection(), false, name.length(), name.constData()),
|
xcb_intern_atom_unchecked(kwinApp()->x11Connection(), false, name.length(), name.constData()),
|
||||||
nullptr));
|
nullptr));
|
||||||
if (!atom.isNull()) {
|
if (!atom.isNull()) {
|
||||||
xa_version = atom->atom;
|
xa_version = atom->atom;
|
||||||
|
@ -147,8 +147,8 @@ private:
|
||||||
QByteArray screen(QByteArrayLiteral("WM_S"));
|
QByteArray screen(QByteArrayLiteral("WM_S"));
|
||||||
screen.append(QByteArray::number(screen_P));
|
screen.append(QByteArray::number(screen_P));
|
||||||
ScopedCPointer<xcb_intern_atom_reply_t> atom(xcb_intern_atom_reply(
|
ScopedCPointer<xcb_intern_atom_reply_t> atom(xcb_intern_atom_reply(
|
||||||
connection(),
|
kwinApp()->x11Connection(),
|
||||||
xcb_intern_atom_unchecked(connection(), false, screen.length(), screen.constData()),
|
xcb_intern_atom_unchecked(kwinApp()->x11Connection(), false, screen.length(), screen.constData()),
|
||||||
nullptr));
|
nullptr));
|
||||||
if (atom.isNull()) {
|
if (atom.isNull()) {
|
||||||
return XCB_ATOM_NONE;
|
return XCB_ATOM_NONE;
|
||||||
|
@ -238,8 +238,8 @@ void ApplicationX11::performStartup()
|
||||||
|
|
||||||
// Check whether another windowmanager is running
|
// Check whether another windowmanager is running
|
||||||
const uint32_t maskValues[] = {XCB_EVENT_MASK_SUBSTRUCTURE_REDIRECT};
|
const uint32_t maskValues[] = {XCB_EVENT_MASK_SUBSTRUCTURE_REDIRECT};
|
||||||
ScopedCPointer<xcb_generic_error_t> redirectCheck(xcb_request_check(connection(),
|
ScopedCPointer<xcb_generic_error_t> redirectCheck(xcb_request_check(kwinApp()->x11Connection(),
|
||||||
xcb_change_window_attributes_checked(connection(),
|
xcb_change_window_attributes_checked(kwinApp()->x11Connection(),
|
||||||
rootWindow(),
|
rootWindow(),
|
||||||
XCB_CW_EVENT_MASK,
|
XCB_CW_EVENT_MASK,
|
||||||
maskValues)));
|
maskValues)));
|
||||||
|
|
|
@ -27,15 +27,15 @@ RootInfo *RootInfo::s_self = nullptr;
|
||||||
RootInfo *RootInfo::create()
|
RootInfo *RootInfo::create()
|
||||||
{
|
{
|
||||||
Q_ASSERT(!s_self);
|
Q_ASSERT(!s_self);
|
||||||
xcb_window_t supportWindow = xcb_generate_id(connection());
|
xcb_window_t supportWindow = xcb_generate_id(kwinApp()->x11Connection());
|
||||||
const uint32_t values[] = {true};
|
const uint32_t values[] = {true};
|
||||||
xcb_create_window(connection(), XCB_COPY_FROM_PARENT, supportWindow, KWin::rootWindow(),
|
xcb_create_window(kwinApp()->x11Connection(), XCB_COPY_FROM_PARENT, supportWindow, KWin::rootWindow(),
|
||||||
0, 0, 1, 1, 0, XCB_COPY_FROM_PARENT,
|
0, 0, 1, 1, 0, XCB_COPY_FROM_PARENT,
|
||||||
XCB_COPY_FROM_PARENT, XCB_CW_OVERRIDE_REDIRECT, values);
|
XCB_COPY_FROM_PARENT, XCB_CW_OVERRIDE_REDIRECT, values);
|
||||||
const uint32_t lowerValues[] = { XCB_STACK_MODE_BELOW }; // See usage in layers.cpp
|
const uint32_t lowerValues[] = { XCB_STACK_MODE_BELOW }; // See usage in layers.cpp
|
||||||
// we need to do the lower window with a roundtrip, otherwise NETRootInfo is not functioning
|
// we need to do the lower window with a roundtrip, otherwise NETRootInfo is not functioning
|
||||||
ScopedCPointer<xcb_generic_error_t> error(xcb_request_check(connection(),
|
ScopedCPointer<xcb_generic_error_t> error(xcb_request_check(kwinApp()->x11Connection(),
|
||||||
xcb_configure_window_checked(connection(), supportWindow, XCB_CONFIG_WINDOW_STACK_MODE, lowerValues)));
|
xcb_configure_window_checked(kwinApp()->x11Connection(), supportWindow, XCB_CONFIG_WINDOW_STACK_MODE, lowerValues)));
|
||||||
if (!error.isNull()) {
|
if (!error.isNull()) {
|
||||||
qCDebug(KWIN_CORE) << "Error occurred while lowering support window: " << error->error_code;
|
qCDebug(KWIN_CORE) << "Error occurred while lowering support window: " << error->error_code;
|
||||||
}
|
}
|
||||||
|
@ -127,12 +127,12 @@ void RootInfo::destroy()
|
||||||
xcb_window_t supportWindow = s_self->supportWindow();
|
xcb_window_t supportWindow = s_self->supportWindow();
|
||||||
delete s_self;
|
delete s_self;
|
||||||
s_self = nullptr;
|
s_self = nullptr;
|
||||||
xcb_destroy_window(connection(), supportWindow);
|
xcb_destroy_window(kwinApp()->x11Connection(), supportWindow);
|
||||||
}
|
}
|
||||||
|
|
||||||
RootInfo::RootInfo(xcb_window_t w, const char *name, NET::Properties properties, NET::WindowTypes types,
|
RootInfo::RootInfo(xcb_window_t w, const char *name, NET::Properties properties, NET::WindowTypes types,
|
||||||
NET::States states, NET::Properties2 properties2, NET::Actions actions, int scr)
|
NET::States states, NET::Properties2 properties2, NET::Actions actions, int scr)
|
||||||
: NETRootInfo(connection(), w, name, properties, types, states, properties2, actions, scr)
|
: NETRootInfo(kwinApp()->x11Connection(), w, name, properties, types, states, properties2, actions, scr)
|
||||||
, m_activeWindow(activeWindow())
|
, m_activeWindow(activeWindow())
|
||||||
, m_eventFilter(std::make_unique<RootInfoFilter>(this))
|
, m_eventFilter(std::make_unique<RootInfoFilter>(this))
|
||||||
{
|
{
|
||||||
|
@ -237,7 +237,7 @@ void RootInfo::setActiveClient(AbstractClient *client)
|
||||||
|
|
||||||
WinInfo::WinInfo(X11Client *c, xcb_window_t window,
|
WinInfo::WinInfo(X11Client *c, xcb_window_t window,
|
||||||
xcb_window_t rwin, NET::Properties properties, NET::Properties2 properties2)
|
xcb_window_t rwin, NET::Properties properties, NET::Properties2 properties2)
|
||||||
: NETWinInfo(connection(), window, rwin, properties, properties2, NET::WindowManager), m_client(c)
|
: NETWinInfo(kwinApp()->x11Connection(), window, rwin, properties, properties2, NET::WindowManager), m_client(c)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -147,13 +147,13 @@ bool Shadow::init(const QVector< uint32_t > &data)
|
||||||
{
|
{
|
||||||
QVector<Xcb::WindowGeometry> pixmapGeometries(ShadowElementsCount);
|
QVector<Xcb::WindowGeometry> pixmapGeometries(ShadowElementsCount);
|
||||||
QVector<xcb_get_image_cookie_t> getImageCookies(ShadowElementsCount);
|
QVector<xcb_get_image_cookie_t> getImageCookies(ShadowElementsCount);
|
||||||
auto *c = connection();
|
auto *c = kwinApp()->x11Connection();
|
||||||
for (int i = 0; i < ShadowElementsCount; ++i) {
|
for (int i = 0; i < ShadowElementsCount; ++i) {
|
||||||
pixmapGeometries[i] = Xcb::WindowGeometry(data[i]);
|
pixmapGeometries[i] = Xcb::WindowGeometry(data[i]);
|
||||||
}
|
}
|
||||||
auto discardReplies = [&getImageCookies](int start) {
|
auto discardReplies = [&getImageCookies](int start) {
|
||||||
for (int i = start; i < getImageCookies.size(); ++i) {
|
for (int i = start; i < getImageCookies.size(); ++i) {
|
||||||
xcb_discard_reply(connection(), getImageCookies.at(i).sequence);
|
xcb_discard_reply(kwinApp()->x11Connection(), getImageCookies.at(i).sequence);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
for (int i = 0; i < ShadowElementsCount; ++i) {
|
for (int i = 0; i < ShadowElementsCount; ++i) {
|
||||||
|
|
|
@ -491,8 +491,8 @@ QRegion Toplevel::shapeRegion() const
|
||||||
const QRect bufferGeometry = this->bufferGeometry();
|
const QRect bufferGeometry = this->bufferGeometry();
|
||||||
|
|
||||||
if (shape()) {
|
if (shape()) {
|
||||||
auto cookie = xcb_shape_get_rectangles_unchecked(connection(), frameId(), XCB_SHAPE_SK_BOUNDING);
|
auto cookie = xcb_shape_get_rectangles_unchecked(kwinApp()->x11Connection(), frameId(), XCB_SHAPE_SK_BOUNDING);
|
||||||
ScopedCPointer<xcb_shape_get_rectangles_reply_t> reply(xcb_shape_get_rectangles_reply(connection(), cookie, nullptr));
|
ScopedCPointer<xcb_shape_get_rectangles_reply_t> reply(xcb_shape_get_rectangles_reply(kwinApp()->x11Connection(), cookie, nullptr));
|
||||||
if (!reply.isNull()) {
|
if (!reply.isNull()) {
|
||||||
m_shapeRegion = QRegion();
|
m_shapeRegion = QRegion();
|
||||||
const xcb_rectangle_t *rects = xcb_shape_get_rectangles_rectangles(reply.data());
|
const xcb_rectangle_t *rects = xcb_shape_get_rectangles_rectangles(reply.data());
|
||||||
|
|
|
@ -104,7 +104,7 @@ bool Unmanaged::track(xcb_window_t w)
|
||||||
checkOutput();
|
checkOutput();
|
||||||
m_visual = attr->visual;
|
m_visual = attr->visual;
|
||||||
bit_depth = geo->depth;
|
bit_depth = geo->depth;
|
||||||
info = new NETWinInfo(connection(), w, rootWindow(),
|
info = new NETWinInfo(kwinApp()->x11Connection(), w, rootWindow(),
|
||||||
NET::WMWindowType | NET::WMPid,
|
NET::WMWindowType | NET::WMPid,
|
||||||
NET::WM2Opacity |
|
NET::WM2Opacity |
|
||||||
NET::WM2WindowRole |
|
NET::WM2WindowRole |
|
||||||
|
@ -115,7 +115,7 @@ bool Unmanaged::track(xcb_window_t w)
|
||||||
getWmClientLeader();
|
getWmClientLeader();
|
||||||
getWmClientMachine();
|
getWmClientMachine();
|
||||||
if (Xcb::Extensions::self()->isShapeAvailable())
|
if (Xcb::Extensions::self()->isShapeAvailable())
|
||||||
xcb_shape_select_input(connection(), w, true);
|
xcb_shape_select_input(kwinApp()->x11Connection(), w, true);
|
||||||
detectShape(w);
|
detectShape(w);
|
||||||
getWmOpaqueRegion();
|
getWmOpaqueRegion();
|
||||||
getSkipCloseAnimation();
|
getSkipCloseAnimation();
|
||||||
|
@ -138,7 +138,7 @@ void Unmanaged::release(ReleaseReason releaseReason)
|
||||||
finishCompositing(releaseReason);
|
finishCompositing(releaseReason);
|
||||||
if (!QWidget::find(window()) && releaseReason != ReleaseReason::Destroyed) { // don't affect our own windows
|
if (!QWidget::find(window()) && releaseReason != ReleaseReason::Destroyed) { // don't affect our own windows
|
||||||
if (Xcb::Extensions::self()->isShapeAvailable())
|
if (Xcb::Extensions::self()->isShapeAvailable())
|
||||||
xcb_shape_select_input(connection(), window(), false);
|
xcb_shape_select_input(kwinApp()->x11Connection(), window(), false);
|
||||||
Xcb::selectInput(window(), XCB_EVENT_MASK_NO_EVENT);
|
Xcb::selectInput(window(), XCB_EVENT_MASK_NO_EVENT);
|
||||||
}
|
}
|
||||||
workspace()->removeUnmanaged(this);
|
workspace()->removeUnmanaged(this);
|
||||||
|
|
|
@ -97,7 +97,7 @@ void ColorMapper::update()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (cmap != m_installed) {
|
if (cmap != m_installed) {
|
||||||
xcb_install_colormap(connection(), cmap);
|
xcb_install_colormap(kwinApp()->x11Connection(), cmap);
|
||||||
m_installed = cmap;
|
m_installed = cmap;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -312,7 +312,7 @@ void Workspace::initializeX11()
|
||||||
// Compatibility
|
// Compatibility
|
||||||
int32_t data = 1;
|
int32_t data = 1;
|
||||||
|
|
||||||
xcb_change_property(connection(), XCB_PROP_MODE_APPEND, rootWindow(), atoms->kwin_running,
|
xcb_change_property(kwinApp()->x11Connection(), XCB_PROP_MODE_APPEND, rootWindow(), atoms->kwin_running,
|
||||||
atoms->kwin_running, 32, 1, &data);
|
atoms->kwin_running, 32, 1, &data);
|
||||||
|
|
||||||
if (kwinApp()->operationMode() == Application::OperationModeX11) {
|
if (kwinApp()->operationMode() == Application::OperationModeX11) {
|
||||||
|
@ -335,7 +335,7 @@ void Workspace::initializeX11()
|
||||||
|
|
||||||
// TODO: only in X11 mode
|
// TODO: only in X11 mode
|
||||||
// Extra NETRootInfo instance in Client mode is needed to get the values of the properties
|
// Extra NETRootInfo instance in Client mode is needed to get the values of the properties
|
||||||
NETRootInfo client_info(connection(), NET::ActiveWindow | NET::CurrentDesktop);
|
NETRootInfo client_info(kwinApp()->x11Connection(), NET::ActiveWindow | NET::CurrentDesktop);
|
||||||
if (!qApp->isSessionRestored()) {
|
if (!qApp->isSessionRestored()) {
|
||||||
m_initialDesktop = client_info.currentDesktop();
|
m_initialDesktop = client_info.currentDesktop();
|
||||||
vds->setCurrent(m_initialDesktop);
|
vds->setCurrent(m_initialDesktop);
|
||||||
|
@ -2866,7 +2866,7 @@ void Workspace::setMoveResizeClient(AbstractClient *c)
|
||||||
// (the property with the size of the frame remains on the window after the crash).
|
// (the property with the size of the frame remains on the window after the crash).
|
||||||
void Workspace::fixPositionAfterCrash(xcb_window_t w, const xcb_get_geometry_reply_t *geometry)
|
void Workspace::fixPositionAfterCrash(xcb_window_t w, const xcb_get_geometry_reply_t *geometry)
|
||||||
{
|
{
|
||||||
NETWinInfo i(connection(), w, rootWindow(), NET::WMFrameExtents, NET::Properties2());
|
NETWinInfo i(kwinApp()->x11Connection(), w, rootWindow(), NET::WMFrameExtents, NET::Properties2());
|
||||||
NETStrut frame = i.frameExtents();
|
NETStrut frame = i.frameExtents();
|
||||||
|
|
||||||
if (frame.left != 0 || frame.top != 0) {
|
if (frame.left != 0 || frame.top != 0) {
|
||||||
|
@ -2874,7 +2874,7 @@ void Workspace::fixPositionAfterCrash(xcb_window_t w, const xcb_get_geometry_rep
|
||||||
const uint32_t left = frame.left;
|
const uint32_t left = frame.left;
|
||||||
const uint32_t top = frame.top;
|
const uint32_t top = frame.top;
|
||||||
const uint32_t values[] = { geometry->x - left, geometry->y - top };
|
const uint32_t values[] = { geometry->x - left, geometry->y - top };
|
||||||
xcb_configure_window(connection(), w, XCB_CONFIG_WINDOW_X | XCB_CONFIG_WINDOW_Y, values);
|
xcb_configure_window(kwinApp()->x11Connection(), w, XCB_CONFIG_WINDOW_X | XCB_CONFIG_WINDOW_Y, values);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -91,7 +91,7 @@ X11DecorationRenderer::X11DecorationRenderer(Decoration::DecoratedClientImpl *cl
|
||||||
X11DecorationRenderer::~X11DecorationRenderer()
|
X11DecorationRenderer::~X11DecorationRenderer()
|
||||||
{
|
{
|
||||||
if (m_gc != XCB_NONE) {
|
if (m_gc != XCB_NONE) {
|
||||||
xcb_free_gc(connection(), m_gc);
|
xcb_free_gc(kwinApp()->x11Connection(), m_gc);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -221,7 +221,7 @@ X11Client::X11Client()
|
||||||
m_decoInputExtent.defineCursor(nativeCursor);
|
m_decoInputExtent.defineCursor(nativeCursor);
|
||||||
if (isInteractiveMoveResize()) {
|
if (isInteractiveMoveResize()) {
|
||||||
// changing window attributes doesn't change cursor if there's pointer grab active
|
// changing window attributes doesn't change cursor if there's pointer grab active
|
||||||
xcb_change_active_pointer_grab(connection(), nativeCursor, xTime(),
|
xcb_change_active_pointer_grab(kwinApp()->x11Connection(), nativeCursor, xTime(),
|
||||||
XCB_EVENT_MASK_BUTTON_PRESS | XCB_EVENT_MASK_BUTTON_RELEASE | XCB_EVENT_MASK_POINTER_MOTION | XCB_EVENT_MASK_ENTER_WINDOW | XCB_EVENT_MASK_LEAVE_WINDOW);
|
XCB_EVENT_MASK_BUTTON_PRESS | XCB_EVENT_MASK_BUTTON_RELEASE | XCB_EVENT_MASK_POINTER_MOTION | XCB_EVENT_MASK_ENTER_WINDOW | XCB_EVENT_MASK_LEAVE_WINDOW);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -240,7 +240,7 @@ X11Client::~X11Client()
|
||||||
m_killHelperPID = 0;
|
m_killHelperPID = 0;
|
||||||
}
|
}
|
||||||
if (m_syncRequest.alarm != XCB_NONE) {
|
if (m_syncRequest.alarm != XCB_NONE) {
|
||||||
xcb_sync_destroy_alarm(connection(), m_syncRequest.alarm);
|
xcb_sync_destroy_alarm(kwinApp()->x11Connection(), m_syncRequest.alarm);
|
||||||
}
|
}
|
||||||
Q_ASSERT(!isInteractiveMoveResize());
|
Q_ASSERT(!isInteractiveMoveResize());
|
||||||
Q_ASSERT(m_client == XCB_WINDOW_NONE);
|
Q_ASSERT(m_client == XCB_WINDOW_NONE);
|
||||||
|
@ -293,7 +293,7 @@ void X11Client::releaseWindow(bool on_shutdown)
|
||||||
info->setDesktop(0);
|
info->setDesktop(0);
|
||||||
info->setState(NET::States(), info->state()); // Reset all state flags
|
info->setState(NET::States(), info->state()); // Reset all state flags
|
||||||
}
|
}
|
||||||
xcb_connection_t *c = connection();
|
xcb_connection_t *c = kwinApp()->x11Connection();
|
||||||
m_client.deleteProperty(atoms->kde_net_wm_user_creation_time);
|
m_client.deleteProperty(atoms->kde_net_wm_user_creation_time);
|
||||||
m_client.deleteProperty(atoms->net_frame_extents);
|
m_client.deleteProperty(atoms->net_frame_extents);
|
||||||
m_client.deleteProperty(atoms->kde_net_wm_frame_strut);
|
m_client.deleteProperty(atoms->kde_net_wm_frame_strut);
|
||||||
|
@ -446,7 +446,7 @@ bool X11Client::manage(xcb_window_t w, bool isMapped)
|
||||||
connect(this, &X11Client::windowClassChanged, this, &X11Client::evaluateWindowRules);
|
connect(this, &X11Client::windowClassChanged, this, &X11Client::evaluateWindowRules);
|
||||||
|
|
||||||
if (Xcb::Extensions::self()->isShapeAvailable())
|
if (Xcb::Extensions::self()->isShapeAvailable())
|
||||||
xcb_shape_select_input(connection(), window(), true);
|
xcb_shape_select_input(kwinApp()->x11Connection(), window(), true);
|
||||||
detectShape(window());
|
detectShape(window());
|
||||||
detectNoBorder();
|
detectNoBorder();
|
||||||
fetchIconicName();
|
fetchIconicName();
|
||||||
|
@ -953,7 +953,7 @@ bool X11Client::manage(xcb_window_t w, bool isMapped)
|
||||||
if (opacity() == 1.0) {
|
if (opacity() == 1.0) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
NETWinInfo info(connection(), frameId(), rootWindow(), NET::Properties(), NET::Properties2());
|
NETWinInfo info(kwinApp()->x11Connection(), frameId(), rootWindow(), NET::Properties(), NET::Properties2());
|
||||||
info.setOpacityF(opacity());
|
info.setOpacityF(opacity());
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
@ -975,7 +975,7 @@ void X11Client::embedClient(xcb_window_t w, xcb_visualid_t visualid, xcb_colorma
|
||||||
|
|
||||||
const uint32_t zero_value = 0;
|
const uint32_t zero_value = 0;
|
||||||
|
|
||||||
xcb_connection_t *conn = connection();
|
xcb_connection_t *conn = kwinApp()->x11Connection();
|
||||||
|
|
||||||
// We don't want the window to be destroyed when we quit
|
// We don't want the window to be destroyed when we quit
|
||||||
xcb_change_save_set(conn, XCB_SET_MODE_INSERT, m_client);
|
xcb_change_save_set(conn, XCB_SET_MODE_INSERT, m_client);
|
||||||
|
@ -1095,7 +1095,7 @@ void X11Client::updateInputWindow()
|
||||||
}
|
}
|
||||||
|
|
||||||
const QVector<xcb_rectangle_t> rects = Xcb::regionToRects(region);
|
const QVector<xcb_rectangle_t> rects = Xcb::regionToRects(region);
|
||||||
xcb_shape_rectangles(connection(), XCB_SHAPE_SO_SET, XCB_SHAPE_SK_INPUT, XCB_CLIP_ORDERING_UNSORTED,
|
xcb_shape_rectangles(kwinApp()->x11Connection(), XCB_SHAPE_SO_SET, XCB_SHAPE_SK_INPUT, XCB_CLIP_ORDERING_UNSORTED,
|
||||||
m_decoInputExtent, 0, 0, rects.count(), rects.constData());
|
m_decoInputExtent, 0, 0, rects.count(), rects.constData());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1324,11 +1324,11 @@ void X11Client::updateShape()
|
||||||
updateDecoration(true);
|
updateDecoration(true);
|
||||||
}
|
}
|
||||||
if (!isDecorated()) {
|
if (!isDecorated()) {
|
||||||
xcb_shape_combine(connection(), XCB_SHAPE_SO_SET, XCB_SHAPE_SK_BOUNDING, XCB_SHAPE_SK_BOUNDING,
|
xcb_shape_combine(kwinApp()->x11Connection(), XCB_SHAPE_SO_SET, XCB_SHAPE_SK_BOUNDING, XCB_SHAPE_SK_BOUNDING,
|
||||||
frameId(), clientPos().x(), clientPos().y(), window());
|
frameId(), clientPos().x(), clientPos().y(), window());
|
||||||
}
|
}
|
||||||
} else if (app_noborder) {
|
} else if (app_noborder) {
|
||||||
xcb_shape_mask(connection(), XCB_SHAPE_SO_SET, XCB_SHAPE_SK_BOUNDING, frameId(), 0, 0, XCB_PIXMAP_NONE);
|
xcb_shape_mask(kwinApp()->x11Connection(), XCB_SHAPE_SO_SET, XCB_SHAPE_SK_BOUNDING, frameId(), 0, 0, XCB_PIXMAP_NONE);
|
||||||
detectNoBorder();
|
detectNoBorder();
|
||||||
app_noborder = noborder;
|
app_noborder = noborder;
|
||||||
noborder = rules()->checkNoBorder(noborder || m_motif.noBorder());
|
noborder = rules()->checkNoBorder(noborder || m_motif.noBorder());
|
||||||
|
@ -1370,7 +1370,7 @@ void X11Client::updateInputShape()
|
||||||
if (!shape_helper_window.isValid())
|
if (!shape_helper_window.isValid())
|
||||||
shape_helper_window.create(QRect(0, 0, 1, 1));
|
shape_helper_window.create(QRect(0, 0, 1, 1));
|
||||||
shape_helper_window.resize(m_bufferGeometry.size());
|
shape_helper_window.resize(m_bufferGeometry.size());
|
||||||
xcb_connection_t *c = connection();
|
xcb_connection_t *c = kwinApp()->x11Connection();
|
||||||
xcb_shape_combine(c, XCB_SHAPE_SO_SET, XCB_SHAPE_SK_INPUT, XCB_SHAPE_SK_BOUNDING,
|
xcb_shape_combine(c, XCB_SHAPE_SO_SET, XCB_SHAPE_SK_INPUT, XCB_SHAPE_SK_BOUNDING,
|
||||||
shape_helper_window, 0, 0, frameId());
|
shape_helper_window, 0, 0, frameId());
|
||||||
xcb_shape_combine(c, XCB_SHAPE_SO_SUBTRACT, XCB_SHAPE_SK_INPUT, XCB_SHAPE_SK_BOUNDING,
|
xcb_shape_combine(c, XCB_SHAPE_SO_SUBTRACT, XCB_SHAPE_SK_INPUT, XCB_SHAPE_SK_BOUNDING,
|
||||||
|
@ -1725,7 +1725,7 @@ void X11Client::updateHiddenPreview()
|
||||||
if (hiddenPreview()) {
|
if (hiddenPreview()) {
|
||||||
workspace()->forceRestacking();
|
workspace()->forceRestacking();
|
||||||
if (Xcb::Extensions::self()->isShapeInputAvailable()) {
|
if (Xcb::Extensions::self()->isShapeInputAvailable()) {
|
||||||
xcb_shape_rectangles(connection(), XCB_SHAPE_SO_SET, XCB_SHAPE_SK_INPUT,
|
xcb_shape_rectangles(kwinApp()->x11Connection(), XCB_SHAPE_SO_SET, XCB_SHAPE_SK_INPUT,
|
||||||
XCB_CLIP_ORDERING_UNSORTED, frameId(), 0, 0, 0, nullptr);
|
XCB_CLIP_ORDERING_UNSORTED, frameId(), 0, 0, 0, nullptr);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
@ -1755,8 +1755,8 @@ void X11Client::sendClientMessage(xcb_window_t w, xcb_atom_t a, xcb_atom_t proto
|
||||||
if (w == rootWindow()) {
|
if (w == rootWindow()) {
|
||||||
eventMask = XCB_EVENT_MASK_SUBSTRUCTURE_REDIRECT; // Magic!
|
eventMask = XCB_EVENT_MASK_SUBSTRUCTURE_REDIRECT; // Magic!
|
||||||
}
|
}
|
||||||
xcb_send_event(connection(), false, w, eventMask, reinterpret_cast<const char*>(&ev));
|
xcb_send_event(kwinApp()->x11Connection(), false, w, eventMask, reinterpret_cast<const char*>(&ev));
|
||||||
xcb_flush(connection());
|
xcb_flush(kwinApp()->x11Connection());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1958,10 +1958,10 @@ QStringList X11Client::activities() const
|
||||||
bool X11Client::takeFocus()
|
bool X11Client::takeFocus()
|
||||||
{
|
{
|
||||||
if (rules()->checkAcceptFocus(info->input())) {
|
if (rules()->checkAcceptFocus(info->input())) {
|
||||||
xcb_void_cookie_t cookie = xcb_set_input_focus_checked(connection(),
|
xcb_void_cookie_t cookie = xcb_set_input_focus_checked(kwinApp()->x11Connection(),
|
||||||
XCB_INPUT_FOCUS_POINTER_ROOT,
|
XCB_INPUT_FOCUS_POINTER_ROOT,
|
||||||
window(), XCB_TIME_CURRENT_TIME);
|
window(), XCB_TIME_CURRENT_TIME);
|
||||||
ScopedCPointer<xcb_generic_error_t> error(xcb_request_check(connection(), cookie));
|
ScopedCPointer<xcb_generic_error_t> error(xcb_request_check(kwinApp()->x11Connection(), cookie));
|
||||||
if (error) {
|
if (error) {
|
||||||
qCWarning(KWIN_CORE, "Failed to focus 0x%x (error %d)", window(), error->error_code);
|
qCWarning(KWIN_CORE, "Failed to focus 0x%x (error %d)", window(), error->error_code);
|
||||||
return false;
|
return false;
|
||||||
|
@ -2027,9 +2027,9 @@ void X11Client::fetchName()
|
||||||
|
|
||||||
static inline QString readNameProperty(xcb_window_t w, xcb_atom_t atom)
|
static inline QString readNameProperty(xcb_window_t w, xcb_atom_t atom)
|
||||||
{
|
{
|
||||||
const auto cookie = xcb_icccm_get_text_property_unchecked(connection(), w, atom);
|
const auto cookie = xcb_icccm_get_text_property_unchecked(kwinApp()->x11Connection(), w, atom);
|
||||||
xcb_icccm_get_text_property_reply_t reply;
|
xcb_icccm_get_text_property_reply_t reply;
|
||||||
if (xcb_icccm_get_wm_name_reply(connection(), cookie, &reply, nullptr)) {
|
if (xcb_icccm_get_wm_name_reply(kwinApp()->x11Connection(), cookie, &reply, nullptr)) {
|
||||||
QString retVal;
|
QString retVal;
|
||||||
if (reply.encoding == atoms->utf8_string) {
|
if (reply.encoding == atoms->utf8_string) {
|
||||||
retVal = QString::fromUtf8(QByteArray(reply.name, reply.name_len));
|
retVal = QString::fromUtf8(QByteArray(reply.name, reply.name_len));
|
||||||
|
@ -2251,7 +2251,7 @@ void X11Client::getSyncCounter()
|
||||||
m_syncRequest.counter = counter;
|
m_syncRequest.counter = counter;
|
||||||
m_syncRequest.value.hi = 0;
|
m_syncRequest.value.hi = 0;
|
||||||
m_syncRequest.value.lo = 0;
|
m_syncRequest.value.lo = 0;
|
||||||
auto *c = connection();
|
auto *c = kwinApp()->x11Connection();
|
||||||
xcb_sync_set_counter(c, m_syncRequest.counter, m_syncRequest.value);
|
xcb_sync_set_counter(c, m_syncRequest.counter, m_syncRequest.value);
|
||||||
if (m_syncRequest.alarm == XCB_NONE) {
|
if (m_syncRequest.alarm == XCB_NONE) {
|
||||||
const uint32_t mask = XCB_SYNC_CA_COUNTER | XCB_SYNC_CA_VALUE_TYPE | XCB_SYNC_CA_TEST_TYPE | XCB_SYNC_CA_EVENTS;
|
const uint32_t mask = XCB_SYNC_CA_COUNTER | XCB_SYNC_CA_VALUE_TYPE | XCB_SYNC_CA_TEST_TYPE | XCB_SYNC_CA_EVENTS;
|
||||||
|
@ -2699,7 +2699,7 @@ void X11Client::readShowOnScreenEdge(Xcb::Property &property)
|
||||||
} else if (!property.isNull() && property->type != XCB_ATOM_NONE) {
|
} else if (!property.isNull() && property->type != XCB_ATOM_NONE) {
|
||||||
// property value is incorrect, delete the property
|
// property value is incorrect, delete the property
|
||||||
// so that the client knows that it is not hidden
|
// so that the client knows that it is not hidden
|
||||||
xcb_delete_property(connection(), window(), atoms->kde_screen_edge_show);
|
xcb_delete_property(kwinApp()->x11Connection(), window(), atoms->kde_screen_edge_show);
|
||||||
} else {
|
} else {
|
||||||
// restore
|
// restore
|
||||||
// TODO: add proper unreserve
|
// TODO: add proper unreserve
|
||||||
|
@ -2722,7 +2722,7 @@ void X11Client::showOnScreenEdge()
|
||||||
|
|
||||||
showClient();
|
showClient();
|
||||||
setKeepBelow(false);
|
setKeepBelow(false);
|
||||||
xcb_delete_property(connection(), window(), atoms->kde_screen_edge_show);
|
xcb_delete_property(kwinApp()->x11Connection(), window(), atoms->kde_screen_edge_show);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool X11Client::belongsToSameApplication(const AbstractClient *other, SameApplicationChecks checks) const
|
bool X11Client::belongsToSameApplication(const AbstractClient *other, SameApplicationChecks checks) const
|
||||||
|
@ -3675,8 +3675,8 @@ void X11Client::sendSyntheticConfigureNotify()
|
||||||
u.event.border_width = 0;
|
u.event.border_width = 0;
|
||||||
u.event.above_sibling = XCB_WINDOW_NONE;
|
u.event.above_sibling = XCB_WINDOW_NONE;
|
||||||
u.event.override_redirect = 0;
|
u.event.override_redirect = 0;
|
||||||
xcb_send_event(connection(), true, c.event, XCB_EVENT_MASK_STRUCTURE_NOTIFY, reinterpret_cast<const char*>(&u));
|
xcb_send_event(kwinApp()->x11Connection(), true, c.event, XCB_EVENT_MASK_STRUCTURE_NOTIFY, reinterpret_cast<const char*>(&u));
|
||||||
xcb_flush(connection());
|
xcb_flush(kwinApp()->x11Connection());
|
||||||
}
|
}
|
||||||
|
|
||||||
QPoint X11Client::gravityAdjustment(xcb_gravity_t gravity) const
|
QPoint X11Client::gravityAdjustment(xcb_gravity_t gravity) const
|
||||||
|
@ -4528,11 +4528,11 @@ bool X11Client::doStartInteractiveMoveResize()
|
||||||
m_moveResizeGrabWindow.map();
|
m_moveResizeGrabWindow.map();
|
||||||
m_moveResizeGrabWindow.raise();
|
m_moveResizeGrabWindow.raise();
|
||||||
updateXTime();
|
updateXTime();
|
||||||
const xcb_grab_pointer_cookie_t cookie = xcb_grab_pointer_unchecked(connection(), false, m_moveResizeGrabWindow,
|
const xcb_grab_pointer_cookie_t cookie = xcb_grab_pointer_unchecked(kwinApp()->x11Connection(), false, m_moveResizeGrabWindow,
|
||||||
XCB_EVENT_MASK_BUTTON_PRESS | XCB_EVENT_MASK_BUTTON_RELEASE | XCB_EVENT_MASK_POINTER_MOTION |
|
XCB_EVENT_MASK_BUTTON_PRESS | XCB_EVENT_MASK_BUTTON_RELEASE | XCB_EVENT_MASK_POINTER_MOTION |
|
||||||
XCB_EVENT_MASK_ENTER_WINDOW | XCB_EVENT_MASK_LEAVE_WINDOW,
|
XCB_EVENT_MASK_ENTER_WINDOW | XCB_EVENT_MASK_LEAVE_WINDOW,
|
||||||
XCB_GRAB_MODE_ASYNC, XCB_GRAB_MODE_ASYNC, m_moveResizeGrabWindow, Cursors::self()->mouse()->x11Cursor(cursor()), xTime());
|
XCB_GRAB_MODE_ASYNC, XCB_GRAB_MODE_ASYNC, m_moveResizeGrabWindow, Cursors::self()->mouse()->x11Cursor(cursor()), xTime());
|
||||||
ScopedCPointer<xcb_grab_pointer_reply_t> pointerGrab(xcb_grab_pointer_reply(connection(), cookie, nullptr));
|
ScopedCPointer<xcb_grab_pointer_reply_t> pointerGrab(xcb_grab_pointer_reply(kwinApp()->x11Connection(), cookie, nullptr));
|
||||||
if (!pointerGrab.isNull() && pointerGrab->status == XCB_GRAB_STATUS_SUCCESS) {
|
if (!pointerGrab.isNull() && pointerGrab->status == XCB_GRAB_STATUS_SUCCESS) {
|
||||||
has_grab = true;
|
has_grab = true;
|
||||||
}
|
}
|
||||||
|
@ -4561,7 +4561,7 @@ void X11Client::leaveInteractiveMoveResize()
|
||||||
ungrabXKeyboard();
|
ungrabXKeyboard();
|
||||||
}
|
}
|
||||||
move_resize_has_keyboard_grab = false;
|
move_resize_has_keyboard_grab = false;
|
||||||
xcb_ungrab_pointer(connection(), xTime());
|
xcb_ungrab_pointer(kwinApp()->x11Connection(), xTime());
|
||||||
m_moveResizeGrabWindow.reset();
|
m_moveResizeGrabWindow.reset();
|
||||||
}
|
}
|
||||||
AbstractClient::leaveInteractiveMoveResize();
|
AbstractClient::leaveInteractiveMoveResize();
|
||||||
|
|
|
@ -50,7 +50,7 @@ bool XwaylandClient::wantsSyncCounter() const
|
||||||
// With the addition of multiple window buffers in Xwayland 1.21, X11 clients
|
// 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
|
// are no longer able to destroy the buffer after it's been committed and not
|
||||||
// released by the compositor yet.
|
// released by the compositor yet.
|
||||||
static const quint32 xwaylandVersion = xcb_get_setup(connection())->release_number;
|
static const quint32 xwaylandVersion = xcb_get_setup(kwinApp()->x11Connection())->release_number;
|
||||||
return xwaylandVersion >= 12100000;
|
return xwaylandVersion >= 12100000;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue