KWin
Loading...
Searching...
No Matches
drm_pointer.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: 2015 Martin Gräßlin <mgraesslin@kde.org>
6 SPDX-FileCopyrightText: 2019 Vlad Zahorodnii <vlad.zahorodnii@kde.org>
7
8 SPDX-License-Identifier: GPL-2.0-or-later
9*/
10#pragma once
11
12#include <memory>
13#include <xf86drm.h>
14#include <xf86drmMode.h>
15
16namespace KWin
17{
18
19template<typename T>
21
22template<>
23struct DrmDeleter<drmVersion>
24{
25 void operator()(drmVersion *version)
26 {
28 }
29};
30
31template<>
32struct DrmDeleter<drmModeAtomicReq>
33{
34 void operator()(drmModeAtomicReq *req)
35 {
37 }
38};
39
40template<>
41struct DrmDeleter<drmModeConnector>
42{
43 void operator()(drmModeConnector *connector)
44 {
45 drmModeFreeConnector(connector);
46 }
47};
48
49template<>
50struct DrmDeleter<drmModeCrtc>
51{
52 void operator()(drmModeCrtc *crtc)
53 {
54 drmModeFreeCrtc(crtc);
55 }
56};
57
58template<>
59struct DrmDeleter<drmModeFB>
60{
61 void operator()(drmModeFB *fb)
62 {
63 drmModeFreeFB(fb);
64 }
65};
66
67template<>
68struct DrmDeleter<drmModeEncoder>
69{
70 void operator()(drmModeEncoder *encoder)
71 {
72 drmModeFreeEncoder(encoder);
73 }
74};
75
76template<>
77struct DrmDeleter<drmModeModeInfo>
78{
79 void operator()(drmModeModeInfo *info)
80 {
81 drmModeFreeModeInfo(info);
82 }
83};
84
85template<>
86struct DrmDeleter<drmModeObjectProperties>
87{
88 void operator()(drmModeObjectProperties *properties)
89 {
91 }
92};
93
94template<>
95struct DrmDeleter<drmModePlane>
96{
97 void operator()(drmModePlane *plane)
98 {
99 drmModeFreePlane(plane);
100 }
101};
102
103template<>
104struct DrmDeleter<drmModePlaneRes>
105{
106 void operator()(drmModePlaneRes *resources)
107 {
108 drmModeFreePlaneResources(resources);
109 }
110};
111
112template<>
113struct DrmDeleter<drmModePropertyRes>
114{
115 void operator()(drmModePropertyRes *property)
116 {
117 drmModeFreeProperty(property);
118 }
119};
120
121template<>
122struct DrmDeleter<drmModePropertyBlobRes>
123{
124 void operator()(drmModePropertyBlobRes *blob)
125 {
127 }
128};
129
130template<>
131struct DrmDeleter<drmModeRes>
132{
133 void operator()(drmModeRes *resources)
134 {
135 drmModeFreeResources(resources);
136 }
137};
138
139template<>
140struct DrmDeleter<drmModeLesseeListRes>
141{
142 void operator()(drmModeLesseeListRes *ptr)
143 {
144 drmFree(ptr);
145 }
146};
147
148template<typename T>
149using DrmUniquePtr = std::unique_ptr<T, DrmDeleter<T>>;
150}
void drmModeFreeProperty(drmModePropertyPtr ptr)
Definition mock_drm.cpp:771
void drmModeFreeObjectProperties(drmModeObjectPropertiesPtr ptr)
Definition mock_drm.cpp:881
void drmModeFreePlane(drmModePlanePtr ptr)
void drmModeFreeEncoder(drmModeEncoderPtr ptr)
void drmModeFreeCrtc(drmModeCrtcPtr ptr)
void drmModeFreeConnector(drmModeConnectorPtr ptr)
void drmModeAtomicFree(drmModeAtomicReqPtr req)
Definition mock_drm.cpp:924
void drmModeFreePlaneResources(drmModePlaneResPtr ptr)
void drmModeFreePropertyBlob(drmModePropertyBlobPtr ptr)
Definition mock_drm.cpp:812
void drmModeFreeResources(drmModeResPtr ptr)
void drmFreeVersion(drmVersionPtr ptr)
Definition mock_drm.cpp:296
constexpr int version
std::unique_ptr< T, DrmDeleter< T > > DrmUniquePtr
void operator()(drmModeAtomicReq *req)
Definition drm_pointer.h:34
void operator()(drmModeConnector *connector)
Definition drm_pointer.h:43
void operator()(drmModeCrtc *crtc)
Definition drm_pointer.h:52
void operator()(drmModeEncoder *encoder)
Definition drm_pointer.h:70
void operator()(drmModeFB *fb)
Definition drm_pointer.h:61
void operator()(drmModeLesseeListRes *ptr)
void operator()(drmModeModeInfo *info)
Definition drm_pointer.h:79
void operator()(drmModeObjectProperties *properties)
Definition drm_pointer.h:88
void operator()(drmModePlane *plane)
Definition drm_pointer.h:97
void operator()(drmModePlaneRes *resources)
void operator()(drmModePropertyBlobRes *blob)
void operator()(drmModePropertyRes *property)
void operator()(drmModeRes *resources)
void operator()(drmVersion *version)
Definition drm_pointer.h:25