1 /**************************************************************************** 2 ** 3 ** Copyright (C) 2019 Pier Luigi Fiorini <pierluigi.fiorini@gmail.com> 4 ** Contact: https://www.qt.io/licensing/ 5 ** 6 ** This file is part of the QtWaylandCompositor module of the Qt Toolkit. 7 ** 8 ** $QT_BEGIN_LICENSE:GPL$ 9 ** Commercial License Usage 10 ** Licensees holding valid commercial Qt licenses may use this file in 11 ** accordance with the commercial license agreement provided with the 12 ** Software or, alternatively, in accordance with the terms contained in 13 ** a written agreement between you and The Qt Company. For licensing terms 14 ** and conditions see https://www.qt.io/terms-conditions. For further 15 ** information use the contact form at https://www.qt.io/contact-us. 16 ** 17 ** GNU General Public License Usage 18 ** Alternatively, this file may be used under the terms of the GNU 19 ** General Public License version 3 or (at your option) any later version 20 ** approved by the KDE Free Qt Foundation. The licenses are as published by 21 ** the Free Software Foundation and appearing in the file LICENSE.GPL3 22 ** included in the packaging of this file. Please review the following 23 ** information to ensure the GNU General Public License requirements will 24 ** be met: https://www.gnu.org/licenses/gpl-3.0.html. 25 ** 26 ** $QT_END_LICENSE$ 27 ** 28 ****************************************************************************/ 29 30 #include <QWaylandCompositor> 31 #include <QWaylandOutput> 32 33 #include "qwaylandquickxdgoutputv1.h" 34 #include "qwaylandxdgoutputv1_p.h" 35 QWaylandQuickXdgOutputV1()36QWaylandQuickXdgOutputV1::QWaylandQuickXdgOutputV1() 37 : QWaylandXdgOutputV1() 38 { 39 } 40 componentComplete()41void QWaylandQuickXdgOutputV1::componentComplete() 42 { 43 // Try to find the manager from the compositor extensions 44 if (!manager()) { 45 for (auto *p = parent(); p != nullptr; p = p->parent()) { 46 if (auto *c = qobject_cast<QWaylandCompositor *>(p)) { 47 for (auto *extension : c->extensions()) { 48 if (auto *m = qobject_cast<QWaylandXdgOutputManagerV1 *>(extension)) { 49 QWaylandXdgOutputV1Private::get(this)->setManager(m); 50 break; 51 } 52 } 53 } 54 } 55 } 56 57 // Try to find the output from the parents 58 if (!output()) { 59 for (auto *p = parent(); p != nullptr; p = p->parent()) { 60 if (auto *o = qobject_cast<QWaylandOutput *>(p)) { 61 QWaylandXdgOutputV1Private::get(this)->setOutput(o); 62 break; 63 } 64 } 65 } 66 } 67