File indexing completed on 2024-05-19 16:35:28
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_interface.h" 0011 #include "surfacerole_p.h" 0012 0013 #include <QPoint> 0014 #include <QPointer> 0015 0016 #include "qwayland-server-wayland.h" 0017 0018 namespace KWaylandServer 0019 { 0020 class SubCompositorInterfacePrivate : public QtWaylandServer::wl_subcompositor 0021 { 0022 public: 0023 SubCompositorInterfacePrivate(Display *display, SubCompositorInterface *q); 0024 0025 SubCompositorInterface *q; 0026 0027 protected: 0028 void subcompositor_destroy(Resource *resource) override; 0029 void subcompositor_get_subsurface(Resource *resource, uint32_t id, struct ::wl_resource *surface_resource, struct ::wl_resource *parent_resource) override; 0030 }; 0031 0032 class SubSurfaceInterfacePrivate : public SurfaceRole, public QtWaylandServer::wl_subsurface 0033 { 0034 public: 0035 static SubSurfaceInterfacePrivate *get(SubSurfaceInterface *subsurface); 0036 0037 SubSurfaceInterfacePrivate(SubSurfaceInterface *q, SurfaceInterface *surface, SurfaceInterface *parent, ::wl_resource *resource); 0038 0039 void commit() override; 0040 void parentCommit(); 0041 0042 SubSurfaceInterface *q; 0043 QPoint position = QPoint(0, 0); 0044 QPoint pendingPosition = QPoint(0, 0); 0045 SubSurfaceInterface::Mode mode = SubSurfaceInterface::Mode::Synchronized; 0046 QPointer<SurfaceInterface> surface; 0047 QPointer<SurfaceInterface> parent; 0048 bool hasPendingPosition = false; 0049 0050 protected: 0051 void subsurface_destroy_resource(Resource *resource) override; 0052 void subsurface_destroy(Resource *resource) override; 0053 void subsurface_set_position(Resource *resource, int32_t x, int32_t y) override; 0054 void subsurface_place_above(Resource *resource, struct ::wl_resource *sibling_resource) override; 0055 void subsurface_place_below(Resource *resource, struct ::wl_resource *sibling_resource) override; 0056 void subsurface_set_sync(Resource *resource) override; 0057 void subsurface_set_desync(Resource *resource) override; 0058 }; 0059 0060 } // namespace KWaylandServer