File indexing completed on 2024-05-19 05:32:43

0001 /*
0002     SPDX-FileCopyrightText: 2014 Martin Gräßlin <mgraesslin@kde.org>
0003     SPDX-FileCopyrightText: 2020 Vlad Zahorodnii <vlad.zahorodnii@kde.org>
0004 
0005     SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
0006 */
0007 
0008 #pragma once
0009 
0010 #include "subcompositor.h"
0011 
0012 #include <QPoint>
0013 #include <QPointer>
0014 
0015 #include "qwayland-server-wayland.h"
0016 
0017 namespace KWin
0018 {
0019 class SubCompositorInterfacePrivate : public QtWaylandServer::wl_subcompositor
0020 {
0021 public:
0022     SubCompositorInterfacePrivate(Display *display, SubCompositorInterface *q);
0023 
0024     SubCompositorInterface *q;
0025 
0026 protected:
0027     void subcompositor_destroy(Resource *resource) override;
0028     void subcompositor_get_subsurface(Resource *resource, uint32_t id, struct ::wl_resource *surface_resource, struct ::wl_resource *parent_resource) override;
0029 };
0030 
0031 class SubSurfaceInterfacePrivate : public QtWaylandServer::wl_subsurface
0032 {
0033 public:
0034     static SubSurfaceInterfacePrivate *get(SubSurfaceInterface *subsurface);
0035 
0036     SubSurfaceInterfacePrivate(SubSurfaceInterface *q, SurfaceInterface *surface, SurfaceInterface *parent, ::wl_resource *resource);
0037 
0038     SubSurfaceInterface *q;
0039     QPoint position = QPoint(0, 0);
0040     SubSurfaceInterface::Mode mode = SubSurfaceInterface::Mode::Synchronized;
0041     QPointer<SurfaceInterface> surface;
0042     QPointer<SurfaceInterface> parent;
0043 
0044 protected:
0045     void subsurface_destroy_resource(Resource *resource) override;
0046     void subsurface_destroy(Resource *resource) override;
0047     void subsurface_set_position(Resource *resource, int32_t x, int32_t y) override;
0048     void subsurface_place_above(Resource *resource, struct ::wl_resource *sibling_resource) override;
0049     void subsurface_place_below(Resource *resource, struct ::wl_resource *sibling_resource) override;
0050     void subsurface_set_sync(Resource *resource) override;
0051     void subsurface_set_desync(Resource *resource) override;
0052 };
0053 
0054 } // namespace KWin