1
/****************************************************************************
3
** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
4
** Contact: http://www.qt-project.org/legal
6
** This file is part of the plugins of the Qt Toolkit.
8
** $QT_BEGIN_LICENSE:LGPL$
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 Digia. For licensing terms and
14
** conditions see http://qt.digia.com/licensing. For further information
15
** use the contact form at http://qt.digia.com/contact-us.
17
** GNU Lesser General Public License Usage
18
** Alternatively, this file may be used under the terms of the GNU Lesser
19
** General Public License version 2.1 as published by the Free Software
20
** Foundation and appearing in the file LICENSE.LGPL included in the
21
** packaging of this file. Please review the following information to
22
** ensure the GNU Lesser General Public License version 2.1 requirements
23
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
25
** In addition, as a special exception, Digia gives you certain additional
26
** rights. These rights are described in the Digia Qt LGPL Exception
27
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
29
** GNU General Public License Usage
30
** Alternatively, this file may be used under the terms of the GNU
31
** General Public License version 3.0 as published by the Free Software
32
** Foundation and appearing in the file LICENSE.GPL included in the
33
** packaging of this file. Please review the following information to
34
** ensure the GNU General Public License version 3.0 requirements will be
35
** met: http://www.gnu.org/copyleft/gpl.html.
40
****************************************************************************/
42
#include "qopenwfdintegration.h"
43
#include "qopenwfdscreen.h"
44
#include "qopenwfdnativeinterface.h"
45
#include "qopenwfddevice.h"
46
#include "qopenwfdwindow.h"
47
#include "qopenwfdglcontext.h"
48
#include "qopenwfdbackingstore.h"
50
#include <QtPlatformSupport/private/qgenericunixprintersupport_p.h>
52
#include <QtGui/private/qguiapplication_p.h>
53
#include <QtGui/QOpenGLContext>
54
#include <QtGui/QScreen>
56
#include <QtPlatformSupport/private/qgenericunixeventdispatcher_p.h>
57
#include <QtPlatformSupport/private/qgenericunixfontdatabase_p.h>
63
QOpenWFDIntegration::QOpenWFDIntegration()
64
: QPlatformIntegration()
65
, mPrinterSupport(new QGenericUnixPrinterSupport)
66
, mEventDispatcher(createUnixEventDispatcher())
68
QGuiApplicationPrivate::instance()->setEventDispatcher(mEventDispatcher);
69
int numberOfDevices = wfdEnumerateDevices(0,0,0);
71
WFDint devices[numberOfDevices];
72
int actualNumberOfDevices = wfdEnumerateDevices(devices,numberOfDevices,0);
73
Q_ASSERT(actualNumberOfDevices == numberOfDevices);
75
for (int i = 0; i < actualNumberOfDevices; i++) {
76
mDevices.append(new QOpenWFDDevice(this,devices[i]));
79
mFontDatabase = new QGenericUnixFontDatabase();
80
mNativeInterface = new QOpenWFDNativeInterface;
83
QOpenWFDIntegration::~QOpenWFDIntegration()
85
//don't delete screens since they are deleted by the devices
86
qDebug() << "deleting platform integration";
87
for (int i = 0; i < mDevices.size(); i++) {
92
delete mNativeInterface;
93
delete mPrinterSupport;
96
bool QOpenWFDIntegration::hasCapability(QPlatformIntegration::Capability cap) const
99
case ThreadedPixmaps: return true;
100
case OpenGL: return true;
101
default: return QPlatformIntegration::hasCapability(cap);
105
QPlatformWindow *QOpenWFDIntegration::createPlatformWindow(QWindow *window) const
107
return new QOpenWFDWindow(window);
110
QPlatformOpenGLContext *QOpenWFDIntegration::createPlatformOpenGLContext(QOpenGLContext *context) const
112
QOpenWFDScreen *screen = static_cast<QOpenWFDScreen *>(context->screen()->handle());
114
return new QOpenWFDGLContext(screen->port()->device());
117
QPlatformBackingStore *QOpenWFDIntegration::createPlatformBackingStore(QWindow *window) const
119
return new QOpenWFDBackingStore(window);
122
QAbstractEventDispatcher *QOpenWFDIntegration::guiThreadEventDispatcher() const
124
return mEventDispatcher;
127
QPlatformFontDatabase *QOpenWFDIntegration::fontDatabase() const
129
return mFontDatabase;
132
QPlatformNativeInterface * QOpenWFDIntegration::nativeInterface() const
134
return mNativeInterface;
137
QPlatformPrinterSupport * QOpenWFDIntegration::printerSupport() const
139
return mPrinterSupport;
142
void QOpenWFDIntegration::addScreen(QOpenWFDScreen *screen)