Advance Wayland and KDE package bring-up

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
This commit is contained in:
2026-04-14 10:51:06 +01:00
parent 51f3c21121
commit cf12defd28
15214 changed files with 20594243 additions and 269 deletions
@@ -0,0 +1,82 @@
/*
SPDX-FileCopyrightText: 2014 Fredrik Höglund <fredrik@kde.org>
SPDX-License-Identifier: GPL-2.0-or-later
*/
#pragma once
#include "opengl/glutils.h"
#include <xcb/sync.h>
#include <xcb/xcb.h>
namespace KWin
{
class RenderBackend;
/**
* SyncObject represents a fence used to synchronize operations in the kwin command stream
* with operations in the X command stream.
*/
class X11SyncObject
{
public:
enum State {
Ready,
TriggerSent,
Waiting,
Done,
Resetting,
};
X11SyncObject();
~X11SyncObject();
State state() const
{
return m_state;
}
void trigger();
void wait();
bool finish();
void reset();
void finishResetting();
private:
State m_state;
GLsync m_sync;
xcb_sync_fence_t m_fence;
xcb_get_input_focus_cookie_t m_reset_cookie;
};
/**
* SyncManager manages a set of fences used for explicit synchronization with the X command
* stream.
*/
class X11SyncManager
{
public:
enum {
MaxFences = 4,
};
static X11SyncManager *create(RenderBackend *backend);
~X11SyncManager();
bool endFrame();
void triggerFence();
void insertWait();
private:
X11SyncManager();
X11SyncObject *m_currentFence = nullptr;
QList<X11SyncObject *> m_fences;
int m_next = 0;
};
} // namespace KWin