KWin
Loading...
Searching...
No Matches
drm_object.h
Go to the documentation of this file.
1/*
2 KWin - the KDE window manager
3 This file is part of the KDE project.
4
5 SPDX-FileCopyrightText: 2016 Roman Gilg <subdiff@gmail.com>
6
7 SPDX-License-Identifier: GPL-2.0-or-later
8*/
9#pragma once
10
11#include <QByteArray>
12#include <QList>
13#include <QMap>
14
15#include <vector>
16
17// drm
18#include <xf86drmMode.h>
19
20#include "drm_pointer.h"
21#include "drm_property.h"
22
23namespace KWin
24{
25
26class DrmBackend;
27class DrmGpu;
28class DrmOutput;
29class DrmAtomicCommit;
30
32{
33public:
34 void addProperty(DrmUniquePtr<drmModePropertyRes> &&prop, uint64_t value);
35 std::optional<std::pair<DrmUniquePtr<drmModePropertyRes>, uint64_t>> takeProperty(const QByteArray &name);
36
37private:
38 std::vector<std::pair<DrmUniquePtr<drmModePropertyRes>, uint64_t>> m_properties;
39};
40
42{
43public:
44 virtual ~DrmObject() = default;
45 DrmObject(const DrmObject &) = delete;
46
51 bool init();
52
56 virtual void disable(DrmAtomicCommit *commit) = 0;
57
58 virtual bool updateProperties() = 0;
59
60 uint32_t id() const;
61 DrmGpu *gpu() const;
62 uint32_t type() const;
63 QString typeName() const;
64
65protected:
66 DrmObject(DrmGpu *gpu, uint32_t objectId, uint32_t objectType);
67
69
70private:
71 DrmGpu *m_gpu;
72 const uint32_t m_id;
73 const uint32_t m_objectType;
74};
75
76}
77
78QDebug operator<<(QDebug stream, const KWin::DrmObject *);
DrmPropertyList queryProperties() const
uint32_t id() const
virtual bool updateProperties()=0
QString typeName() const
virtual ~DrmObject()=default
DrmObject(const DrmObject &)=delete
DrmGpu * gpu() const
virtual void disable(DrmAtomicCommit *commit)=0
uint32_t type() const
void addProperty(DrmUniquePtr< drmModePropertyRes > &&prop, uint64_t value)
std::optional< std::pair< DrmUniquePtr< drmModePropertyRes >, uint64_t > > takeProperty(const QByteArray &name)
QDebug operator<<(QDebug stream, const KWin::DrmObject *)
std::unique_ptr< T, DrmDeleter< T > > DrmUniquePtr