Merge lp:~macslow/qtubuntu/fix-1475678 into lp:qtubuntu

Proposed by Mirco Müller
Status: Work in progress
Proposed branch: lp:~macslow/qtubuntu/fix-1475678
Merge into: lp:qtubuntu
Diff against target: 87 lines (+32/-0)
3 files modified
src/ubuntumirclient/input.cpp (+12/-0)
src/ubuntumirclient/window.cpp (+17/-0)
src/ubuntumirclient/window.h (+3/-0)
To merge this branch: bzr merge lp:~macslow/qtubuntu/fix-1475678
Reviewer Review Type Date Requested Status
Ubuntu Phablet Team Pending
Review via email: mp+265459@code.launchpad.net

Commit message

Hook up listening to changes of mir_surface_attrib_visibility.

Description of the change

Hook up listening to changes of mir_surface_attrib_visibility.

To post a comment you must log in.
lp:~macslow/qtubuntu/fix-1475678 updated
271. By Mirco Müller

Implement isExposed() for UbuntuWindow and store visible state passed in via handleSurfaceVisibleChange().

272. By Mirco Müller

Use better-fitting term of "exposed" instead of "visible" in related calls... also matches qtmir's meaning of visibility better.

273. By Mirco Müller

Use temp. logging for UbuntuInput::customEvent().

Unmerged revisions

273. By Mirco Müller

Use temp. logging for UbuntuInput::customEvent().

272. By Mirco Müller

Use better-fitting term of "exposed" instead of "visible" in related calls... also matches qtmir's meaning of visibility better.

271. By Mirco Müller

Implement isExposed() for UbuntuWindow and store visible state passed in via handleSurfaceVisibleChange().

270. By Mirco Müller

Make a client-window set its visible-flag based on corresponding mir-surface-event coming in.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'src/ubuntumirclient/input.cpp'
--- src/ubuntumirclient/input.cpp 2015-06-17 13:46:49 +0000
+++ src/ubuntumirclient/input.cpp 2015-07-30 13:49:11 +0000
@@ -232,10 +232,22 @@
232 case mir_event_type_surface:232 case mir_event_type_surface:
233 {233 {
234 auto surfaceEvent = mir_event_get_surface_event(nativeEvent);234 auto surfaceEvent = mir_event_get_surface_event(nativeEvent);
235
236 if (mir_surface_event_get_attribute(surfaceEvent) == mir_surface_attrib_focus) {
237 LOG("UbuntuInput::customEvent() - mir_surface_attrib_focus");
238 }
239 if (mir_surface_event_get_attribute(surfaceEvent) == mir_surface_attrib_visibility) {
240 LOG("UbuntuInput::customEvent() - mir_surface_attrib_visibility");
241 }
242
235 if (mir_surface_event_get_attribute(surfaceEvent) == mir_surface_attrib_focus) {243 if (mir_surface_event_get_attribute(surfaceEvent) == mir_surface_attrib_focus) {
236 ubuntuEvent->window->handleSurfaceFocusChange(mir_surface_event_get_attribute_value(surfaceEvent) ==244 ubuntuEvent->window->handleSurfaceFocusChange(mir_surface_event_get_attribute_value(surfaceEvent) ==
237 mir_surface_focused);245 mir_surface_focused);
238 }246 }
247 if (mir_surface_event_get_attribute(surfaceEvent) == mir_surface_attrib_visibility) {
248 ubuntuEvent->window->handleSurfaceExposedChange(mir_surface_event_get_attribute_value(surfaceEvent) ==
249 mir_surface_visibility_exposed);
250 }
239 break;251 break;
240 }252 }
241 case mir_event_type_orientation:253 case mir_event_type_orientation:
242254
=== modified file 'src/ubuntumirclient/window.cpp'
--- src/ubuntumirclient/window.cpp 2015-06-24 17:21:21 +0000
+++ src/ubuntumirclient/window.cpp 2015-07-30 13:49:11 +0000
@@ -350,6 +350,18 @@
350 QWindowSystemInterface::handleWindowActivated(activatedWindow, Qt::ActiveWindowFocusReason);350 QWindowSystemInterface::handleWindowActivated(activatedWindow, Qt::ActiveWindowFocusReason);
351}351}
352352
353void UbuntuWindow::handleSurfaceExposedChange(bool exposed)
354{
355 LOG("UbuntuWindow::handleSurfaceExposedChange(exposed=%s)", exposed ? "true" : "false");
356
357 this->setVisible(exposed);
358 if (m_exposed != exposed) {
359 m_exposed = exposed;
360 QWindowSystemInterface::handleExposeEvent (window(), m_exposed ? geometry() : QRect());
361 }
362}
363
364
353void UbuntuWindow::setWindowState(Qt::WindowState state)365void UbuntuWindow::setWindowState(Qt::WindowState state)
354{366{
355 QMutexLocker(&d->mutex);367 QMutexLocker(&d->mutex);
@@ -397,6 +409,11 @@
397 }409 }
398}410}
399411
412bool UbuntuWindow::isExposed() const
413{
414 return m_exposed;
415}
416
400void* UbuntuWindow::eglSurface() const417void* UbuntuWindow::eglSurface() const
401{418{
402 return d->eglSurface;419 return d->eglSurface;
403420
=== modified file 'src/ubuntumirclient/window.h'
--- src/ubuntumirclient/window.h 2015-05-12 17:30:15 +0000
+++ src/ubuntumirclient/window.h 2015-07-30 13:49:11 +0000
@@ -40,11 +40,13 @@
40 void setGeometry(const QRect&) override;40 void setGeometry(const QRect&) override;
41 void setWindowState(Qt::WindowState state) override;41 void setWindowState(Qt::WindowState state) override;
42 void setVisible(bool visible) override;42 void setVisible(bool visible) override;
43 bool isExposed() const override;
4344
44 // New methods.45 // New methods.
45 void* eglSurface() const;46 void* eglSurface() const;
46 void handleSurfaceResize(int width, int height);47 void handleSurfaceResize(int width, int height);
47 void handleSurfaceFocusChange(bool focused);48 void handleSurfaceFocusChange(bool focused);
49 void handleSurfaceExposedChange(bool exposed);
48 void onBuffersSwapped_threadSafe(int newBufferWidth, int newBufferHeight);50 void onBuffersSwapped_threadSafe(int newBufferWidth, int newBufferHeight);
4951
50 UbuntuWindowPrivate* priv() { return d; }52 UbuntuWindowPrivate* priv() { return d; }
@@ -54,6 +56,7 @@
54 void moveResize(const QRect& rect);56 void moveResize(const QRect& rect);
5557
56 UbuntuWindowPrivate *d;58 UbuntuWindowPrivate *d;
59 bool m_exposed;
57};60};
5861
59#endif // UBUNTU_WINDOW_H62#endif // UBUNTU_WINDOW_H

Subscribers

People subscribed via source and target branches