KWin
Loading...
Searching...
No Matches
drm_virtual_output.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: 2018 Roman Gilg <subdiff@gmail.com>
6 SPDX-FileCopyrightText: 2021 Xaver Hugl <xaver.hugl@gmail.com>
7
8 SPDX-License-Identifier: GPL-2.0-or-later
9*/
10#pragma once
11
12#include "drm_abstract_output.h"
13
14#include <QObject>
15#include <QRect>
16
17namespace KWin
18{
19
20class SoftwareVsyncMonitor;
21class VirtualBackend;
22class DrmPipelineLayer;
23
25{
26 Q_OBJECT
27
28public:
29 DrmVirtualOutput(const QString &name, DrmGpu *gpu, const QSize &size, qreal scale);
30 ~DrmVirtualOutput() override;
31
32 bool present(const std::shared_ptr<OutputFrame> &frame) override;
33 DrmOutputLayer *primaryLayer() const override;
34 DrmOutputLayer *cursorLayer() const override;
35 void recreateSurface();
36
37private:
38 void vblank(std::chrono::nanoseconds timestamp);
39 void setDpmsMode(DpmsMode mode) override;
40
41 std::shared_ptr<DrmOutputLayer> m_layer;
42 bool m_pageFlipPending = true;
43
44 std::unique_ptr<SoftwareVsyncMonitor> m_vsyncMonitor;
45};
46
47}
DrmVirtualOutput(const QString &name, DrmGpu *gpu, const QSize &size, qreal scale)
bool present(const std::shared_ptr< OutputFrame > &frame) override
DrmOutputLayer * primaryLayer() const override
DrmOutputLayer * cursorLayer() const override
qreal scale() const
Definition output.cpp:455
QString name
Definition output.h:136