Merge lp:~dandrader/qtubuntu/provideMirConnection into lp:qtubuntu

Proposed by Daniel d'Andrada on 2015-08-27
Status: Merged
Approved by: Gerry Boland on 2015-08-27
Approved revision: 275
Merged at revision: 279
Proposed branch: lp:~dandrader/qtubuntu/provideMirConnection
Merge into: lp:qtubuntu
Diff against target: 127 lines (+33/-3)
4 files modified
src/ubuntumirclient/integration.cpp (+7/-0)
src/ubuntumirclient/integration.h (+3/-2)
src/ubuntumirclient/nativeinterface.cpp (+19/-0)
src/ubuntumirclient/nativeinterface.h (+4/-1)
To merge this branch: bzr merge lp:~dandrader/qtubuntu/provideMirConnection
Reviewer Review Type Date Requested Status
Gerry Boland 2015-08-27 Approve on 2015-08-27
PS Jenkins bot continuous-integration Approve on 2015-08-27
Review via email: mp+269320@code.launchpad.net

Commit Message

Add QPlatformNativeInterface::nativeResourceForIntegration("mirConnection")

Allow Qt applications to access the underlying MirConnection.

Description of the Change

So that the settings application can use mir client API to set the display mode.

To post a comment you must log in.
PS Jenkins bot (ps-jenkins) wrote :
review: Approve (continuous-integration)
Gerry Boland (gerboland) :
review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'src/ubuntumirclient/integration.cpp'
2--- src/ubuntumirclient/integration.cpp 2015-06-23 22:19:27 +0000
3+++ src/ubuntumirclient/integration.cpp 2015-08-27 09:45:02 +0000
4@@ -79,6 +79,8 @@
5 "running, and the correct socket is being used and is accessible. The shell may have\n"
6 "rejected the incoming connection, so check its log file");
7
8+ mNativeInterface->setMirConnection(u_application_instance_get_mir_connection(mInstance));
9+
10 // Create default screen.
11 mScreen = new UbuntuScreen(u_application_instance_get_mir_connection(mInstance));
12 screenAdded(mScreen);
13@@ -241,3 +243,8 @@
14 {
15 return mClipboard.data();
16 }
17+
18+QPlatformNativeInterface* UbuntuClientIntegration::nativeInterface() const
19+{
20+ return mNativeInterface;
21+}
22
23=== modified file 'src/ubuntumirclient/integration.h'
24--- src/ubuntumirclient/integration.h 2015-06-24 17:21:21 +0000
25+++ src/ubuntumirclient/integration.h 2015-08-27 09:45:02 +0000
26@@ -28,6 +28,7 @@
27
28 class UbuntuClipboard;
29 class UbuntuInput;
30+class UbuntuNativeInterface;
31 class UbuntuScreen;
32
33 class UbuntuClientIntegration : public QPlatformIntegration {
34@@ -38,7 +39,7 @@
35 // QPlatformIntegration methods.
36 bool hasCapability(QPlatformIntegration::Capability cap) const override;
37 QAbstractEventDispatcher *createEventDispatcher() const override;
38- QPlatformNativeInterface* nativeInterface() const override { return mNativeInterface; }
39+ QPlatformNativeInterface* nativeInterface() const override;
40 QPlatformBackingStore* createPlatformBackingStore(QWindow* window) const override;
41 QPlatformOpenGLContext* createPlatformOpenGLContext(QOpenGLContext* context) const override;
42 QPlatformFontDatabase* fontDatabase() const override { return mFontDb; }
43@@ -58,7 +59,7 @@
44 void setupOptions();
45 void setupDescription();
46
47- QPlatformNativeInterface* mNativeInterface;
48+ UbuntuNativeInterface* mNativeInterface;
49 QPlatformFontDatabase* mFontDb;
50
51 UbuntuPlatformServices* mServices;
52
53=== modified file 'src/ubuntumirclient/nativeinterface.cpp'
54--- src/ubuntumirclient/nativeinterface.cpp 2014-06-18 23:10:00 +0000
55+++ src/ubuntumirclient/nativeinterface.cpp 2015-08-27 09:45:02 +0000
56@@ -34,6 +34,7 @@
57 insert("eglcontext", UbuntuNativeInterface::EglContext);
58 insert("nativeorientation", UbuntuNativeInterface::NativeOrientation);
59 insert("display", UbuntuNativeInterface::Display);
60+ insert("mirConnection", UbuntuNativeInterface::MirConnection);
61 }
62 };
63
64@@ -42,6 +43,7 @@
65 UbuntuNativeInterface::UbuntuNativeInterface()
66 : mGenericEventFilterType(QByteArrayLiteral("Event"))
67 , mNativeOrientation(nullptr)
68+ , mMirConnection(nullptr)
69 {
70 }
71
72@@ -51,6 +53,23 @@
73 mNativeOrientation = nullptr;
74 }
75
76+void* UbuntuNativeInterface::nativeResourceForIntegration(const QByteArray &resourceString)
77+{
78+ const QByteArray lowerCaseResource = resourceString.toLower();
79+
80+ if (!ubuntuResourceMap()->contains(lowerCaseResource)) {
81+ return nullptr;
82+ }
83+
84+ const ResourceType resourceType = ubuntuResourceMap()->value(lowerCaseResource);
85+
86+ if (resourceType == UbuntuNativeInterface::MirConnection) {
87+ return mMirConnection;
88+ } else {
89+ return nullptr;
90+ }
91+}
92+
93 void* UbuntuNativeInterface::nativeResourceForContext(
94 const QByteArray& resourceString, QOpenGLContext* context)
95 {
96
97=== modified file 'src/ubuntumirclient/nativeinterface.h'
98--- src/ubuntumirclient/nativeinterface.h 2014-06-18 23:10:00 +0000
99+++ src/ubuntumirclient/nativeinterface.h 2015-08-27 09:45:02 +0000
100@@ -21,12 +21,13 @@
101
102 class UbuntuNativeInterface : public QPlatformNativeInterface {
103 public:
104- enum ResourceType { EglDisplay, EglContext, NativeOrientation, Display };
105+ enum ResourceType { EglDisplay, EglContext, NativeOrientation, Display, MirConnection };
106
107 UbuntuNativeInterface();
108 ~UbuntuNativeInterface();
109
110 // QPlatformNativeInterface methods.
111+ void* nativeResourceForIntegration(const QByteArray &resource) override;
112 void* nativeResourceForContext(const QByteArray& resourceString,
113 QOpenGLContext* context) override;
114 void* nativeResourceForWindow(const QByteArray& resourceString,
115@@ -36,10 +37,12 @@
116
117 // New methods.
118 const QByteArray& genericEventFilterType() const { return mGenericEventFilterType; }
119+ void setMirConnection(void *mirConnection) { mMirConnection = mirConnection; }
120
121 private:
122 const QByteArray mGenericEventFilterType;
123 Qt::ScreenOrientation* mNativeOrientation;
124+ void *mMirConnection;
125 };
126
127 #endif // UBUNTU_NATIVE_INTERFACE_H

Subscribers

People subscribed via source and target branches