2020-08-02 22:22:19 +00:00
|
|
|
/*
|
|
|
|
KWin - the KDE window manager
|
|
|
|
This file is part of the KDE project.
|
2016-03-21 14:11:17 +00:00
|
|
|
|
2020-08-02 22:22:19 +00:00
|
|
|
SPDX-FileCopyrightText: 2015 Martin Gräßlin <mgraesslin@kde.org>
|
|
|
|
SPDX-FileCopyrightText: 2019 Vlad Zahorodnii <vlad.zahorodnii@kde.org>
|
2016-03-21 14:11:17 +00:00
|
|
|
|
2020-08-02 22:22:19 +00:00
|
|
|
SPDX-License-Identifier: GPL-2.0-or-later
|
|
|
|
*/
|
2016-03-21 14:11:17 +00:00
|
|
|
#ifndef KWIN_DRM_POINTER_H
|
|
|
|
#define KWIN_DRM_POINTER_H
|
|
|
|
|
|
|
|
#include <QScopedPointer>
|
|
|
|
|
2019-03-20 08:32:26 +00:00
|
|
|
#include <xf86drmMode.h>
|
|
|
|
|
2016-03-21 14:11:17 +00:00
|
|
|
namespace KWin
|
|
|
|
{
|
|
|
|
|
2019-03-20 08:32:26 +00:00
|
|
|
template <typename T>
|
|
|
|
struct DrmDeleter;
|
|
|
|
|
|
|
|
template <>
|
|
|
|
struct DrmDeleter<drmModeAtomicReq>
|
|
|
|
{
|
|
|
|
static void cleanup(drmModeAtomicReq *req)
|
|
|
|
{
|
|
|
|
drmModeAtomicFree(req);
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
template <>
|
|
|
|
struct DrmDeleter<drmModeConnector>
|
|
|
|
{
|
|
|
|
static void cleanup(drmModeConnector *connector)
|
|
|
|
{
|
|
|
|
drmModeFreeConnector(connector);
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
template <>
|
|
|
|
struct DrmDeleter<drmModeCrtc>
|
|
|
|
{
|
|
|
|
static void cleanup(drmModeCrtc *crtc)
|
|
|
|
{
|
|
|
|
drmModeFreeCrtc(crtc);
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
template <>
|
|
|
|
struct DrmDeleter<drmModeFB>
|
|
|
|
{
|
|
|
|
static void cleanup(drmModeFB *fb)
|
|
|
|
{
|
|
|
|
drmModeFreeFB(fb);
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
template <>
|
|
|
|
struct DrmDeleter<drmModeEncoder>
|
|
|
|
{
|
|
|
|
static void cleanup(drmModeEncoder *encoder)
|
|
|
|
{
|
|
|
|
drmModeFreeEncoder(encoder);
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
template <>
|
|
|
|
struct DrmDeleter<drmModeModeInfo>
|
|
|
|
{
|
|
|
|
static void cleanup(drmModeModeInfo *info)
|
|
|
|
{
|
|
|
|
drmModeFreeModeInfo(info);
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
template <>
|
|
|
|
struct DrmDeleter<drmModeObjectProperties>
|
|
|
|
{
|
|
|
|
static void cleanup(drmModeObjectProperties *properties)
|
|
|
|
{
|
|
|
|
drmModeFreeObjectProperties(properties);
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
template <>
|
|
|
|
struct DrmDeleter<drmModePlane>
|
2016-03-21 14:11:17 +00:00
|
|
|
{
|
2019-03-20 08:32:26 +00:00
|
|
|
static void cleanup(drmModePlane *plane)
|
2016-03-21 14:11:17 +00:00
|
|
|
{
|
2019-03-20 08:32:26 +00:00
|
|
|
drmModeFreePlane(plane);
|
2016-03-21 14:11:17 +00:00
|
|
|
}
|
|
|
|
};
|
2019-03-20 08:32:26 +00:00
|
|
|
|
|
|
|
template <>
|
|
|
|
struct DrmDeleter<drmModePlaneRes>
|
|
|
|
{
|
|
|
|
static void cleanup(drmModePlaneRes *resources)
|
|
|
|
{
|
|
|
|
drmModeFreePlaneResources(resources);
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
template <>
|
|
|
|
struct DrmDeleter<drmModePropertyRes>
|
|
|
|
{
|
|
|
|
static void cleanup(drmModePropertyRes *property)
|
|
|
|
{
|
|
|
|
drmModeFreeProperty(property);
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
template <>
|
|
|
|
struct DrmDeleter<drmModePropertyBlobRes>
|
|
|
|
{
|
|
|
|
static void cleanup(drmModePropertyBlobRes *blob)
|
|
|
|
{
|
|
|
|
drmModeFreePropertyBlob(blob);
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
template <>
|
|
|
|
struct DrmDeleter<drmModeRes>
|
|
|
|
{
|
|
|
|
static void cleanup(drmModeRes *resources)
|
|
|
|
{
|
|
|
|
drmModeFreeResources(resources);
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
template <typename T>
|
|
|
|
using DrmScopedPointer = QScopedPointer<T, DrmDeleter<T>>;
|
2016-03-21 14:11:17 +00:00
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|