kwin/src/wayland/screencast_v1_interface.h
Vlad Zahorodnii 09e079b78f Remove factory methods in Display
The main reason why we have factory methods is that up to some point,
kwayland had its own signal to indicate when globals have to be removed.

Now that all globals add destroy listeners for the wl_display object,
we don't have that signal. Most factory methods are equivalent to doing
new T(display).

Besides adding unnecessary boilerplate code, another reason to get rid
of the factory methods is to reduce the amount of merge conflicts. If
several persons work on implementing wayland protocols at the same time,
sooner or later someone will have to resolve merge conflicts in Display.
2020-12-14 13:04:59 +00:00

66 lines
1.5 KiB
C++

/*
SPDX-FileCopyrightText: 2020 Aleix Pol Gonzalez <aleixpol@kde.org>
SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
*/
#pragma once
#include <QObject>
#include <QScopedPointer>
#include <KWaylandServer/kwaylandserver_export.h>
struct wl_resource;
namespace KWaylandServer
{
class Display;
class OutputInterface;
class ScreencastV1InterfacePrivate;
class ScreencastStreamV1InterfacePrivate;
class ScreencastStreamV1Interface;
class KWAYLANDSERVER_EXPORT ScreencastStreamV1Interface : public QObject
{
Q_OBJECT
public:
~ScreencastStreamV1Interface() override;
void sendCreated(quint32 nodeid);
void sendFailed(const QString &error);
void sendClosed();
Q_SIGNALS:
void finished();
private:
friend class ScreencastV1InterfacePrivate;
explicit ScreencastStreamV1Interface(QObject *parent);
QScopedPointer<ScreencastStreamV1InterfacePrivate> d;
};
class KWAYLANDSERVER_EXPORT ScreencastV1Interface : public QObject
{
Q_OBJECT
public:
explicit ScreencastV1Interface(Display *display, QObject *parent = nullptr);
virtual ~ScreencastV1Interface();
enum CursorMode {
Hidden = 1,
Embedded = 2,
Metadata = 4,
};
Q_ENUM(CursorMode);
Q_SIGNALS:
void outputScreencastRequested(ScreencastStreamV1Interface *stream, OutputInterface *output, CursorMode mode);
void windowScreencastRequested(ScreencastStreamV1Interface *stream, const QString &winid, CursorMode mode);
private:
QScopedPointer<ScreencastV1InterfacePrivate> d;
};
}