KWin
Loading...
Searching...
No Matches
transaction.h
Go to the documentation of this file.
1/*
2 SPDX-FileCopyrightText: 2023 Vlad Zahorodnii <vlad.zahorodnii@kde.org>
3
4 SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
5*/
6
7#pragma once
8
10
11#include <QPointer>
12
13#include <functional>
14#include <memory>
15#include <vector>
16
17namespace KWin
18{
19
20class SurfaceInterface;
21struct SurfaceState;
22class Transaction;
23
28{
34 QPointer<SurfaceInterface> surface;
35
40
45
50
54 std::unique_ptr<SurfaceState> state;
55};
56
60class KWIN_EXPORT Transaction
61{
62public:
64
68 void lock();
69
73 void unlock();
74
79 bool isReady() const;
80
85 Transaction *next(SurfaceInterface *surface) const;
86
91 void add(SurfaceInterface *surface);
92
96 void amend(SurfaceInterface *surface, std::function<void(SurfaceState *state)> mutator);
97
102 void merge(Transaction *other);
103
111 void commit();
112
113private:
114 void apply();
115 bool tryApply();
116
117 std::vector<TransactionEntry> m_entries;
118 int m_locks = 0;
119};
120
121} // namespace KWin
Resource representing a wl_surface.
Definition surface.h:80
Definition transaction.h:28
QPointer< SurfaceInterface > surface
Definition transaction.h:34
std::unique_ptr< SurfaceState > state
Definition transaction.h:54
GraphicsBufferRef buffer
Definition transaction.h:49
Transaction * previousTransaction
Definition transaction.h:39
Transaction * nextTransaction
Definition transaction.h:44