Merge lp:~gerboland/qtubuntu/enable-debug-mode into lp:qtubuntu

Proposed by Gerry Boland
Status: Superseded
Proposed branch: lp:~gerboland/qtubuntu/enable-debug-mode
Merge into: lp:qtubuntu
Prerequisite: lp:~albaguirre/qtubuntu/use-mir-surface-apis
Diff against target: 562 lines (+167/-56)
14 files modified
debian/control (+1/-0)
src/ubuntumirclient/debugextension.cpp (+55/-0)
src/ubuntumirclient/debugextension.h (+39/-0)
src/ubuntumirclient/input.cpp (+17/-22)
src/ubuntumirclient/integration.cpp (+14/-2)
src/ubuntumirclient/integration.h (+4/-1)
src/ubuntumirclient/logging.h (+1/-0)
src/ubuntumirclient/plugin.cpp (+5/-11)
src/ubuntumirclient/plugin.h (+2/-3)
src/ubuntumirclient/screen.cpp (+1/-6)
src/ubuntumirclient/screenobserver.cpp (+1/-1)
src/ubuntumirclient/ubuntumirclient.pro (+2/-0)
src/ubuntumirclient/window.cpp (+21/-9)
src/ubuntumirclient/window.h (+4/-1)
To merge this branch: bzr merge lp:~gerboland/qtubuntu/enable-debug-mode
Reviewer Review Type Date Requested Status
Unity8 CI Bot continuous-integration Approve
Daniel d'Andrada (community) Needs Information
Michael Terry Abstain
Nick Dedekind (community) Needs Information
PS Jenkins bot continuous-integration Approve
Review via email: mp+276293@code.launchpad.net

This proposal has been superseded by a proposal from 2016-09-22.

Commit message

Use mir-client-debug to map window coordinates to screen coordinates

If client detects testability framework was enabled, try to load the mir-client-debug library and use it to implement UbuntuWindow::mapToGlobal. This should enable Autopilot to correctly interact with the application.

Description of the change

Use mir-client-debug to map window coordinates to screen coordinates when under testability

To work with unity8 it needs https://code.launchpad.net/~dandrader/qtmir/coordinateTranslator/+merge/291768

To post a comment you must log in.
Revision history for this message
Gerry Boland (gerboland) wrote :

Note: this requires work on unity8's side before it is functional. But it works with mir-demo-server.

Also note, mir only supports this mir-client-debug extension if the mir server is started with the --debug argument.

This will be a problem for application autopilot testing, as it will require unity8 to be restarted with the --debug flag now.

Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :
review: Approve (continuous-integration)
Revision history for this message
Gerry Boland (gerboland) wrote :

To test, handiest is to apply this patch: http://pastebin.ubuntu.com/13011095/ and then do:

mir_demo_shell --debug

and start any qt app with "-testability" flag.

Revision history for this message
Unity8 CI Bot (unity8-ci-bot) wrote :

FAILED: Continuous integration, rev:283
https://unity8-jenkins.ubuntu.com/job/lp-qtubuntu-1-ci/5/
Executed test runs:

Click here to trigger a rebuild:
https://unity8-jenkins.ubuntu.com/job/lp-qtubuntu-1-ci/5/rebuild

review: Needs Fixing (continuous-integration)
Revision history for this message
Nick Dedekind (nick-dedekind) wrote :

Does this mean we can remove UbuntuWindow::updatePanelHeightHack and all the geom.setY(panelHeight()) ?

review: Needs Information
Revision history for this message
Nick Dedekind (nick-dedekind) wrote :

And how about QPlatformWindow::mapFromGlobal for kicks?

Revision history for this message
Gerry Boland (gerboland) wrote :

Yep, it lets us remove the panelHeight hack. Could also implement mapFromGlobal too, but I didn't see a use-case

Revision history for this message
Nick Dedekind (nick-dedekind) wrote :

rebase please :)

Revision history for this message
Nick Dedekind (nick-dedekind) wrote :

Afraid this will not work unless we get https://bugreports.qt.io/browse/QTBUG-51031 sorted.

Revision history for this message
Unity8 CI Bot (unity8-ci-bot) wrote :
review: Needs Fixing (continuous-integration)
Revision history for this message
Daniel d'Andrada (dandrader) wrote :

> Afraid this will not work unless we get
> https://bugreports.qt.io/browse/QTBUG-51031 sorted.

It will work as long as application code calls "window->handle()->mapToGlobal()" instead of "window->mapToGlobal()".

Revision history for this message
Daniel d'Andrada (dandrader) wrote :

It has a bunch of conflicts with trunk. Solved them here: lp:~dandrader/qtubuntu/enable-debug-mode
Feel free to branch it, squash its history and push it here with --overwrite.

This branch, along with lp:~dandrader/qtmir/coordinateTranslator, should be all autopilot folks need for mapping local points to screen points (regardless of any translations, rotations and scalings done by unity8 to the application surface)

review: Needs Fixing
Revision history for this message
Unity8 CI Bot (unity8-ci-bot) wrote :

