~ubuntu-branches/ubuntu/wily/qtbase-opensource-src/wily

« back to all changes in this revision

Viewing changes to src/plugins/platforms/openwfd/qopenwfdintegration.cpp

  • Committer: Package Import Robot
  • Author(s): Timo Jyrinki
  • Date: 2013-02-05 12:46:17 UTC
  • Revision ID: package-import@ubuntu.com-20130205124617-c8jouts182j002fx
Tags: upstream-5.0.1+dfsg
ImportĀ upstreamĀ versionĀ 5.0.1+dfsg

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/****************************************************************************
 
2
**
 
3
** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
 
4
** Contact: http://www.qt-project.org/legal
 
5
**
 
6
** This file is part of the plugins of the Qt Toolkit.
 
7
**
 
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.
 
16
**
 
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.
 
24
**
 
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.
 
28
**
 
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.
 
36
**
 
37
**
 
38
** $QT_END_LICENSE$
 
39
**
 
40
****************************************************************************/
 
41
 
 
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"
 
49
 
 
50
#include <QtPlatformSupport/private/qgenericunixprintersupport_p.h>
 
51
 
 
52
#include <QtGui/private/qguiapplication_p.h>
 
53
#include <QtGui/QOpenGLContext>
 
54
#include <QtGui/QScreen>
 
55
 
 
56
#include <QtPlatformSupport/private/qgenericunixeventdispatcher_p.h>
 
57
#include <QtPlatformSupport/private/qgenericunixfontdatabase_p.h>
 
58
 
 
59
#include <stdio.h>
 
60
 
 
61
#include <WF/wfd.h>
 
62
 
 
63
QOpenWFDIntegration::QOpenWFDIntegration()
 
64
    : QPlatformIntegration()
 
65
    , mPrinterSupport(new QGenericUnixPrinterSupport)
 
66
    , mEventDispatcher(createUnixEventDispatcher())
 
67
{
 
68
    QGuiApplicationPrivate::instance()->setEventDispatcher(mEventDispatcher);
 
69
    int numberOfDevices = wfdEnumerateDevices(0,0,0);
 
70
 
 
71
    WFDint devices[numberOfDevices];
 
72
    int actualNumberOfDevices = wfdEnumerateDevices(devices,numberOfDevices,0);
 
73
    Q_ASSERT(actualNumberOfDevices == numberOfDevices);
 
74
 
 
75
    for (int i = 0; i < actualNumberOfDevices; i++) {
 
76
        mDevices.append(new QOpenWFDDevice(this,devices[i]));
 
77
    }
 
78
 
 
79
    mFontDatabase = new QGenericUnixFontDatabase();
 
80
    mNativeInterface = new QOpenWFDNativeInterface;
 
81
}
 
82
 
 
83
QOpenWFDIntegration::~QOpenWFDIntegration()
 
84
{
 
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++) {
 
88
        delete mDevices[i];
 
89
    }
 
90
 
 
91
    delete mFontDatabase;
 
92
    delete mNativeInterface;
 
93
    delete mPrinterSupport;
 
94
}
 
95
 
 
96
bool QOpenWFDIntegration::hasCapability(QPlatformIntegration::Capability cap) const
 
97
{
 
98
    switch (cap) {
 
99
    case ThreadedPixmaps: return true;
 
100
    case OpenGL: return true;
 
101
    default: return QPlatformIntegration::hasCapability(cap);
 
102
    }
 
103
}
 
104
 
 
105
QPlatformWindow *QOpenWFDIntegration::createPlatformWindow(QWindow *window) const
 
106
{
 
107
    return new QOpenWFDWindow(window);
 
108
}
 
109
 
 
110
QPlatformOpenGLContext *QOpenWFDIntegration::createPlatformOpenGLContext(QOpenGLContext *context) const
 
111
{
 
112
    QOpenWFDScreen *screen = static_cast<QOpenWFDScreen *>(context->screen()->handle());
 
113
 
 
114
    return new QOpenWFDGLContext(screen->port()->device());
 
115
}
 
116
 
 
117
QPlatformBackingStore *QOpenWFDIntegration::createPlatformBackingStore(QWindow *window) const
 
118
{
 
119
    return new QOpenWFDBackingStore(window);
 
120
}
 
121
 
 
122
QAbstractEventDispatcher *QOpenWFDIntegration::guiThreadEventDispatcher() const
 
123
{
 
124
    return mEventDispatcher;
 
125
}
 
126
 
 
127
QPlatformFontDatabase *QOpenWFDIntegration::fontDatabase() const
 
128
{
 
129
    return mFontDatabase;
 
130
}
 
131
 
 
132
QPlatformNativeInterface * QOpenWFDIntegration::nativeInterface() const
 
133
{
 
134
    return mNativeInterface;
 
135
}
 
136
 
 
137
QPlatformPrinterSupport * QOpenWFDIntegration::printerSupport() const
 
138
{
 
139
    return mPrinterSupport;
 
140
}
 
141
 
 
142
void QOpenWFDIntegration::addScreen(QOpenWFDScreen *screen)
 
143
{
 
144
    screenAdded(screen);
 
145
}