Merge lp:~gerboland/qtubuntu/rasterGLSurface into lp:qtubuntu

Proposed by Gerry Boland
Status: Superseded
Proposed branch: lp:~gerboland/qtubuntu/rasterGLSurface
Merge into: lp:qtubuntu
Diff against target: 396 lines (+103/-131)
9 files modified
src/ubuntumirclient/backingstore.cpp (+7/-3)
src/ubuntumirclient/backingstore.h (+1/-0)
src/ubuntumirclient/desktopwindow.cpp (+26/-0)
src/ubuntumirclient/desktopwindow.h (+29/-0)
src/ubuntumirclient/glcontext.cpp (+19/-26)
src/ubuntumirclient/integration.cpp (+19/-12)
src/ubuntumirclient/offscreensurface.cpp (+0/-47)
src/ubuntumirclient/offscreensurface.h (+0/-41)
src/ubuntumirclient/ubuntumirclient.pro (+2/-2)
To merge this branch: bzr merge lp:~gerboland/qtubuntu/rasterGLSurface
Reviewer Review Type Date Requested Status
Daniel d'Andrada (community) Needs Information
Unity8 CI Bot continuous-integration Approve
Review via email: mp+306915@code.launchpad.net

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

Commit message

Fix rendering of apps using QQuickWidget

Based on a branch by Daniel d'Andrada
- Advertise RasterGLSurface capability
- Implement proper offscreen rendering support using EGL pixel buffers.
- Don't create mir surfaces for Qt::Desktop QWindows. Proper implementation still pending
- Add BackingStore toImage method, fixes render of QQuick and Widget content

Description of the change

Tested working correctly on Desktop (Mesa), Nexus 4 & 7, Meizu MX4, Bq Aquaris 4.5.
M10 has rendering problems, still unresolved.

Good test is the "quickwidget" demo in qtdeclarative5-examples as it uses QQuickWidget, which combines QML and Widget content in a single window. You can also test QtCreator

To post a comment you must log in.
Revision history for this message
Unity8 CI Bot (unity8-ci-bot) wrote :

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

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

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

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

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

review: Approve (continuous-integration)
Revision history for this message
Daniel d'Andrada (dandrader) wrote :
review: Needs Information
295. By Gerry Boland

Merge trunk

296. By Gerry Boland

Fix rendering of apps using QQuickWidget

Based on a branch by Daniel d'Andrada
- Advertise RasterGLSurface capability
- Don't create mir surfaces for Qt::Desktop QWindows. Proper implementation still pending
- Add BackingStore toImage method, fixes render of QQuick and Widget content

