Phosphor
Qt6 / Wayland library suite for window-management tools
 
Loading...
Searching...
No Matches
LayoutComputeService.h
Go to the documentation of this file.
1// SPDX-FileCopyrightText: 2026 fuddlesworth
2// SPDX-License-Identifier: LGPL-2.1-or-later
3
4#pragma once
5
7#include <phosphorzones_export.h>
8#include <QHash>
9#include <QObject>
10#include <QPointer>
11
12class QThread;
13
14namespace PhosphorZones {
15
16class Layout;
17class LayoutRegistry;
18class LayoutWorker;
19
20class PHOSPHORZONES_EXPORT LayoutComputeService : public QObject
21{
22 Q_OBJECT
23
24public:
25 explicit LayoutComputeService(QObject* parent = nullptr);
27
29
30 bool requestRecalculate(Layout* layout, const QString& screenId, const QRectF& screenGeometry);
31 uint64_t currentGeneration(const QString& screenId) const;
32
33 static void recalculateSync(Layout* layout, const QRectF& screenGeometry);
34
35Q_SIGNALS:
36 void requestCompute(const PhosphorZones::LayoutSnapshot& snapshot, uint64_t generation);
37 void geometriesComputedForGeneration(const QString& screenId, const QUuid& layoutId, PhosphorZones::Layout* layout,
38 uint64_t generation);
39
40private:
41 static LayoutSnapshot buildSnapshot(Layout* layout, const QString& screenId, const QRectF& screenGeometry);
42 void applyResult(const LayoutComputeResult& result);
43 void onLayoutRemoved(const QUuid& layoutId);
44 void publishResult(const QString& screenId, const QUuid& layoutId, Layout* layout, uint64_t generation);
45
46 QHash<QUuid, QPointer<Layout>> m_trackedLayouts;
51 QHash<QString, uint64_t> m_screenGeneration;
52 QPointer<LayoutRegistry> m_layoutManager;
53 QThread* m_thread = nullptr;
54 LayoutWorker* m_worker = nullptr;
55};
56
57} // namespace PhosphorZones
Definition LayoutComputeService.h:21
void setLayoutManager(LayoutRegistry *manager)
static void recalculateSync(Layout *layout, const QRectF &screenGeometry)
LayoutComputeService(QObject *parent=nullptr)
bool requestRecalculate(Layout *layout, const QString &screenId, const QRectF &screenGeometry)
void geometriesComputedForGeneration(const QString &screenId, const QUuid &layoutId, PhosphorZones::Layout *layout, uint64_t generation)
uint64_t currentGeneration(const QString &screenId) const
void requestCompute(const PhosphorZones::LayoutSnapshot &snapshot, uint64_t generation)
Manual zone-layout registry + per-context assignment store.
Definition LayoutRegistry.h:89
Definition LayoutWorker.h:13
Represents a collection of zones that form a layout.
Definition Layout.h:42
constexpr QLatin1String LayoutRegistry("org.plasmazones.LayoutRegistry")
Definition IWindowTrackingService.h:23
Definition LayoutComputeTypes.h:41
Definition LayoutComputeTypes.h:27