PASSED: Continuous integration, rev:287
https://unity8-jenkins.ubuntu.com/job/lp-qtubuntu-ci/35/
Executed test runs:
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-0-fetch/1331
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-1-sourcepkg/release=vivid+overlay/1302
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-1-sourcepkg/release=xenial/1302
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=vivid+overlay/1300
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=vivid+overlay/1300/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=xenial/1300
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=xenial/1300/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=vivid+overlay/1300
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=vivid+overlay/1300/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=xenial/1300
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=xenial/1300/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=vivid+overlay/1300
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=vivid+overlay/1300/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=xenial/1300
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=xenial/1300/artifact/output/*zip*/output.zip

Click here to trigger a rebuild:
https://unity8-jenkins.ubuntu.com/job/lp-qtubuntu-ci/35/rebuild

review: Approve (continuous-integration)
Revision history for this message
Daniel d'Andrada (dandrader) wrote :

It works.

review: Approve
Revision history for this message
Michael Terry (mterry) wrote :

This conflicts with trunk now. :(

review: Needs Fixing
Revision history for this message
Unity8 CI Bot (unity8-ci-bot) wrote :
review: Needs Fixing (continuous-integration)
Revision history for this message
Daniel d'Andrada (dandrader) wrote :

Lot's of conflicts with trunk:

"""
Text conflict in src/ubuntumirclient/integration.cpp
Text conflict in src/ubuntumirclient/integration.h
Text conflict in src/ubuntumirclient/window.cpp
Text conflict in src/ubuntumirclient/window.h
4 conflicts encountered.
"""

review: Needs Fixing
288. By Gerry Boland

Merge trunk & fix conflicts

289. By Gerry Boland

Fix up some bad merge decisions, and bump copyrights

290. By Gerry Boland

Merged trunk

Revision history for this message
Gerry Boland (gerboland) wrote :

I pushed to the actual right branch this time!

Revision history for this message
Michael Terry (mterry) wrote :

OK, conflicts fixed.

review: Abstain
Revision history for this message
Unity8 CI Bot (unity8-ci-bot) wrote :

FAILED: Continuous integration, rev:290
https://unity8-jenkins.ubuntu.com/job/lp-qtubuntu-ci/102/
Executed test runs:
    FAILURE: https://unity8-jenkins.ubuntu.com/job/build/2528/console
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-0-fetch/2556
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-1-sourcepkg/release=vivid+overlay/2437
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-1-sourcepkg/release=xenial+overlay/2437
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-1-sourcepkg/release=yakkety/2437
    FAILURE: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=vivid+overlay/2430/console
    FAILURE: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=xenial+overlay/2430/console
    FAILURE: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=yakkety/2430/console
    FAILURE: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=vivid+overlay/2430/console
    FAILURE: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=xenial+overlay/2430/console
    FAILURE: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=yakkety/2430/console
    FAILURE: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=vivid+overlay/2430/console
    FAILURE: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=xenial+overlay/2430/console
    FAILURE: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=yakkety/2430/console

Click here to trigger a rebuild:
https://unity8-jenkins.ubuntu.com/job/lp-qtubuntu-ci/102/rebuild

review: Needs Fixing (continuous-integration)
291. By Gerry Boland

Fix FTBFS, pass debug extension to Window

Revision history for this message
Unity8 CI Bot (unity8-ci-bot) wrote :

PASSED: Continuous integration, rev:291
https://unity8-jenkins.ubuntu.com/job/lp-qtubuntu-ci/103/
Executed test runs:
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build/2530
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-0-fetch/2558
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-1-sourcepkg/release=vivid+overlay/2439
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-1-sourcepkg/release=xenial+overlay/2439
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-1-sourcepkg/release=yakkety/2439
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=vivid+overlay/2432
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=vivid+overlay/2432/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=xenial+overlay/2432
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=xenial+overlay/2432/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=yakkety/2432
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=yakkety/2432/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=vivid+overlay/2432
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=vivid+overlay/2432/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=xenial+overlay/2432
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=xenial+overlay/2432/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=yakkety/2432
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=yakkety/2432/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=vivid+overlay/2432
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=vivid+overlay/2432/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=xenial+overlay/2432
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=xenial+overlay/2432/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=yakkety/2432
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=yakkety/2432/artifact/output/*zip*/output.zip

Click here to trigger a rebuild:
https://unity8-jenkins.ubuntu.com/job/lp-qtubuntu-ci/103/rebuild

review: Approve (continuous-integration)
Revision history for this message
Daniel d'Andrada (dandrader) wrote :

"""
+ qDebug() << "NOTICE: Loading mirclient-debug-extension";
"""

Do we want to keep that? If so, better categorize it so that people know where does it come from when seeing it in the console

review: Needs Information
Revision history for this message
Gerry Boland (gerboland) wrote :

Updated

Revision history for this message
Daniel d'Andrada (dandrader) wrote :

Those changes in src/ubuntumirclient/input.cpp seem unrelated. Missing prereq?

review: Needs Information
Revision history for this message
Unity8 CI Bot (unity8-ci-bot) wrote :

PASSED: Continuous integration, rev:293
https://unity8-jenkins.ubuntu.com/job/lp-qtubuntu-ci/118/
Executed test runs:
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build/2941
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-0-fetch/2969
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=vivid+overlay/2827
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=vivid+overlay/2827/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=xenial+overlay/2827
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=xenial+overlay/2827/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=yakkety/2827
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=yakkety/2827/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=vivid+overlay/2827
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=vivid+overlay/2827/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=xenial+overlay/2827
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=xenial+overlay/2827/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=yakkety/2827
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=yakkety/2827/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=vivid+overlay/2827
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=vivid+overlay/2827/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=xenial+overlay/2827
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=xenial+overlay/2827/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=yakkety/2827
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=yakkety/2827/artifact/output/*zip*/output.zip

Click here to trigger a rebuild:
https://unity8-jenkins.ubuntu.com/job/lp-qtubuntu-ci/118/rebuild

review: Approve (continuous-integration)
Revision history for this message
Unity8 CI Bot (unity8-ci-bot) wrote :

PASSED: Continuous integration, rev:294
https://unity8-jenkins.ubuntu.com/job/lp-qtubuntu-ci/119/
Executed test runs:
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build/2945
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-0-fetch/2973
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=vivid+overlay/2831
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=vivid+overlay/2831/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=xenial+overlay/2831
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=xenial+overlay/2831/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=yakkety/2831
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=yakkety/2831/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=vivid+overlay/2831
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=vivid+overlay/2831/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=xenial+overlay/2831
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=xenial+overlay/2831/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=yakkety/2831
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=yakkety/2831/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=vivid+overlay/2831
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=vivid+overlay/2831/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=xenial+overlay/2831
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=xenial+overlay/2831/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=yakkety/2831
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=yakkety/2831/artifact/output/*zip*/output.zip

Click here to trigger a rebuild:
https://unity8-jenkins.ubuntu.com/job/lp-qtubuntu-ci/119/rebuild

review: Approve (continuous-integration)
292. By Gerry Boland

Merge trunk

293. By Gerry Boland

Use category logging for debug extension warnings

294. By Gerry Boland

Use dedicated logging category for debug-related messages

295. By Gerry Boland

Merge trunk

Unmerged revisions

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'debian/control'
--- debian/control 2016-08-24 12:40:30 +0000
+++ debian/control 2016-09-22 15:36:58 +0000
@@ -11,6 +11,7 @@
11 libglib2.0-dev,11 libglib2.0-dev,
12 libinput-dev,12 libinput-dev,
13 libmirclient-dev (>= 0.13.0),13 libmirclient-dev (>= 0.13.0),
14 libmirclient-debug-extension-dev,
14 libmtdev-dev,15 libmtdev-dev,
15 libubuntu-application-api-dev (>= 2.9.0),16 libubuntu-application-api-dev (>= 2.9.0),
16 libudev-dev,17 libudev-dev,
1718
=== added file 'src/ubuntumirclient/debugextension.cpp'
--- src/ubuntumirclient/debugextension.cpp 1970-01-01 00:00:00 +0000
+++ src/ubuntumirclient/debugextension.cpp 2016-09-22 15:36:58 +0000
@@ -0,0 +1,55 @@
1/*
2 * Copyright (C) 2016 Canonical, Ltd.
3 *
4 * This program is free software: you can redistribute it and/or modify it under
5 * the terms of the GNU Lesser General Public License version 3, as published by
6 * the Free Software Foundation.
7 *
8 * This program is distributed in the hope that it will be useful, but WITHOUT
9 * ANY WARRANTY; without even the implied warranties of MERCHANTABILITY,
10 * SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11 * Lesser General Public License for more details.
12 *
13 * You should have received a copy of the GNU Lesser General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16
17#include "debugextension.h"
18
19#include "logging.h"
20
21// mir client debug
22#include <mir_toolkit/debug/surface.h>
23
24Q_LOGGING_CATEGORY(ubuntumirclientDebug, "ubuntumirclient.debug")
25
26UbuntuDebugExtension::UbuntuDebugExtension()
27 : m_mirclientDebug(QStringLiteral("mirclient-debug-extension"), 1)
28 , m_mapper(nullptr)
29{
30 qCDebug(ubuntumirclientDebug) << "NOTICE: Loading mirclient-debug-extension";
31 m_mapper = (MapperPrototype) m_mirclientDebug.resolve("mir_debug_surface_coords_to_screen");
32
33 if (!m_mirclientDebug.isLoaded()) {
34 qCWarning(ubuntumirclientDebug) << "ERROR: mirclient-debug-extension failed to load:"
35 << m_mirclientDebug.errorString();
36 } else if (!m_mapper) {
37 qCWarning(ubuntumirclientDebug) << "ERROR: unable to find required symbols in mirclient-debug-extension:"
38 << m_mirclientDebug.errorString();
39 }
40}
41
42QPoint UbuntuDebugExtension::mapSurfacePointToScreen(MirSurface *surface, const QPoint &point)
43{
44 if (!m_mapper) {
45 return point;
46 }
47
48 QPoint mappedPoint;
49 bool status = m_mapper(surface, point.x(), point.y(), &mappedPoint.rx(), &mappedPoint.ry());
50 if (status) {
51 return mappedPoint;
52 } else {
53 return point;
54 }
55}
056
=== added file 'src/ubuntumirclient/debugextension.h'
--- src/ubuntumirclient/debugextension.h 1970-01-01 00:00:00 +0000
+++ src/ubuntumirclient/debugextension.h 2016-09-22 15:36:58 +0000
@@ -0,0 +1,39 @@
1/*
2 * Copyright (C) 2016 Canonical, Ltd.
3 *
4 * This program is free software: you can redistribute it and/or modify it under
5 * the terms of the GNU Lesser General Public License version 3, as published by
6 * the Free Software Foundation.
7 *
8 * This program is distributed in the hope that it will be useful, but WITHOUT
9 * ANY WARRANTY; without even the implied warranties of MERCHANTABILITY,
10 * SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11 * Lesser General Public License for more details.
12 *
13 * You should have received a copy of the GNU Lesser General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16
17#ifndef UBUNTU_DEBUG_EXTENSION_H
18#define UBUNTU_DEBUG_EXTENSION_H
19
20#include <QPoint>
21#include <QLibrary>
22struct MirSurface;
23
24typedef bool (*MapperPrototype)(MirSurface* surface, int x, int y, int* screenX, int* screenY);
25
26
27class UbuntuDebugExtension
28{
29public:
30 UbuntuDebugExtension();
31
32 QPoint mapSurfacePointToScreen(MirSurface *, const QPoint &point);
33
34private:
35 QLibrary m_mirclientDebug;
36 MapperPrototype m_mapper;
37};
38
39#endif // UBUNTU_DEBUG_EXTENSION_H
040
=== modified file 'src/ubuntumirclient/input.cpp'
--- src/ubuntumirclient/input.cpp 2016-08-24 12:40:30 +0000
+++ src/ubuntumirclient/input.cpp 2016-09-22 15:36:58 +0000
@@ -209,26 +209,31 @@
209 switch (t)209 switch (t)
210 {210 {
211 case mir_event_type_key:211 case mir_event_type_key:
212 return "mir_event_type_key";212 return "key";
213 case mir_event_type_motion:213 case mir_event_type_motion:
214 return "mir_event_type_motion";214 return "motion";
215 case mir_event_type_surface:215 case mir_event_type_surface:
216 return "mir_event_type_surface";216 return "surface";
217 case mir_event_type_resize:217 case mir_event_type_resize:
218 return "mir_event_type_resize";218 return "resize";
219 case mir_event_type_prompt_session_state_change:219 case mir_event_type_prompt_session_state_change:
220 return "mir_event_type_prompt_session_state_change";220 return "prompt_session_state_change";
221 case mir_event_type_orientation:221 case mir_event_type_orientation:
222 return "mir_event_type_orientation";222 return "orientation";
223 case mir_event_type_close_surface:223 case mir_event_type_close_surface:
224 return "mir_event_type_close_surface";224 return "close_surface";
225 case mir_event_type_input:225 case mir_event_type_input:
226 return "mir_event_type_input";226 return "input";
227 case mir_event_type_keymap:
228 return "keymap";
229 case mir_event_type_input_configuration:
230 return "input_configuration";
227 case mir_event_type_surface_output:231 case mir_event_type_surface_output:
228 return "mir_event_type_surface_output";232 return "surface_output";
229 default:233 case mir_event_type_input_device_state:
230 return "invalid";234 return "input_device_state";
231 }235 }
236 Q_UNREACHABLE();
232}237}
233238
234void UbuntuInput::customEvent(QEvent* event)239void UbuntuInput::customEvent(QEvent* event)
@@ -334,8 +339,6 @@
334 case mir_input_event_type_pointer:339 case mir_input_event_type_pointer:
335 dispatchPointerEvent(window, ev);340 dispatchPointerEvent(window, ev);
336 break;341 break;
337 default:
338 break;
339 }342 }
340}343}
341344
@@ -377,7 +380,6 @@
377 touchPoint.state = Qt::TouchPointReleased;380 touchPoint.state = Qt::TouchPointReleased;
378 break;381 break;
379 case mir_touch_action_change:382 case mir_touch_action_change:
380 default:
381 touchPoint.state = Qt::TouchPointMoved;383 touchPoint.state = Qt::TouchPointMoved;
382 }384 }
383385
@@ -537,8 +539,6 @@
537 case mir_pointer_action_leave:539 case mir_pointer_action_leave:
538 QWindowSystemInterface::handleLeaveEvent(window);540 QWindowSystemInterface::handleLeaveEvent(window);
539 break;541 break;
540 default:
541 qCDebug(ubuntumirclient, "Unrecognized pointer event");
542 }542 }
543}543}
544544
@@ -547,19 +547,14 @@
547 switch (orientation) {547 switch (orientation) {
548 case mir_orientation_normal:548 case mir_orientation_normal:
549 return "Normal";549 return "Normal";
550 break;
551 case mir_orientation_left:550 case mir_orientation_left:
552 return "Left";551 return "Left";
553 break;
554 case mir_orientation_inverted:552 case mir_orientation_inverted:
555 return "Inverted";553 return "Inverted";
556 break;
557 case mir_orientation_right:554 case mir_orientation_right:
558 return "Right";555 return "Right";
559 break;
560 default:
561 return "INVALID!";
562 }556 }
557 Q_UNREACHABLE();
563}558}
564559
565void UbuntuInput::dispatchOrientationEvent(QWindow *window, const MirOrientationEvent *event)560void UbuntuInput::dispatchOrientationEvent(QWindow *window, const MirOrientationEvent *event)
566561
=== modified file 'src/ubuntumirclient/integration.cpp'
--- src/ubuntumirclient/integration.cpp 2016-08-24 12:40:30 +0000
+++ src/ubuntumirclient/integration.cpp 2016-09-22 15:36:58 +0000
@@ -18,6 +18,7 @@
18#include "integration.h"18#include "integration.h"
19#include "backingstore.h"19#include "backingstore.h"
20#include "clipboard.h"20#include "clipboard.h"
21#include "debugextension.h"
21#include "glcontext.h"22#include "glcontext.h"
22#include "input.h"23#include "input.h"
23#include "logging.h"24#include "logging.h"
@@ -69,7 +70,7 @@
69 QWindowSystemInterface::handleApplicationStateChanged(Qt::ApplicationSuspended);70 QWindowSystemInterface::handleApplicationStateChanged(Qt::ApplicationSuspended);
70}71}
7172
72UbuntuClientIntegration::UbuntuClientIntegration()73UbuntuClientIntegration::UbuntuClientIntegration(int argc, char **argv)
73 : QPlatformIntegration()74 : QPlatformIntegration()
74 , mNativeInterface(new UbuntuNativeInterface(this))75 , mNativeInterface(new UbuntuNativeInterface(this))
75 , mFontDb(new QGenericUnixFontDatabase)76 , mFontDb(new QGenericUnixFontDatabase)
@@ -104,6 +105,17 @@
104 mEglNativeDisplay = mir_connection_get_egl_native_display(mMirConnection);105 mEglNativeDisplay = mir_connection_get_egl_native_display(mMirConnection);
105 ASSERT((mEglDisplay = eglGetDisplay(mEglNativeDisplay)) != EGL_NO_DISPLAY);106 ASSERT((mEglDisplay = eglGetDisplay(mEglNativeDisplay)) != EGL_NO_DISPLAY);
106 ASSERT(eglInitialize(mEglDisplay, nullptr, nullptr) == EGL_TRUE);107 ASSERT(eglInitialize(mEglDisplay, nullptr, nullptr) == EGL_TRUE);
108
109 // Has debug mode been requsted, either with "-testability" switch or QT_LOAD_TESTABILITY env var
110 bool testability = qEnvironmentVariableIsSet("QT_LOAD_TESTABILITY");
111 for (int i=1; !testability && i<argc; i++) {
112 if (strcmp(argv[i], "-testability") == 0) {
113 testability = true;
114 }
115 }
116 if (testability) {
117 mDebugExtension.reset(new UbuntuDebugExtension);
118 }
107}119}
108120
109void UbuntuClientIntegration::initialize()121void UbuntuClientIntegration::initialize()
@@ -210,7 +222,7 @@
210222
211QPlatformWindow* UbuntuClientIntegration::createPlatformWindow(QWindow* window) const223QPlatformWindow* UbuntuClientIntegration::createPlatformWindow(QWindow* window) const
212{224{
213 return new UbuntuWindow(window, mInput, mNativeInterface, mEglDisplay, mMirConnection);225 return new UbuntuWindow(window, mInput, mNativeInterface, mEglDisplay, mMirConnection, mDebugExtension.data());
214}226}
215227
216bool UbuntuClientIntegration::hasCapability(QPlatformIntegration::Capability cap) const228bool UbuntuClientIntegration::hasCapability(QPlatformIntegration::Capability cap) const
217229
=== modified file 'src/ubuntumirclient/integration.h'
--- src/ubuntumirclient/integration.h 2016-08-24 12:40:30 +0000
+++ src/ubuntumirclient/integration.h 2016-09-22 15:36:58 +0000
@@ -29,6 +29,7 @@
2929
30#include <EGL/egl.h>30#include <EGL/egl.h>
3131
32class UbuntuDebugExtension;
32class UbuntuInput;33class UbuntuInput;
33class UbuntuNativeInterface;34class UbuntuNativeInterface;
34class UbuntuScreen;35class UbuntuScreen;
@@ -39,7 +40,7 @@
39 Q_OBJECT40 Q_OBJECT
4041
41public:42public:
42 UbuntuClientIntegration();43 UbuntuClientIntegration(int argc, char **argv);
43 virtual ~UbuntuClientIntegration();44 virtual ~UbuntuClientIntegration();
4445
45 // QPlatformIntegration methods.46 // QPlatformIntegration methods.
@@ -64,6 +65,7 @@
64 EGLDisplay eglDisplay() const { return mEglDisplay; }65 EGLDisplay eglDisplay() const { return mEglDisplay; }
65 EGLNativeDisplayType eglNativeDisplay() const { return mEglNativeDisplay; }66 EGLNativeDisplayType eglNativeDisplay() const { return mEglNativeDisplay; }
66 UbuntuScreenObserver *screenObserver() const { return mScreenObserver.data(); }67 UbuntuScreenObserver *screenObserver() const { return mScreenObserver.data(); }
68 UbuntuDebugExtension *debugExtension() const { return mDebugExtension.data(); }
6769
68private Q_SLOTS:70private Q_SLOTS:
69 void destroyScreen(UbuntuScreen *screen);71 void destroyScreen(UbuntuScreen *screen);
@@ -81,6 +83,7 @@
8183
82 UbuntuInput* mInput;84 UbuntuInput* mInput;
83 QPlatformInputContext* mInputContext;85 QPlatformInputContext* mInputContext;
86 QScopedPointer<UbuntuDebugExtension> mDebugExtension;
84 QScopedPointer<UbuntuScreenObserver> mScreenObserver;87 QScopedPointer<UbuntuScreenObserver> mScreenObserver;
85 qreal mScaleFactor;88 qreal mScaleFactor;
8689
8790
=== modified file 'src/ubuntumirclient/logging.h'
--- src/ubuntumirclient/logging.h 2016-06-22 17:16:33 +0000
+++ src/ubuntumirclient/logging.h 2016-09-22 15:36:58 +0000
@@ -26,5 +26,6 @@
26Q_DECLARE_LOGGING_CATEGORY(ubuntumirclientInput)26Q_DECLARE_LOGGING_CATEGORY(ubuntumirclientInput)
27Q_DECLARE_LOGGING_CATEGORY(ubuntumirclientGraphics)27Q_DECLARE_LOGGING_CATEGORY(ubuntumirclientGraphics)
28Q_DECLARE_LOGGING_CATEGORY(ubuntumirclientCursor)28Q_DECLARE_LOGGING_CATEGORY(ubuntumirclientCursor)
29Q_DECLARE_LOGGING_CATEGORY(ubuntumirclientDebug)
2930
30#endif // QUBUNTULOGGING_H31#endif // QUBUNTULOGGING_H
3132
=== modified file 'src/ubuntumirclient/plugin.cpp'
--- src/ubuntumirclient/plugin.cpp 2015-12-04 16:19:33 +0000
+++ src/ubuntumirclient/plugin.cpp 2016-09-22 15:36:58 +0000
@@ -1,5 +1,5 @@
1/*1/*
2 * Copyright (C) 2014 Canonical, Ltd.2 * Copyright (C) 2014-2016 Canonical, Ltd.
3 *3 *
4 * This program is free software: you can redistribute it and/or modify it under4 * This program is free software: you can redistribute it and/or modify it under
5 * the terms of the GNU Lesser General Public License version 3, as published by5 * the terms of the GNU Lesser General Public License version 3, as published by
@@ -20,15 +20,9 @@
2020
21Q_LOGGING_CATEGORY(ubuntumirclient, "ubuntumirclient", QtWarningMsg)21Q_LOGGING_CATEGORY(ubuntumirclient, "ubuntumirclient", QtWarningMsg)
2222
23QStringList UbuntuMirClientIntegrationPlugin::keys() const23QPlatformIntegration *UbuntuMirClientIntegrationPlugin::create(const QString &system,
24{24 const QStringList &/*paramList*/,
25 QStringList list;25 int &argc, char **argv)
26 list << QStringLiteral("ubuntumirclient");
27 return list;
28}
29
30QPlatformIntegration* UbuntuMirClientIntegrationPlugin::create(const QString &system,
31 const QStringList &)
32{26{
33 if (system.toLower() == QLatin1String("ubuntumirclient")) {27 if (system.toLower() == QLatin1String("ubuntumirclient")) {
34#ifdef PLATFORM_API_TOUCH28#ifdef PLATFORM_API_TOUCH
@@ -36,7 +30,7 @@
36#else30#else
37 setenv("UBUNTU_PLATFORM_API_BACKEND", "desktop_mirclient", 1);31 setenv("UBUNTU_PLATFORM_API_BACKEND", "desktop_mirclient", 1);
38#endif32#endif
39 return new UbuntuClientIntegration;33 return new UbuntuClientIntegration(argc, argv);
40 } else {34 } else {
41 return 0;35 return 0;
42 }36 }
4337
=== modified file 'src/ubuntumirclient/plugin.h'
--- src/ubuntumirclient/plugin.h 2014-06-18 23:10:00 +0000
+++ src/ubuntumirclient/plugin.h 2016-09-22 15:36:58 +0000
@@ -1,5 +1,5 @@
1/*1/*
2 * Copyright (C) 2014 Canonical, Ltd.2 * Copyright (C) 2014-2016 Canonical, Ltd.
3 *3 *
4 * This program is free software: you can redistribute it and/or modify it under4 * This program is free software: you can redistribute it and/or modify it under
5 * the terms of the GNU Lesser General Public License version 3, as published by5 * the terms of the GNU Lesser General Public License version 3, as published by
@@ -25,8 +25,7 @@
25 Q_PLUGIN_METADATA(IID QPlatformIntegrationFactoryInterface_iid FILE "ubuntumirclient.json")25 Q_PLUGIN_METADATA(IID QPlatformIntegrationFactoryInterface_iid FILE "ubuntumirclient.json")
2626
27public:27public:
28 QStringList keys() const;28 QPlatformIntegration *create(const QString &system, const QStringList &paramList, int &argc, char **argv) override;
29 QPlatformIntegration* create(const QString&, const QStringList&);
30};29};
3130
32#endif // UBUNTU_CLIENT_PLUGIN_H31#endif // UBUNTU_CLIENT_PLUGIN_H
3332
=== modified file 'src/ubuntumirclient/screen.cpp'
--- src/ubuntumirclient/screen.cpp 2016-04-28 14:09:54 +0000
+++ src/ubuntumirclient/screen.cpp 2016-09-22 15:36:58 +0000
@@ -46,9 +46,8 @@
46 return "inverted portrait";46 return "inverted portrait";
47 case Qt::InvertedLandscapeOrientation:47 case Qt::InvertedLandscapeOrientation:
48 return "inverted landscape";48 return "inverted landscape";
49 default:
50 return "INVALID!";
51 }49 }
50 Q_UNREACHABLE();
52}51}
5352
54const QEvent::Type OrientationChangeEvent::mType =53const QEvent::Type OrientationChangeEvent::mType =
@@ -97,10 +96,6 @@
97 Qt::InvertedLandscapeOrientation : Qt::InvertedPortraitOrientation;96 Qt::InvertedLandscapeOrientation : Qt::InvertedPortraitOrientation;
98 break;97 break;
99 }98 }
100 default: {
101 qCDebug(ubuntumirclient, "UbuntuScreen::customEvent - Unknown orientation.");
102 return;
103 }
104 }99 }
105100
106 // Raise the event signal so that client apps know the orientation changed101 // Raise the event signal so that client apps know the orientation changed
107102
=== modified file 'src/ubuntumirclient/screenobserver.cpp'
--- src/ubuntumirclient/screenobserver.cpp 2016-04-28 14:09:54 +0000
+++ src/ubuntumirclient/screenobserver.cpp 2016-09-22 15:36:58 +0000
@@ -47,7 +47,7 @@
47 case mir_form_factor_tv: return "tv";47 case mir_form_factor_tv: return "tv";
48 case mir_form_factor_projector: return "projector";48 case mir_form_factor_projector: return "projector";
49 }49 }
50 return "";50 Q_UNREACHABLE();
51 }51 }
52} // anonymous namespace52} // anonymous namespace
5353
5454
=== modified file 'src/ubuntumirclient/ubuntumirclient.pro'
--- src/ubuntumirclient/ubuntumirclient.pro 2016-08-24 12:40:30 +0000
+++ src/ubuntumirclient/ubuntumirclient.pro 2016-09-22 15:36:58 +0000
@@ -18,6 +18,7 @@
18 backingstore.cpp \18 backingstore.cpp \
19 clipboard.cpp \19 clipboard.cpp \
20 cursor.cpp \20 cursor.cpp \
21 debugextension.cpp \
21 glcontext.cpp \22 glcontext.cpp \
22 input.cpp \23 input.cpp \
23 integration.cpp \24 integration.cpp \
@@ -34,6 +35,7 @@
34 backingstore.h \35 backingstore.h \
35 clipboard.h \36 clipboard.h \
36 cursor.h \37 cursor.h \
38 debugextension.h \
37 glcontext.h \39 glcontext.h \
38 input.h \40 input.h \
39 integration.h \41 integration.h \
4042
=== modified file 'src/ubuntumirclient/window.cpp'
--- src/ubuntumirclient/window.cpp 2016-08-31 01:51:15 +0000
+++ src/ubuntumirclient/window.cpp 2016-09-22 15:36:58 +0000
@@ -16,8 +16,11 @@
1616
17// Local17// Local
18#include "window.h"18#include "window.h"
19//#include "clipboard.h"
20#include "debugextension.h"
19#include "nativeinterface.h"21#include "nativeinterface.h"
20#include "input.h"22#include "input.h"
23#include "integration.h"
21#include "screen.h"24#include "screen.h"
22#include "logging.h"25#include "logging.h"
2326
@@ -81,9 +84,8 @@
81 return "Minimized";84 return "Minimized";
82 case Qt::WindowActive:85 case Qt::WindowActive:
83 return "Active";86 return "Active";
84 default:
85 return "!?";
86 }87 }
88 Q_UNREACHABLE();
87}89}
8890
89const char *mirSurfaceStateToStr(MirSurfaceState surfaceState)91const char *mirSurfaceStateToStr(MirSurfaceState surfaceState)
@@ -97,8 +99,9 @@
97 case mir_surface_state_fullscreen: return "fullscreen";99 case mir_surface_state_fullscreen: return "fullscreen";
98 case mir_surface_state_horizmaximized: return "horizmaximized";100 case mir_surface_state_horizmaximized: return "horizmaximized";
99 case mir_surface_state_hidden: return "hidden";101 case mir_surface_state_hidden: return "hidden";
100 default: return "!?";102 case mir_surface_states: Q_UNREACHABLE();
101 }103 }
104 Q_UNREACHABLE();
102}105}
103106
104const char *mirPixelFormatToStr(MirPixelFormat pixelFormat)107const char *mirPixelFormatToStr(MirPixelFormat pixelFormat)
@@ -114,15 +117,16 @@
114 case mir_pixel_format_rgb_565: return "RGB565";117 case mir_pixel_format_rgb_565: return "RGB565";
115 case mir_pixel_format_rgba_5551: return "RGBA5551";118 case mir_pixel_format_rgba_5551: return "RGBA5551";
116 case mir_pixel_format_rgba_4444: return "RGBA4444";119 case mir_pixel_format_rgba_4444: return "RGBA4444";
117 case mir_pixel_formats:120 case mir_pixel_formats: Q_UNREACHABLE();
118 default: return "???";
119 }121 }
122 Q_UNREACHABLE();
120}123}
121124
122MirSurfaceState qtWindowStateToMirSurfaceState(Qt::WindowState state)125MirSurfaceState qtWindowStateToMirSurfaceState(Qt::WindowState state)
123{126{
124 switch (state) {127 switch (state) {
125 case Qt::WindowNoState:128 case Qt::WindowNoState:
129 case Qt::WindowActive:
126 return mir_surface_state_restored;130 return mir_surface_state_restored;
127 case Qt::WindowFullScreen:131 case Qt::WindowFullScreen:
128 return mir_surface_state_fullscreen;132 return mir_surface_state_fullscreen;
@@ -130,10 +134,8 @@
130 return mir_surface_state_maximized;134 return mir_surface_state_maximized;
131 case Qt::WindowMinimized:135 case Qt::WindowMinimized:
132 return mir_surface_state_minimized;136 return mir_surface_state_minimized;
133 default:
134 qCWarning(ubuntumirclient, "Unexpected Qt::WindowState: %d", state);
135 return mir_surface_state_restored;
136 }137 }
138 return mir_surface_state_unknown; // should never be reached
137}139}
138140
139WId makeId()141WId makeId()
@@ -588,13 +590,14 @@
588}590}
589591
590UbuntuWindow::UbuntuWindow(QWindow *w, UbuntuInput *input, UbuntuNativeInterface *native,592UbuntuWindow::UbuntuWindow(QWindow *w, UbuntuInput *input, UbuntuNativeInterface *native,
591 EGLDisplay eglDisplay, MirConnection *mirConnection)593 EGLDisplay eglDisplay, MirConnection *mirConnection, UbuntuDebugExtension *debugExt)
592 : QObject(nullptr)594 : QObject(nullptr)
593 , QPlatformWindow(w)595 , QPlatformWindow(w)
594 , mId(makeId())596 , mId(makeId())
595 , mWindowState(w->windowState())597 , mWindowState(w->windowState())
596 , mWindowFlags(w->flags())598 , mWindowFlags(w->flags())
597 , mWindowVisible(false)599 , mWindowVisible(false)
600 , mDebugExtention(debugExt)
598 , mNativeInterface(native)601 , mNativeInterface(native)
599 , mSurface(new UbuntuSurface{this, eglDisplay, input, mirConnection})602 , mSurface(new UbuntuSurface{this, eglDisplay, input, mirConnection})
600 , mScale(1.0)603 , mScale(1.0)
@@ -786,6 +789,15 @@
786 return mSurface->format();789 return mSurface->format();
787}790}
788791
792QPoint UbuntuWindow::mapToGlobal(const QPoint &pos) const
793{
794 if (mDebugExtention) {
795 return mDebugExtention->mapSurfacePointToScreen(mSurface->mirSurface(), pos);
796 } else {
797 return pos;
798 }
799}
800
789void* UbuntuWindow::eglSurface() const801void* UbuntuWindow::eglSurface() const
790{802{
791 return mSurface->eglSurface();803 return mSurface->eglSurface();
792804
=== modified file 'src/ubuntumirclient/window.h'
--- src/ubuntumirclient/window.h 2016-08-24 12:40:30 +0000
+++ src/ubuntumirclient/window.h 2016-09-22 15:36:58 +0000
@@ -27,6 +27,7 @@
2727
28#include <EGL/egl.h>28#include <EGL/egl.h>
2929
30class UbuntuDebugExtension;
30class UbuntuNativeInterface;31class UbuntuNativeInterface;
31class UbuntuInput;32class UbuntuInput;
32class UbuntuScreen;33class UbuntuScreen;
@@ -39,7 +40,7 @@
39 Q_OBJECT40 Q_OBJECT
40public:41public:
41 UbuntuWindow(QWindow *w, UbuntuInput *input, UbuntuNativeInterface* native, EGLDisplay eglDisplay,42 UbuntuWindow(QWindow *w, UbuntuInput *input, UbuntuNativeInterface* native, EGLDisplay eglDisplay,
42 MirConnection *mirConnection);43 MirConnection *mirConnection, UbuntuDebugExtension *debugExt);
43 virtual ~UbuntuWindow();44 virtual ~UbuntuWindow();
4445
45 // QPlatformWindow methods.46 // QPlatformWindow methods.
@@ -52,6 +53,7 @@
52 void propagateSizeHints() override;53 void propagateSizeHints() override;
53 bool isExposed() const override;54 bool isExposed() const override;
5455
56 QPoint mapToGlobal(const QPoint &pos) const override;
55 QSurfaceFormat format() const override;57 QSurfaceFormat format() const override;
5658
57 // Additional Window properties exposed by NativeInterface59 // Additional Window properties exposed by NativeInterface
@@ -79,6 +81,7 @@
79 Qt::WindowFlags mWindowFlags;81 Qt::WindowFlags mWindowFlags;
80 bool mWindowVisible;82 bool mWindowVisible;
81 bool mWindowExposed;83 bool mWindowExposed;
84 UbuntuDebugExtension *mDebugExtention;
82 UbuntuNativeInterface *mNativeInterface;85 UbuntuNativeInterface *mNativeInterface;
83 std::unique_ptr<UbuntuSurface> mSurface;86 std::unique_ptr<UbuntuSurface> mSurface;
84 float mScale;87 float mScale;

Subscribers

People subscribed via source and target branches