Unmerged revisions

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'src/ubuntumirclient/backingstore.cpp'
2--- src/ubuntumirclient/backingstore.cpp 2016-04-20 16:10:06 +0000
3+++ src/ubuntumirclient/backingstore.cpp 2016-09-28 10:56:31 +0000
4@@ -35,9 +35,7 @@
5 window->setSurfaceType(QSurface::OpenGLSurface);
6 }
7
8-UbuntuBackingStore::~UbuntuBackingStore()
9-{
10-}
11+UbuntuBackingStore::~UbuntuBackingStore() = default;
12
13 void UbuntuBackingStore::flush(QWindow* window, const QRegion& region, const QPoint& offset)
14 {
15@@ -125,3 +123,9 @@
16 {
17 return &mImage;
18 }
19+
20+QImage UbuntuBackingStore::toImage() const
21+{
22+ // used by QPlatformBackingStore::composeAndFlush
23+ return mImage;
24+}
25
26=== modified file 'src/ubuntumirclient/backingstore.h'
27--- src/ubuntumirclient/backingstore.h 2014-11-11 14:34:12 +0000
28+++ src/ubuntumirclient/backingstore.h 2016-09-28 10:56:31 +0000
29@@ -34,6 +34,7 @@
30 void flush(QWindow* window, const QRegion& region, const QPoint& offset) override;
31 void resize(const QSize& size, const QRegion& staticContents) override;
32 QPaintDevice* paintDevice() override;
33+ QImage toImage() const override;
34
35 protected:
36 void updateTexture();
37
38=== added file 'src/ubuntumirclient/desktopwindow.cpp'
39--- src/ubuntumirclient/desktopwindow.cpp 1970-01-01 00:00:00 +0000
40+++ src/ubuntumirclient/desktopwindow.cpp 2016-09-28 10:56:31 +0000
41@@ -0,0 +1,26 @@
42+/*
43+ * Copyright (C) 2016 Canonical, Ltd.
44+ *
45+ * This program is free software: you can redistribute it and/or modify it under
46+ * the terms of the GNU Lesser General Public License version 3, as published by
47+ * the Free Software Foundation.
48+ *
49+ * This program is distributed in the hope that it will be useful, but WITHOUT
50+ * ANY WARRANTY; without even the implied warranties of MERCHANTABILITY,
51+ * SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
52+ * Lesser General Public License for more details.
53+ *
54+ * You should have received a copy of the GNU Lesser General Public License
55+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
56+ */
57+
58+#include "desktopwindow.h"
59+
60+// local
61+#include "logging.h"
62+
63+UbuntuDesktopWindow::UbuntuDesktopWindow(QWindow *window)
64+ : QPlatformWindow(window)
65+{
66+ qCDebug(ubuntumirclient, "UbuntuDesktopWindow(window=%p)", window);
67+}
68
69=== added file 'src/ubuntumirclient/desktopwindow.h'
70--- src/ubuntumirclient/desktopwindow.h 1970-01-01 00:00:00 +0000
71+++ src/ubuntumirclient/desktopwindow.h 2016-09-28 10:56:31 +0000
72@@ -0,0 +1,29 @@
73+/*
74+ * Copyright (C) 2016 Canonical, Ltd.
75+ *
76+ * This program is free software: you can redistribute it and/or modify it under
77+ * the terms of the GNU Lesser General Public License version 3, as published by
78+ * the Free Software Foundation.
79+ *
80+ * This program is distributed in the hope that it will be useful, but WITHOUT
81+ * ANY WARRANTY; without even the implied warranties of MERCHANTABILITY,
82+ * SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
83+ * Lesser General Public License for more details.
84+ *
85+ * You should have received a copy of the GNU Lesser General Public License
86+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
87+ */
88+
89+#ifndef UBUNTU_DESKTOP_WINDOW_H
90+#define UBUNTU_DESKTOP_WINDOW_H
91+
92+#include <qpa/qplatformwindow.h>
93+
94+// TODO Implement it. For now it's just an empty, dummy class.
95+class UbuntuDesktopWindow : public QPlatformWindow
96+{
97+public:
98+ UbuntuDesktopWindow(QWindow*);
99+};
100+
101+#endif // UBUNTU_DESKTOP_WINDOW_H
102
103=== modified file 'src/ubuntumirclient/glcontext.cpp'
104--- src/ubuntumirclient/glcontext.cpp 2016-08-09 23:00:32 +0000
105+++ src/ubuntumirclient/glcontext.cpp 2016-09-28 10:56:31 +0000
106@@ -16,11 +16,11 @@
107
108 #include "glcontext.h"
109 #include "logging.h"
110-#include "offscreensurface.h"
111 #include "window.h"
112
113 #include <QOpenGLFramebufferObject>
114 #include <QtPlatformSupport/private/qeglconvenience_p.h>
115+#include <QtPlatformSupport/private/qeglpbuffer_p.h>
116 #include <QtGui/private/qopenglcontext_p.h>
117
118 Q_LOGGING_CATEGORY(ubuntumirclientGraphics, "ubuntumirclient.graphics", QtWarningMsg)
119@@ -74,42 +74,35 @@
120
121 bool UbuntuOpenGLContext::makeCurrent(QPlatformSurface* surface)
122 {
123- Q_ASSERT(surface->surface()->surfaceType() == QSurface::OpenGLSurface);
124-
125- if (surface->surface()->surfaceClass() == QSurface::Offscreen) {
126- auto offscreen = static_cast<UbuntuOffscreenSurface *>(surface);
127- if (!offscreen->buffer()) {
128- auto buffer = new QOpenGLFramebufferObject(surface->surface()->size());
129- offscreen->setBuffer(buffer);
130- }
131- return offscreen->buffer()->bind();
132- } else {
133- const bool ret = QEGLPlatformContext::makeCurrent(surface);
134-
135- if (Q_LIKELY(ret)) {
136- QOpenGLContextPrivate *ctx_d = QOpenGLContextPrivate::get(context());
137- if (!ctx_d->workaround_brokenFBOReadBack && needsFBOReadBackWorkaround()) {
138- ctx_d->workaround_brokenFBOReadBack = true;
139- }
140- }
141-
142- return ret;
143+ const bool ret = QEGLPlatformContext::makeCurrent(surface);
144+
145+ if (Q_LIKELY(ret)) {
146+ QOpenGLContextPrivate *ctx_d = QOpenGLContextPrivate::get(context());
147+ if (!ctx_d->workaround_brokenFBOReadBack && needsFBOReadBackWorkaround()) {
148+ ctx_d->workaround_brokenFBOReadBack = true;
149+ }
150 }
151+ return ret;
152 }
153
154 // Following method used internally in the base class QEGLPlatformContext to access
155 // the egl surface of a QPlatformSurface/UbuntuWindow
156 EGLSurface UbuntuOpenGLContext::eglSurfaceForPlatformSurface(QPlatformSurface *surface)
157 {
158- auto ubuntuWindow = static_cast<UbuntuWindow *>(surface);
159- return ubuntuWindow->eglSurface();
160+ if (surface->surface()->surfaceClass() == QSurface::Window) {
161+ return static_cast<UbuntuWindow *>(surface)->eglSurface();
162+ } else {
163+ return static_cast<QEGLPbuffer *>(surface)->pbuffer();
164+ }
165 }
166
167 void UbuntuOpenGLContext::swapBuffers(QPlatformSurface *surface)
168 {
169 QEGLPlatformContext::swapBuffers(surface);
170
171- // notify window on swap completion
172- auto ubuntuWindow = static_cast<UbuntuWindow *>(surface);
173- ubuntuWindow->onSwapBuffersDone();
174+ if (surface->surface()->surfaceClass() == QSurface::Window) {
175+ // notify window on swap completion
176+ auto ubuntuWindow = static_cast<UbuntuWindow *>(surface);
177+ ubuntuWindow->onSwapBuffersDone();
178+ }
179 }
180
181=== modified file 'src/ubuntumirclient/integration.cpp'
182--- src/ubuntumirclient/integration.cpp 2016-08-24 12:40:30 +0000
183+++ src/ubuntumirclient/integration.cpp 2016-09-28 10:56:31 +0000
184@@ -18,11 +18,11 @@
185 #include "integration.h"
186 #include "backingstore.h"
187 #include "clipboard.h"
188+#include "desktopwindow.h"
189 #include "glcontext.h"
190 #include "input.h"
191 #include "logging.h"
192 #include "nativeinterface.h"
193-#include "offscreensurface.h"
194 #include "screen.h"
195 #include "theme.h"
196 #include "window.h"
197@@ -30,13 +30,16 @@
198 // Qt
199 #include <QFileInfo>
200 #include <QGuiApplication>
201+#include <private/qeglpbuffer_p.h>
202 #include <qpa/qplatformnativeinterface.h>
203 #include <qpa/qplatforminputcontextfactory_p.h>
204 #include <qpa/qplatforminputcontext.h>
205 #include <QtPlatformSupport/private/qeglconvenience_p.h>
206 #include <QtPlatformSupport/private/qgenericunixfontdatabase_p.h>
207 #include <QtPlatformSupport/private/qgenericunixeventdispatcher_p.h>
208+#include <QtPlatformSupport/private/qeglpbuffer_p.h>
209 #include <QOpenGLContext>
210+#include <QOffscreenSurface>
211
212 // platform-api
213 #include <ubuntu/application/lifecycle_delegate.h>
214@@ -210,21 +213,17 @@
215
216 QPlatformWindow* UbuntuClientIntegration::createPlatformWindow(QWindow* window) const
217 {
218- return new UbuntuWindow(window, mInput, mNativeInterface, mEglDisplay, mMirConnection);
219+ if (window->type() == Qt::Desktop) {
220+ // Desktop windows should not be backed up by a mir surface as they don't draw anything (nor should).
221+ return new UbuntuDesktopWindow(window);
222+ } else {
223+ return new UbuntuWindow(window, mInput, mNativeInterface, mEglDisplay, mMirConnection);
224+ }
225 }
226
227 bool UbuntuClientIntegration::hasCapability(QPlatformIntegration::Capability cap) const
228 {
229 switch (cap) {
230- case ThreadedPixmaps:
231- return true;
232-
233- case OpenGL:
234- return true;
235-
236- case ApplicationState:
237- return true;
238-
239 case ThreadedOpenGL:
240 if (qEnvironmentVariableIsEmpty("QTUBUNTU_NO_THREADED_OPENGL")) {
241 return true;
242@@ -232,8 +231,16 @@
243 qCDebug(ubuntumirclient, "disabled threaded OpenGL");
244 return false;
245 }
246+
247+ case ThreadedPixmaps:
248+ case OpenGL:
249+ case ApplicationState:
250 case MultipleWindows:
251 case NonFullScreenWindows:
252+#if QT_VERSION > QT_VERSION_CHECK(5, 5, 0)
253+ case SwitchableWidgetComposition:
254+#endif
255+ case RasterGLSurface: // needed for QQuickWidget
256 return true;
257 default:
258 return QPlatformIntegration::hasCapability(cap);
259@@ -319,7 +326,7 @@
260 QPlatformOffscreenSurface *UbuntuClientIntegration::createPlatformOffscreenSurface(
261 QOffscreenSurface *surface) const
262 {
263- return new UbuntuOffscreenSurface(surface);
264+ return new QEGLPbuffer(mEglDisplay, surface->requestedFormat(), surface);
265 }
266
267 void UbuntuClientIntegration::destroyScreen(UbuntuScreen *screen)
268
269=== removed file 'src/ubuntumirclient/offscreensurface.cpp'
270--- src/ubuntumirclient/offscreensurface.cpp 2016-01-04 17:18:51 +0000
271+++ src/ubuntumirclient/offscreensurface.cpp 1970-01-01 00:00:00 +0000
272@@ -1,47 +0,0 @@
273-/*
274- * Copyright (C) 2016 Canonical, Ltd.
275- *
276- * This program is free software: you can redistribute it and/or modify it under
277- * the terms of the GNU Lesser General Public License version 3, as published by
278- * the Free Software Foundation.
279- *
280- * This program is distributed in the hope that it will be useful, but WITHOUT
281- * ANY WARRANTY; without even the implied warranties of MERCHANTABILITY,
282- * SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
283- * Lesser General Public License for more details.
284- *
285- * You should have received a copy of the GNU Lesser General Public License
286- * along with this program. If not, see <http://www.gnu.org/licenses/>.
287- */
288-
289-#include "offscreensurface.h"
290-
291-#include <QOffscreenSurface>
292-#include <QOpenGLFramebufferObject>
293-
294-UbuntuOffscreenSurface::UbuntuOffscreenSurface(QOffscreenSurface *offscreenSurface)
295- : QPlatformOffscreenSurface(offscreenSurface)
296- , m_buffer(nullptr)
297- , m_format(offscreenSurface->requestedFormat())
298-{
299-}
300-
301-QSurfaceFormat UbuntuOffscreenSurface::format() const
302-{
303- return m_format;
304-}
305-
306-bool UbuntuOffscreenSurface::isValid() const
307-{
308- return m_buffer != nullptr && m_buffer->isValid();
309-}
310-
311-QOpenGLFramebufferObject* UbuntuOffscreenSurface::buffer() const
312-{
313- return m_buffer;
314-}
315-
316-void UbuntuOffscreenSurface::setBuffer(QOpenGLFramebufferObject *buffer)
317-{
318- m_buffer = buffer;
319-}
320
321=== removed file 'src/ubuntumirclient/offscreensurface.h'
322--- src/ubuntumirclient/offscreensurface.h 2016-01-04 17:18:51 +0000
323+++ src/ubuntumirclient/offscreensurface.h 1970-01-01 00:00:00 +0000
324@@ -1,41 +0,0 @@
325-/*
326- * Copyright (C) 2016 Canonical, Ltd.
327- *
328- * This program is free software: you can redistribute it and/or modify it under
329- * the terms of the GNU Lesser General Public License version 3, as published by
330- * the Free Software Foundation.
331- *
332- * This program is distributed in the hope that it will be useful, but WITHOUT
333- * ANY WARRANTY; without even the implied warranties of MERCHANTABILITY,
334- * SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
335- * Lesser General Public License for more details.
336- *
337- * You should have received a copy of the GNU Lesser General Public License
338- * along with this program. If not, see <http://www.gnu.org/licenses/>.
339- */
340-
341-#ifndef UBUNTU_OFFSCREEN_SURFACE_H
342-#define UBUNTU_OFFSCREEN_SURFACE_H
343-
344-#include <qpa/qplatformoffscreensurface.h>
345-#include <QSurfaceFormat>
346-
347-class QOpenGLFramebufferObject;
348-
349-class UbuntuOffscreenSurface : public QPlatformOffscreenSurface
350-{
351-public:
352- UbuntuOffscreenSurface(QOffscreenSurface *offscreenSurface);
353-
354- QSurfaceFormat format() const override;
355- bool isValid() const override;
356-
357- QOpenGLFramebufferObject* buffer() const;
358- void setBuffer(QOpenGLFramebufferObject *buffer);
359-
360-private:
361- QOpenGLFramebufferObject *m_buffer;
362- QSurfaceFormat m_format;
363-};
364-
365-#endif // UBUNTU_OFFSCREEN_SURFACE_H
366
367=== modified file 'src/ubuntumirclient/ubuntumirclient.pro'
368--- src/ubuntumirclient/ubuntumirclient.pro 2016-08-24 12:40:30 +0000
369+++ src/ubuntumirclient/ubuntumirclient.pro 2016-09-28 10:56:31 +0000
370@@ -18,11 +18,11 @@
371 backingstore.cpp \
372 clipboard.cpp \
373 cursor.cpp \
374+ desktopwindow.cpp \
375 glcontext.cpp \
376 input.cpp \
377 integration.cpp \
378 nativeinterface.cpp \
379- offscreensurface.cpp \
380 platformservices.cpp \
381 plugin.cpp \
382 screen.cpp \
383@@ -34,12 +34,12 @@
384 backingstore.h \
385 clipboard.h \
386 cursor.h \
387+ desktopwindow.h \
388 glcontext.h \
389 input.h \
390 integration.h \
391 logging.h \
392 nativeinterface.h \
393- offscreensurface.h \
394 orientationchangeevent_p.h \
395 platformservices.h \
396 plugin.h \

Subscribers

People subscribed via source and target branches