~phablet-team/qtubuntu/shellRotation

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
  1. Description
  2. Running
  3. Building
  4. QPA native interface
  5. QPA properties


1. Description
--------------

  QtUbuntu contains a QPA (Qt Platform Abstraction) plugin based on the Ubuntu
  Platform API


2 Running
---------

  Considering the QPA plugin path is correctly set using either the
  QT_QPA_PLATFORM_PLUGIN_PATH environment variable or the
  "-platformpluginpath" command line switch, the following commands
  can be used to run with the Ubuntu QPA plugin:

    $ qmlscene -platform ubuntumirclient Foo.qml
    $ QT_QPA_PLATFORM=ubuntumirclient qmlscene Foo.qml

  The QPA plugins expose the following environment variables:

    QTUBUNTU_SWAPINTERVAL: Specifies the required swap interval as an
                           integer. 1 by default.

    QTUBUNTU_MULTISAMPLE: Enables multisampling with using 4 samples
                          per fragment.

    QTUBUNTU_NO_THREADED_OPENGL: Disables QtQuick threaded OpenGL
                                 rendering.

    QTUBUNTU_NO_INPUT: Disables touchscreen and buttons.

    QTUBUNTU_ICON_THEME: Specifies the default icon theme name.


3. Building
-----------

  To compile QtUbuntu, create the makefiles with qmake and build with
  make:

    $ qmake
    $ make

  By default, QtUbuntu compiles a release build. To compile a debug
  build, the following qmake command should be used:

    $ qmake CONFIG+=debug


4. QPA native interface
-----------------------

  The QPA plugin exposes a native interface allowing to retrieve
  native handles and to filter out native events. In order to retrieve
  native handles, the following code can be used:

    #include <QtGui/QGuiApplication>
    #include <qpa/qplatformnativeinterface.h>
    ...
    QQuickView* view = new QQuickView();
    ...
    QPlatformNativeInterface* native = QGuiApplication::platformNativeInterface();
    printf("app: eglcontext=%p egldisplay=%p\n",
           native->nativeResourceForContext("eglcontext", view->openglContext()),
           native->nativeResourceForWindow("egldisplay", view));

  Note that handles aren't valid until the application mainloop is started. The
  qmake .pro needs to add private gui include directories using

    QT += gui-private

  Some events exposed in the input compatibility layer can't be
  directly mapped to Qt. In order to retrieve such events, a native
  event filter needs to be installed. To do so, a
  QAbstractNativeEventFilter [1] filtering out "Event" events needs to
  be implemented and installed using
  QCoreApplication::installNativeEventFilter [2].

  [1] http://doc-snapshot.qt-project.org/5.0/qabstractnativeeventfilter.html
  [2] http://doc-snapshot.qt-project.org/5.0/qcoreapplication.html#installNativeEventFilter