Implement screencasting protocol v4

This makes it possible to give the virtual output a better
user visible name.
wilder/Plasma/6.3
David Redondo 1 year ago
parent 41f0d73c44
commit ae04e36cb7
  1. 3
      src/plugins/screencast/screencastmanager.cpp
  2. 1
      src/plugins/screencast/screencastmanager.h
  3. 13
      src/wayland/screencast_v1.cpp
  4. 2
      src/wayland/screencast_v1.h

@ -55,11 +55,12 @@ void ScreencastManager::streamWindow(ScreencastStreamV1Interface *waylandStream,
void ScreencastManager::streamVirtualOutput(ScreencastStreamV1Interface *stream,
const QString &name,
const QString &description,
const QSize &size,
double scale,
ScreencastV1Interface::CursorMode mode)
{
auto output = kwinApp()->outputBackend()->createVirtualOutput(name, name, size, scale);
auto output = kwinApp()->outputBackend()->createVirtualOutput(name, description, size, scale);
streamOutput(stream, output, mode);
connect(stream, &ScreencastStreamV1Interface::finished, output, [output] {
kwinApp()->outputBackend()->removeVirtualOutput(output);

@ -36,6 +36,7 @@ private:
streamOutput(ScreencastStreamV1Interface *stream, Output *output, ScreencastV1Interface::CursorMode mode);
void streamVirtualOutput(ScreencastStreamV1Interface *stream,
const QString &name,
const QString &description,
const QSize &size,
double scale,
ScreencastV1Interface::CursorMode mode);

@ -15,7 +15,7 @@
namespace KWin
{
static int s_version = 3;
static int s_version = 4;
class ScreencastStreamV1InterfacePrivate : public QtWaylandServer::zkde_screencast_stream_unstable_v1
{
@ -105,6 +105,17 @@ public:
{
Q_EMIT q->virtualOutputScreencastRequested(createStream(resource, streamid),
name,
QString(),
{width, height},
wl_fixed_to_double(scale),
ScreencastV1Interface::CursorMode(pointer));
}
void zkde_screencast_unstable_v1_stream_virtual_output_with_description(Resource *resource, uint32_t streamid, const QString &name, const QString &description, int32_t width, int32_t height, wl_fixed_t scale, uint32_t pointer) override
{
Q_EMIT q->virtualOutputScreencastRequested(createStream(resource, streamid),
name,
description,
{width, height},
wl_fixed_to_double(scale),
ScreencastV1Interface::CursorMode(pointer));

@ -57,7 +57,7 @@ public:
Q_SIGNALS:
void outputScreencastRequested(ScreencastStreamV1Interface *stream, OutputInterface *output, CursorMode mode);
void virtualOutputScreencastRequested(ScreencastStreamV1Interface *stream, const QString &name, const QSize &size, double scaling, CursorMode mode);
void virtualOutputScreencastRequested(ScreencastStreamV1Interface *stream, const QString &name, const QString &description, const QSize &size, double scaling, CursorMode mode);
void windowScreencastRequested(ScreencastStreamV1Interface *stream, const QString &winid, CursorMode mode);
void regionScreencastRequested(ScreencastStreamV1Interface *stream, const QRect &geometry, qreal scaling, CursorMode mode);

Loading…
Cancel
Save