1// Copyright (C) 2017 ITAGE Corporation, author: <yusuke.binsaki@itage.co.jp>
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3
4#ifndef QWAYLANDIVISURFACE_H
5#define QWAYLANDIVISURFACE_H
6
7#include <QtWaylandClient/private/qwaylandshellsurface_p.h>
8#include "qwayland-ivi-application.h"
9#include "qwayland-ivi-controller.h"
10
11QT_BEGIN_NAMESPACE
12
13namespace QtWaylandClient {
14
15class QWaylandWindow;
16class QWaylandInputDevice;
17
18class Q_WAYLANDCLIENT_EXPORT QWaylandIviSurface : public QtWayland::ivi_surface
19 , public QWaylandShellSurface, public QtWayland::ivi_controller_surface
20{
21public:
22 QWaylandIviSurface(struct ::ivi_surface *shell_surface, QWaylandWindow *window);
23 QWaylandIviSurface(struct ::ivi_surface *shell_surface, QWaylandWindow *window,
24 struct ::ivi_controller_surface *iviControllerSurface);
25 ~QWaylandIviSurface() override;
26
27 void applyConfigure() override;
28
29 std::any surfaceRole() const override { return ivi_surface::object(); };
30
31private:
32 void createExtendedSurface(QWaylandWindow *window);
33 void ivi_surface_configure(int32_t width, int32_t height) override;
34 void ivi_controller_surface_visibility(int32_t visibility) override;
35
36 QWaylandWindow *m_window = nullptr;
37 QSize m_pendingSize = {0, 0};
38};
39
40}
41
42QT_END_NAMESPACE
43
44#endif // QWAYLANDIVISURFACE_H
45

source code of qtwayland/src/plugins/shellintegration/ivi-shell/qwaylandivisurface_p.h