kwin/src/plugins/platforms/drm/scene_qpainter_drm_backend.h
Xaver Hugl 1041ef8275 platforms/drm: introduce virtual outputs
When the last output gets disconnected, create a virtual output as a
placeholder until we have access to a physical output again. While
this placecholder never gets rendered to, with virtual outputs in
general that is possible (with gbm and qpainter atm) and can be done
for future use cases like wireless displays.

CCBUG: 420160
CCBUG: 438839
2021-08-07 17:18:40 +02:00

51 lines
1.1 KiB
C++

/*
KWin - the KDE window manager
This file is part of the KDE project.
SPDX-FileCopyrightText: 2015 Martin Gräßlin <mgraesslin@kde.org>
SPDX-License-Identifier: GPL-2.0-or-later
*/
#ifndef KWIN_SCENE_QPAINTER_DRM_BACKEND_H
#define KWIN_SCENE_QPAINTER_DRM_BACKEND_H
#include "qpainterbackend.h"
#include "utils.h"
#include <QObject>
#include <QVector>
#include <QSharedPointer>
#include "dumb_swapchain.h"
namespace KWin
{
class DrmBackend;
class DrmDumbBuffer;
class DrmAbstractOutput;
class DrmGpu;
class DrmQPainterBackend : public QPainterBackend
{
Q_OBJECT
public:
DrmQPainterBackend(DrmBackend *backend, DrmGpu *gpu);
QImage *bufferForScreen(int screenId) override;
QRegion beginFrame(int screenId) override;
void endFrame(int screenId, const QRegion &damage) override;
private:
void initOutput(DrmAbstractOutput *output);
struct Output {
DrmAbstractOutput *output;
QSharedPointer<DumbSwapchain> swapchain;
DamageJournal damageJournal;
};
QVector<Output> m_outputs;
DrmBackend *m_backend;
DrmGpu *m_gpu;
};
}
#endif