Merge lp:~alan-griffiths/qtmir/spike-using-WindowManager into lp:qtmir

Proposed by Alan Griffiths
Status: Superseded
Proposed branch: lp:~alan-griffiths/qtmir/spike-using-WindowManager
Merge into: lp:qtmir
Prerequisite: lp:~mir-team/qtmir/compatibility-with-mir-API-changes
Diff against target: 1248 lines (+288/-271)
23 files modified
src/common/debughelpers.cpp (+4/-4)
src/modules/Unity/Application/application_manager.cpp (+2/-2)
src/modules/Unity/Application/application_manager.h (+1/-1)
src/modules/Unity/Application/mirsurfaceitem.cpp (+25/-25)
src/modules/Unity/Application/mirsurfaceitem.h (+4/-3)
src/modules/Unity/Application/mirsurfacemanager.cpp (+8/-9)
src/modules/Unity/Application/mirsurfacemanager.h (+5/-5)
src/modules/Unity/Application/sessionmanager.cpp (+0/-1)
src/platforms/mirserver/CMakeLists.txt (+1/-1)
src/platforms/mirserver/mirserver.cpp (+32/-50)
src/platforms/mirserver/mirserver.h (+8/-7)
src/platforms/mirserver/mirserverintegration.cpp (+8/-4)
src/platforms/mirserver/mirwindowmanager.cpp (+69/-36)
src/platforms/mirserver/mirwindowmanager.h (+31/-14)
src/platforms/mirserver/nativeinterface.cpp (+7/-2)
src/platforms/mirserver/nativeinterface.h (+1/-1)
src/platforms/mirserver/qteventfeeder.cpp (+33/-33)
src/platforms/mirserver/surfaceobserver.h (+2/-1)
tests/mirserver/QtEventFeeder/qteventfeeder_test.cpp (+20/-52)
tests/modules/MirSurfaceItem/mirsurfaceitem_test.cpp (+17/-17)
tests/modules/common/mock_mir_session.h (+4/-0)
tests/modules/common/mock_surface.h (+5/-1)
tests/modules/common/qtmir_test.h (+1/-2)
To merge this branch: bzr merge lp:~alan-griffiths/qtmir/spike-using-WindowManager
Reviewer Review Type Date Requested Status
PS Jenkins bot (community) continuous-integration Needs Fixing
Mir development team Pending
Review via email: mp+254235@code.launchpad.net

This proposal has been superseded by a proposal from 2015-04-01.

Commit message

Switch from subclassing mir::shell::AbstractShell to implementing mir::shell::WindowManager

Description of the change

Switch from subclassing mir::shell::AbstractShell to implementing mir::shell::WindowManager

Note this is proof-of-concept branch and I've yet to rebuild the stack and test it out.

To post a comment you must log in.
Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :
review: Needs Fixing (continuous-integration)
276. By Daniel van Vugt

Migrate to MirEvent 2.1 API, coming in Mir 0.13

277. By Daniel van Vugt

Update mock headers so they can build again, following racarr's
cursor BufferStream changes.

278. By Daniel van Vugt

Merge lp:~mir-team/qtmir/devel-mir-next-update

279. By Alan Griffiths

Mir 0.13.0 fixes

280. By Alan Griffiths

Workaround API that uses references to opaque types

281. By Alan Griffiths

libmircommon-dev dependency should be versioned

282. By Alan Griffiths

merge lp:~alan-griffiths/qtmir/spike-using-WindowManager

283. By Alan Griffiths

Very basic version of MirWindowManager::modify_surface()

Unmerged revisions

283. By Alan Griffiths

Very basic version of MirWindowManager::modify_surface()

282. By Alan Griffiths

merge lp:~alan-griffiths/qtmir/spike-using-WindowManager

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'src/common/debughelpers.cpp'
--- src/common/debughelpers.cpp 2015-02-19 23:03:14 +0000
+++ src/common/debughelpers.cpp 2015-04-01 13:16:10 +0000
@@ -176,14 +176,14 @@
176 }176 }
177}177}
178178
179const char *mirTouchActionToStr(MirTouchInputEventTouchAction action)179const char *mirTouchActionToStr(MirTouchAction action)
180{180{
181 switch (action) {181 switch (action) {
182 case mir_touch_input_event_action_up:182 case mir_touch_action_up:
183 return "up";183 return "up";
184 case mir_touch_input_event_action_down:184 case mir_touch_action_down:
185 return "down";185 return "down";
186 case mir_touch_input_event_action_change:186 case mir_touch_action_change:
187 return "change";187 return "change";
188 default:188 default:
189 return "???";189 return "???";
190190
=== modified file 'src/modules/Unity/Application/application_manager.cpp'
--- src/modules/Unity/Application/application_manager.cpp 2015-04-01 13:16:09 +0000
+++ src/modules/Unity/Application/application_manager.cpp 2015-04-01 13:16:10 +0000
@@ -70,9 +70,9 @@
70 //TODO: should use mir::graphics::Display::configuration70 //TODO: should use mir::graphics::Display::configuration
71 mir::geometry::Rectangles view_area;71 mir::geometry::Rectangles view_area;
72 mirServer->the_display()->for_each_display_sync_group(72 mirServer->the_display()->for_each_display_sync_group(
73 [&view_area](mir::graphics::DisplaySyncGroup& group) {73 [&view_area](mir::graphics::DisplaySyncGroup &group) {
74 group.for_each_display_buffer(74 group.for_each_display_buffer(
75 [&view_area](const mir::graphics::DisplayBuffer & db) {75 [&view_area](const mir::graphics::DisplayBuffer &db) {
76 view_area.add(db.view_area());76 view_area.add(db.view_area());
77 });77 });
78 });78 });
7979
=== modified file 'src/modules/Unity/Application/application_manager.h'
--- src/modules/Unity/Application/application_manager.h 2015-01-09 11:23:34 +0000
+++ src/modules/Unity/Application/application_manager.h 2015-04-01 13:16:10 +0000
@@ -151,7 +151,7 @@
151151
152 Application* findApplicationWithPromptSession(const mir::scene::PromptSession* promptSession);152 Application* findApplicationWithPromptSession(const mir::scene::PromptSession* promptSession);
153153
154 QSharedPointer<MirServer> m_mirServer;154 const QSharedPointer<MirServer> m_mirServer;
155155
156 QList<Application*> m_applications;156 QList<Application*> m_applications;
157 Application* m_focusedApplication;157 Application* m_focusedApplication;
158158
=== modified file 'src/modules/Unity/Application/mirsurfaceitem.cpp'
--- src/modules/Unity/Application/mirsurfaceitem.cpp 2015-03-18 10:12:03 +0000
+++ src/modules/Unity/Application/mirsurfaceitem.cpp 2015-04-01 13:16:10 +0000
@@ -23,7 +23,6 @@
23#include "mirbuffersgtexture.h"23#include "mirbuffersgtexture.h"
24#include "session.h"24#include "session.h"
25#include "mirsurfaceitem.h"25#include "mirsurfaceitem.h"
26#include "mirshell.h"
27#include "logging.h"26#include "logging.h"
28#include "ubuntukeyboardinfo.h"27#include "ubuntukeyboardinfo.h"
2928
@@ -46,6 +45,7 @@
46// Mir45// Mir
47#include <mir/geometry/rectangle.h>46#include <mir/geometry/rectangle.h>
48#include <mir/events/event_builders.h>47#include <mir/events/event_builders.h>
48#include <mir/shell/shell.h>
49#include <mir_toolkit/event.h>49#include <mir_toolkit/event.h>
5050
51namespace mg = mir::graphics;51namespace mg = mir::graphics;
@@ -71,28 +71,28 @@
71 return m_mods;71 return m_mods;
72}72}
7373
74mir::EventUPtr makeMirEvent(QMouseEvent *qtEvent, MirPointerInputEventAction action)74mir::EventUPtr makeMirEvent(QMouseEvent *qtEvent, MirPointerAction action)
75{75{
76 auto timestamp = qtEvent->timestamp() * 1000000;76 auto timestamp = qtEvent->timestamp() * 1000000;
77 auto modifiers = getMirModifiersFromQt(qtEvent->modifiers());77 auto modifiers = getMirModifiersFromQt(qtEvent->modifiers());
7878
79 std::vector<MirPointerInputEventButton> buttons;79 std::vector<MirPointerButton> buttons;
80 if (qtEvent->buttons() & Qt::LeftButton)80 if (qtEvent->buttons() & Qt::LeftButton)
81 buttons.push_back(mir_pointer_input_button_primary);81 buttons.push_back(mir_pointer_button_primary);
82 if (qtEvent->buttons() & Qt::RightButton)82 if (qtEvent->buttons() & Qt::RightButton)
83 buttons.push_back(mir_pointer_input_button_secondary);83 buttons.push_back(mir_pointer_button_secondary);
84 if (qtEvent->buttons() & Qt::MidButton)84 if (qtEvent->buttons() & Qt::MidButton)
85 buttons.push_back(mir_pointer_input_button_tertiary);85 buttons.push_back(mir_pointer_button_tertiary);
8686
87 return mir::events::make_event(0 /*DeviceID */, timestamp, modifiers, action,87 return mir::events::make_event(0 /*DeviceID */, timestamp, modifiers, action,
88 buttons, qtEvent->x(), qtEvent->y(), 0, 0);88 buttons, qtEvent->x(), qtEvent->y(), 0, 0);
89}89}
9090
91mir::EventUPtr makeMirEvent(QHoverEvent *qtEvent, MirPointerInputEventAction action)91mir::EventUPtr makeMirEvent(QHoverEvent *qtEvent, MirPointerAction action)
92{92{
93 auto timestamp = qtEvent->timestamp() * 1000000;93 auto timestamp = qtEvent->timestamp() * 1000000;
9494
95 std::vector<MirPointerInputEventButton> buttons;95 std::vector<MirPointerButton> buttons;
9696
97 return mir::events::make_event(0 /*DeviceID */, timestamp, mir_input_event_modifier_none, action,97 return mir::events::make_event(0 /*DeviceID */, timestamp, mir_input_event_modifier_none, action,
98 buttons, qtEvent->posF().x(), qtEvent->posF().y(), 0, 0);98 buttons, qtEvent->posF().x(), qtEvent->posF().y(), 0, 0);
@@ -100,20 +100,20 @@
100100
101mir::EventUPtr makeMirEvent(QKeyEvent *qtEvent)101mir::EventUPtr makeMirEvent(QKeyEvent *qtEvent)
102{102{
103 MirKeyInputEventAction action = mir_key_input_event_action_down;103 MirKeyboardAction action = mir_keyboard_action_down;
104 switch (qtEvent->type())104 switch (qtEvent->type())
105 {105 {
106 case QEvent::KeyPress:106 case QEvent::KeyPress:
107 action = mir_key_input_event_action_down;107 action = mir_keyboard_action_down;
108 break;108 break;
109 case QEvent::KeyRelease:109 case QEvent::KeyRelease:
110 action = mir_key_input_event_action_up;110 action = mir_keyboard_action_up;
111 break;111 break;
112 default:112 default:
113 break;113 break;
114 }114 }
115 if (qtEvent->isAutoRepeat())115 if (qtEvent->isAutoRepeat())
116 action = mir_key_input_event_action_repeat;116 action = mir_keyboard_action_repeat;
117117
118 return mir::events::make_event(0 /* DeviceID */, qtEvent->timestamp() * 1000000,118 return mir::events::make_event(0 /* DeviceID */, qtEvent->timestamp() * 1000000,
119 action, qtEvent->nativeVirtualKey(),119 action, qtEvent->nativeVirtualKey(),
@@ -134,19 +134,19 @@
134 auto touchPoint = qtTouchPoints.at(i);134 auto touchPoint = qtTouchPoints.at(i);
135 auto id = touchPoint.id();135 auto id = touchPoint.id();
136136
137 MirTouchInputEventTouchAction action = mir_touch_input_event_action_change;137 MirTouchAction action = mir_touch_action_change;
138 if (touchPoint.state() == Qt::TouchPointReleased)138 if (touchPoint.state() == Qt::TouchPointReleased)
139 {139 {
140 action = mir_touch_input_event_action_up;140 action = mir_touch_action_up;
141 }141 }
142 if (touchPoint.state() == Qt::TouchPointPressed)142 if (touchPoint.state() == Qt::TouchPointPressed)
143 {143 {
144 action = mir_touch_input_event_action_down;144 action = mir_touch_action_down;
145 }145 }
146146
147 MirTouchInputEventTouchTooltype tooltype = mir_touch_input_tool_type_finger;147 MirTouchTooltype tooltype = mir_touch_tooltype_finger;
148 if (touchPoint.flags() & QTouchEvent::TouchPoint::Pen)148 if (touchPoint.flags() & QTouchEvent::TouchPoint::Pen)
149 tooltype = mir_touch_input_tool_type_stylus;149 tooltype = mir_touch_tooltype_stylus;
150150
151 mir::events::add_touch(*ev, id, action, tooltype,151 mir::events::add_touch(*ev, id, action, tooltype,
152 touchPoint.pos().x(), touchPoint.pos().y(),152 touchPoint.pos().x(), touchPoint.pos().y(),
@@ -187,7 +187,7 @@
187187
188MirSurfaceItem::MirSurfaceItem(std::shared_ptr<mir::scene::Surface> surface,188MirSurfaceItem::MirSurfaceItem(std::shared_ptr<mir::scene::Surface> surface,
189 SessionInterface* session,189 SessionInterface* session,
190 MirShell *shell,190 mir::shell::Shell *shell,
191 std::shared_ptr<SurfaceObserver> observer,191 std::shared_ptr<SurfaceObserver> observer,
192 QQuickItem *parent)192 QQuickItem *parent)
193 : QQuickItem(parent)193 : QQuickItem(parent)
@@ -465,14 +465,14 @@
465 if (type() == InputMethod) {465 if (type() == InputMethod) {
466 // FIXME: Hack to get the VKB use case working while we don't have the proper solution in place.466 // FIXME: Hack to get the VKB use case working while we don't have the proper solution in place.
467 if (isMouseInsideUbuntuKeyboard(event)) {467 if (isMouseInsideUbuntuKeyboard(event)) {
468 auto ev = makeMirEvent(event, mir_pointer_input_event_action_button_down);468 auto ev = makeMirEvent(event, mir_pointer_action_button_down);
469 m_surface->consume(*ev);469 m_surface->consume(*ev);
470 event->accept();470 event->accept();
471 } else {471 } else {
472 event->ignore();472 event->ignore();
473 }473 }
474 } else {474 } else {
475 auto ev = makeMirEvent(event, mir_pointer_input_event_action_button_down);475 auto ev = makeMirEvent(event, mir_pointer_action_button_down);
476 m_surface->consume(*ev);476 m_surface->consume(*ev);
477 event->accept();477 event->accept();
478 }478 }
@@ -480,14 +480,14 @@
480480
481void MirSurfaceItem::mouseMoveEvent(QMouseEvent *event)481void MirSurfaceItem::mouseMoveEvent(QMouseEvent *event)
482{482{
483 auto ev = makeMirEvent(event, mir_pointer_input_event_action_motion);483 auto ev = makeMirEvent(event, mir_pointer_action_motion);
484 m_surface->consume(*ev);484 m_surface->consume(*ev);
485 event->accept();485 event->accept();
486}486}
487487
488void MirSurfaceItem::mouseReleaseEvent(QMouseEvent *event)488void MirSurfaceItem::mouseReleaseEvent(QMouseEvent *event)
489{489{
490 auto ev = makeMirEvent(event, mir_pointer_input_event_action_button_up);490 auto ev = makeMirEvent(event, mir_pointer_action_button_up);
491 m_surface->consume(*ev);491 m_surface->consume(*ev);
492 event->accept();492 event->accept();
493}493}
@@ -499,21 +499,21 @@
499499
500void MirSurfaceItem::hoverEnterEvent(QHoverEvent *event)500void MirSurfaceItem::hoverEnterEvent(QHoverEvent *event)
501{501{
502 auto ev = makeMirEvent(event, mir_pointer_input_event_action_enter);502 auto ev = makeMirEvent(event, mir_pointer_action_enter);
503 m_surface->consume(*ev);503 m_surface->consume(*ev);
504 event->accept();504 event->accept();
505}505}
506506
507void MirSurfaceItem::hoverLeaveEvent(QHoverEvent *event)507void MirSurfaceItem::hoverLeaveEvent(QHoverEvent *event)
508{508{
509 auto ev = makeMirEvent(event, mir_pointer_input_event_action_leave);509 auto ev = makeMirEvent(event, mir_pointer_action_leave);
510 m_surface->consume(*ev);510 m_surface->consume(*ev);
511 event->accept();511 event->accept();
512}512}
513513
514void MirSurfaceItem::hoverMoveEvent(QHoverEvent *event)514void MirSurfaceItem::hoverMoveEvent(QHoverEvent *event)
515{515{
516 auto ev = makeMirEvent(event, mir_pointer_input_event_action_motion);516 auto ev = makeMirEvent(event, mir_pointer_action_motion);
517 m_surface->consume(*ev);517 m_surface->consume(*ev);
518 event->accept();518 event->accept();
519}519}
520520
=== modified file 'src/modules/Unity/Application/mirsurfaceitem.h'
--- src/modules/Unity/Application/mirsurfaceitem.h 2015-02-20 15:52:17 +0000
+++ src/modules/Unity/Application/mirsurfaceitem.h 2015-04-01 13:16:10 +0000
@@ -33,8 +33,9 @@
3333
34#include "session_interface.h"34#include "session_interface.h"
3535
36namespace mir { namespace shell { class Shell; } }
37
36class SurfaceObserver;38class SurfaceObserver;
37class MirShell;
3839
39namespace qtmir {40namespace qtmir {
4041
@@ -58,7 +59,7 @@
58public:59public:
59 explicit MirSurfaceItem(std::shared_ptr<mir::scene::Surface> surface,60 explicit MirSurfaceItem(std::shared_ptr<mir::scene::Surface> surface,
60 SessionInterface* session,61 SessionInterface* session,
61 MirShell *shell,62 mir::shell::Shell *shell,
62 std::shared_ptr<SurfaceObserver> observer,63 std::shared_ptr<SurfaceObserver> observer,
63 QQuickItem *parent = 0);64 QQuickItem *parent = 0);
64 ~MirSurfaceItem();65 ~MirSurfaceItem();
@@ -179,7 +180,7 @@
179180
180 std::shared_ptr<mir::scene::Surface> m_surface;181 std::shared_ptr<mir::scene::Surface> m_surface;
181 QPointer<SessionInterface> m_session;182 QPointer<SessionInterface> m_session;
182 MirShell *const m_shell;183 mir::shell::Shell *const m_shell;
183 bool m_firstFrameDrawn;184 bool m_firstFrameDrawn;
184 bool m_live;185 bool m_live;
185 Qt::ScreenOrientation m_orientation; //FIXME - have to save the state as Mir has no getter for it (bug:1357429)186 Qt::ScreenOrientation m_orientation; //FIXME - have to save the state as Mir has no getter for it (bug:1357429)
186187
=== modified file 'src/modules/Unity/Application/mirsurfacemanager.cpp'
--- src/modules/Unity/Application/mirsurfacemanager.cpp 2015-02-06 09:47:21 +0000
+++ src/modules/Unity/Application/mirsurfacemanager.cpp 2015-04-01 13:16:10 +0000
@@ -31,7 +31,7 @@
31#include "nativeinterface.h"31#include "nativeinterface.h"
32#include "mirserver.h"32#include "mirserver.h"
33#include "sessionlistener.h"33#include "sessionlistener.h"
34#include "mirshell.h"34#include "mirwindowmanager.h"
35#include "logging.h"35#include "logging.h"
3636
37Q_LOGGING_CATEGORY(QTMIR_SURFACES, "qtmir.surfaces")37Q_LOGGING_CATEGORY(QTMIR_SURFACES, "qtmir.surfaces")
@@ -51,9 +51,9 @@
51 manager, &MirSurfaceManager::onSessionDestroyingSurface);51 manager, &MirSurfaceManager::onSessionDestroyingSurface);
52}52}
5353
54void connectToShell(MirSurfaceManager *manager, MirShell *shell)54void connectToWindowManager(MirSurfaceManager *manager, MirWindowManager *windowManager)
55{55{
56 QObject::connect(shell, &MirShell::surfaceAttributeChanged,56 QObject::connect(windowManager, &MirWindowManager::surfaceAttributeChanged,
57 manager, &MirSurfaceManager::onSurfaceAttributeChanged);57 manager, &MirSurfaceManager::onSurfaceAttributeChanged);
58}58}
5959
@@ -70,23 +70,22 @@
70 }70 }
7171
72 SessionListener *sessionListener = static_cast<SessionListener*>(nativeInterface->nativeResourceForIntegration("SessionListener"));72 SessionListener *sessionListener = static_cast<SessionListener*>(nativeInterface->nativeResourceForIntegration("SessionListener"));
73 MirShell *shell = static_cast<MirShell*>(nativeInterface->nativeResourceForIntegration("Shell"));73 MirWindowManager *window_manager = static_cast<MirWindowManager*>(nativeInterface->nativeResourceForIntegration("WindowManager"));
74 mir::shell::Shell *const shell = static_cast<mir::shell::Shell*>(nativeInterface->nativeResourceForIntegration("mir::shell::Shell"));
7475
75 the_surface_manager = new MirSurfaceManager(nativeInterface->m_mirServer, shell, SessionManager::singleton());76 the_surface_manager = new MirSurfaceManager(shell, SessionManager::singleton());
7677
77 connectToSessionListener(the_surface_manager, sessionListener);78 connectToSessionListener(the_surface_manager, sessionListener);
78 connectToShell(the_surface_manager, shell);79 connectToWindowManager(the_surface_manager, window_manager);
79 }80 }
80 return the_surface_manager;81 return the_surface_manager;
81}82}
8283
83MirSurfaceManager::MirSurfaceManager(84MirSurfaceManager::MirSurfaceManager(
84 const QSharedPointer<MirServer>& mirServer,85 mir::shell::Shell *shell,
85 MirShell *shell,
86 SessionManager* sessionManager,86 SessionManager* sessionManager,
87 QObject *parent)87 QObject *parent)
88 : MirSurfaceItemModel(parent)88 : MirSurfaceItemModel(parent)
89 , m_mirServer(mirServer)
90 , m_shell(shell)89 , m_shell(shell)
91 , m_sessionManager(sessionManager)90 , m_sessionManager(sessionManager)
92{91{
9392
=== modified file 'src/modules/Unity/Application/mirsurfacemanager.h'
--- src/modules/Unity/Application/mirsurfacemanager.h 2015-02-06 09:47:21 +0000
+++ src/modules/Unity/Application/mirsurfacemanager.h 2015-04-01 13:16:10 +0000
@@ -37,10 +37,12 @@
37 class Session;37 class Session;
38 class PromptSession;38 class PromptSession;
39 }39 }
40 namespace shell {
41 class Shell;
42 }
40}43}
4144
42class MirServer;45class MirServer;
43class MirShell;
4446
45namespace qtmir {47namespace qtmir {
4648
@@ -54,8 +56,7 @@
5456
55public:57public:
56 explicit MirSurfaceManager(58 explicit MirSurfaceManager(
57 const QSharedPointer<MirServer>& mirServer,59 mir::shell::Shell *shell,
58 MirShell *shell,
59 SessionManager* sessionManager,60 SessionManager* sessionManager,
60 QObject *parent = 061 QObject *parent = 0
61 );62 );
@@ -81,8 +82,7 @@
81 QMutex m_mutex;82 QMutex m_mutex;
8283
83private:84private:
84 QSharedPointer<MirServer> m_mirServer;85 mir::shell::Shell *const m_shell;
85 MirShell *const m_shell;
86 SessionManager* m_sessionManager;86 SessionManager* m_sessionManager;
87 static MirSurfaceManager *the_surface_manager;87 static MirSurfaceManager *the_surface_manager;
88};88};
8989
=== modified file 'src/modules/Unity/Application/sessionmanager.cpp'
--- src/modules/Unity/Application/sessionmanager.cpp 2015-01-28 14:25:36 +0000
+++ src/modules/Unity/Application/sessionmanager.cpp 2015-04-01 13:16:10 +0000
@@ -26,7 +26,6 @@
26#include "nativeinterface.h"26#include "nativeinterface.h"
27#include "mirserver.h"27#include "mirserver.h"
28#include "sessionlistener.h"28#include "sessionlistener.h"
29#include "mirshell.h"
30#include "logging.h"29#include "logging.h"
31#include "promptsessionlistener.h"30#include "promptsessionlistener.h"
3231
3332
=== modified file 'src/platforms/mirserver/CMakeLists.txt'
--- src/platforms/mirserver/CMakeLists.txt 2015-04-01 13:16:09 +0000
+++ src/platforms/mirserver/CMakeLists.txt 2015-04-01 13:16:10 +0000
@@ -37,7 +37,7 @@
3737
38set(MIRSERVER_QPA_PLUGIN_SRC38set(MIRSERVER_QPA_PLUGIN_SRC
39 ../../common/debughelpers.cpp39 ../../common/debughelpers.cpp
40 mirshell.cpp40 mirwindowmanager.cpp
41 qteventfeeder.cpp41 qteventfeeder.cpp
42 plugin.cpp42 plugin.cpp
43 qmirserver.cpp43 qmirserver.cpp
4444
=== modified file 'src/platforms/mirserver/mirserver.cpp'
--- src/platforms/mirserver/mirserver.cpp 2015-02-09 16:28:40 +0000
+++ src/platforms/mirserver/mirserver.cpp 2015-04-01 13:16:10 +0000
@@ -1,5 +1,5 @@
1/*1/*
2 * Copyright (C) 2013-2014 Canonical, Ltd.2 * Copyright (C) 2013-2015 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
@@ -19,7 +19,7 @@
19#include "mirserver.h"19#include "mirserver.h"
2020
21// local21// local
22#include "mirshell.h"22#include "mirwindowmanager.h"
23#include "mirglconfig.h"23#include "mirglconfig.h"
24#include "mirserverstatuslistener.h"24#include "mirserverstatuslistener.h"
25#include "promptsessionlistener.h"25#include "promptsessionlistener.h"
@@ -51,19 +51,25 @@
51 set_command_line_handler(&ignore_unparsed_arguments);51 set_command_line_handler(&ignore_unparsed_arguments);
52 set_command_line(argc, argv);52 set_command_line(argc, argv);
5353
54 override_the_session_listener([]54 override_the_session_listener([this]
55 {55 {
56 return std::make_shared<SessionListener>();56 const auto result = std::make_shared<SessionListener>();
57 });57 m_sessionListener = result;
5858 return result;
59 override_the_prompt_session_listener([]59 });
60 {60
61 return std::make_shared<PromptSessionListener>();61 override_the_prompt_session_listener([this]
62 });62 {
6363 const auto result = std::make_shared<PromptSessionListener>();
64 override_the_session_authorizer([]64 m_promptSessionListener = result;
65 {65 return result;
66 return std::make_shared<SessionAuthorizer>();66 });
67
68 override_the_session_authorizer([this]
69 {
70 const auto result = std::make_shared<SessionAuthorizer>();
71 m_sessionAuthorizer = result;
72 return result;
67 });73 });
6874
69 override_the_compositor([]75 override_the_compositor([]
@@ -86,17 +92,11 @@
86 return std::make_shared<MirServerStatusListener>();92 return std::make_shared<MirServerStatusListener>();
87 });93 });
8894
89 override_the_shell([this]95 override_the_window_manager_builder([this](mir::shell::FocusController*)
90 {96 {
91 auto const shell = std::make_shared<MirShell>(97 const auto result = std::make_shared<MirWindowManager>(the_shell_display_layout());
92 the_input_targeter(),98 m_windowManager = result;
93 the_surface_coordinator(),99 return result;
94 the_session_coordinator(),
95 the_prompt_session_manager(),
96 the_shell_display_layout());
97
98 m_shell = shell;
99 return shell;
100 });100 });
101101
102 set_terminator([&](int)102 set_terminator([&](int)
@@ -113,43 +113,25 @@
113113
114/************************************ Shell side ************************************/114/************************************ Shell side ************************************/
115115
116//116// Note about the"weak_ptr<X>.lock().get();" constructs used in the functions below.
117// Note about the117// An empty weak_ptr<> means that Mir is not holding the pointer so we return nullptr.
118// if (sharedPtr.unique()) return 0;
119// constructs used in the functions below.
120// The rationale is that if when you do
121// the_session_authorizer()
122// get a pointer that is unique means that Mir is not
123// holding the pointer and thus when we return from the
124// sessionAuthorizer()
125// scope the unique pointer will be destroyed so we return 0
126//
127118
128SessionAuthorizer *MirServer::sessionAuthorizer()119SessionAuthorizer *MirServer::sessionAuthorizer()
129{120{
130 auto sharedPtr = the_session_authorizer();121 return m_sessionAuthorizer.lock().get();
131 if (sharedPtr.unique()) return 0;
132
133 return static_cast<SessionAuthorizer*>(sharedPtr.get());
134}122}
135123
136SessionListener *MirServer::sessionListener()124SessionListener *MirServer::sessionListener()
137{125{
138 auto sharedPtr = the_session_listener();126 return m_sessionListener.lock().get();
139 if (sharedPtr.unique()) return 0;
140
141 return static_cast<SessionListener*>(sharedPtr.get());
142}127}
143128
144PromptSessionListener *MirServer::promptSessionListener()129PromptSessionListener *MirServer::promptSessionListener()
145{130{
146 auto sharedPtr = the_prompt_session_listener();131 return m_promptSessionListener.lock().get();
147 if (sharedPtr.unique()) return 0;
148
149 return static_cast<PromptSessionListener*>(sharedPtr.get());
150}132}
151133
152MirShell *MirServer::shell()134MirWindowManager *MirServer::windowManager()
153{135{
154 return m_shell.lock().get();136 return m_windowManager.lock().get();
155}137}
156138
=== modified file 'src/platforms/mirserver/mirserver.h'
--- src/platforms/mirserver/mirserver.h 2015-04-01 13:16:09 +0000
+++ src/platforms/mirserver/mirserver.h 2015-04-01 13:16:10 +0000
@@ -23,7 +23,7 @@
23class QtEventFeeder;23class QtEventFeeder;
24class SessionListener;24class SessionListener;
25class SessionAuthorizer;25class SessionAuthorizer;
26class MirShell;26class MirWindowManager;
27class PromptSessionListener;27class PromptSessionListener;
2828
29// We use virtual inheritance of mir::Server to facilitate derived classes (e.g. testing)29// We use virtual inheritance of mir::Server to facilitate derived classes (e.g. testing)
@@ -34,7 +34,7 @@
3434
35 Q_PROPERTY(SessionAuthorizer* sessionAuthorizer READ sessionAuthorizer CONSTANT)35 Q_PROPERTY(SessionAuthorizer* sessionAuthorizer READ sessionAuthorizer CONSTANT)
36 Q_PROPERTY(SessionListener* sessionListener READ sessionListener CONSTANT)36 Q_PROPERTY(SessionListener* sessionListener READ sessionListener CONSTANT)
37 Q_PROPERTY(MirShell* shell READ shell CONSTANT)37 Q_PROPERTY(MirWindowManager* windowManager READ windowManager CONSTANT)
38 Q_PROPERTY(PromptSessionListener* promptSessionListener READ promptSessionListener CONSTANT)38 Q_PROPERTY(PromptSessionListener* promptSessionListener READ promptSessionListener CONSTANT)
3939
40public:40public:
@@ -47,21 +47,22 @@
47 using mir::Server::the_display;47 using mir::Server::the_display;
48 using mir::Server::the_gl_config;48 using mir::Server::the_gl_config;
49 using mir::Server::the_main_loop;49 using mir::Server::the_main_loop;
50 using mir::Server::the_prompt_session_listener;
51 using mir::Server::the_prompt_session_manager;50 using mir::Server::the_prompt_session_manager;
52 using mir::Server::the_session_authorizer;51 using mir::Server::the_shell;
53 using mir::Server::the_session_listener;
5452
55 /* qt specific */53 /* qt specific */
56 // getters54 // getters
57 SessionAuthorizer *sessionAuthorizer();55 SessionAuthorizer *sessionAuthorizer();
58 SessionListener *sessionListener();56 SessionListener *sessionListener();
59 PromptSessionListener *promptSessionListener();57 PromptSessionListener *promptSessionListener();
60 MirShell *shell();58 MirWindowManager *windowManager();
6159
62private:60private:
63 std::shared_ptr<QtEventFeeder> m_qtEventFeeder;61 std::shared_ptr<QtEventFeeder> m_qtEventFeeder;
64 std::weak_ptr<MirShell> m_shell;62 std::weak_ptr<SessionAuthorizer> m_sessionAuthorizer;
63 std::weak_ptr<SessionListener> m_sessionListener;
64 std::weak_ptr<PromptSessionListener> m_promptSessionListener;
65 std::weak_ptr<MirWindowManager> m_windowManager;
65};66};
6667
67#endif // MIRSERVER_H68#endif // MIRSERVER_H
6869
=== modified file 'src/platforms/mirserver/mirserverintegration.cpp'
--- src/platforms/mirserver/mirserverintegration.cpp 2015-04-01 13:16:09 +0000
+++ src/platforms/mirserver/mirserverintegration.cpp 2015-04-01 13:16:10 +0000
@@ -137,10 +137,14 @@
137137
138 mg::DisplayBuffer* first_buffer{nullptr};138 mg::DisplayBuffer* first_buffer{nullptr};
139 mg::DisplaySyncGroup* first_group{nullptr};139 mg::DisplaySyncGroup* first_group{nullptr};
140 m_mirServer->the_display()->for_each_display_sync_group([&](mg::DisplaySyncGroup& group) {140 m_mirServer->the_display()->for_each_display_sync_group([&](mg::DisplaySyncGroup &group) {
141 if (!first_group) first_group = &group;141 if (!first_group) {
142 group.for_each_display_buffer([&](mg::DisplayBuffer& buffer) {142 first_group = &group;
143 if (!first_buffer) first_buffer = &buffer;143 }
144 group.for_each_display_buffer([&](mg::DisplayBuffer &buffer) {
145 if (!first_buffer) {
146 first_buffer = &buffer;
147 }
144 });148 });
145 });149 });
146150
147151
=== renamed file 'src/platforms/mirserver/mirshell.cpp' => 'src/platforms/mirserver/mirwindowmanager.cpp'
--- src/platforms/mirserver/mirshell.cpp 2015-04-01 13:16:09 +0000
+++ src/platforms/mirserver/mirwindowmanager.cpp 2015-04-01 13:16:10 +0000
@@ -14,64 +14,97 @@
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */15 */
1616
17#include "mirshell.h"17#include "mirwindowmanager.h"
18#include "logging.h"18#include "logging.h"
19#include "tracepoints.h" // generated from tracepoints.tp19#include "tracepoints.h" // generated from tracepoints.tp
2020
21#include <mir/geometry/rectangle.h>21#include <mir/geometry/rectangle.h>
22#include <mir/scene/session.h>22#include <mir/scene/session.h>
23#include <mir/scene/surface.h>
23#include <mir/scene/surface_creation_parameters.h>24#include <mir/scene/surface_creation_parameters.h>
24#include <mir/shell/display_layout.h>25#include <mir/shell/display_layout.h>
25#include <mir/shell/null_window_manager.h>26#include <mir/shell/null_window_manager.h>
2627
27namespace ms = mir::scene;28namespace ms = mir::scene;
28using mir::shell::AbstractShell;
2929
30MirShell::MirShell(30MirWindowManager::MirWindowManager(const std::shared_ptr<mir::shell::DisplayLayout> &displayLayout) :
31 const std::shared_ptr<mir::shell::InputTargeter> &inputTargeter,31 m_displayLayout{displayLayout}
32 const std::shared_ptr<mir::scene::SurfaceCoordinator> &surfaceCoordinator,
33 const std::shared_ptr<mir::scene::SessionCoordinator> &sessionCoordinator,
34 const std::shared_ptr<mir::scene::PromptSessionManager> &promptSessionManager,
35 const std::shared_ptr<mir::shell::DisplayLayout> &displayLayout) :
36 AbstractShell(inputTargeter, surfaceCoordinator, sessionCoordinator, promptSessionManager,
37 [](mir::shell::FocusController*) { return std::make_shared<mir::shell::NullWindowManager>(); }),
38 m_displayLayout{displayLayout}
39{32{
40 qCDebug(QTMIR_MIR_MESSAGES) << "MirShell::MirShell";33 qCDebug(QTMIR_MIR_MESSAGES) << "MirWindowManager::MirWindowManager";
41}34}
4235
43mir::frontend::SurfaceId MirShell::create_surface(const std::shared_ptr<ms::Session> &session, const ms::SurfaceCreationParameters &requestParameters)36auto MirWindowManager::add_surface(
37 std::shared_ptr<mir::scene::Session> const& session,
38 mir::scene::SurfaceCreationParameters const& requestParameters,
39 std::function<mir::frontend::SurfaceId(std::shared_ptr<mir::scene::Session> const& session, mir::scene::SurfaceCreationParameters const& params)> const& build)
40-> mir::frontend::SurfaceId
44{41{
45 tracepoint(qtmirserver, surfacePlacementStart);42 tracepoint(qtmirserver, surfacePlacementStart);
4643
47 // TODO: Callback unity8 so that it can make a decision on that.44 // TODO: Callback unity8 so that it can make a decision on that.
48 // unity8 must bear in mind that the called function will be on a Mir thread though.45 // unity8 must bear in mind that the called function will be on a Mir thread though.
49 // The QPA shouldn't be deciding for itself on such things.46 // The QPA shouldn't be deciding for itself on such things.
5047
51 ms::SurfaceCreationParameters placedParameters = requestParameters;48 ms::SurfaceCreationParameters placedParameters = requestParameters;
5249
53 // Just make it fullscreen for now50 // Just make it fullscreen for now
54 mir::geometry::Rectangle rect{requestParameters.top_left, requestParameters.size};51 mir::geometry::Rectangle rect{requestParameters.top_left, requestParameters.size};
55 m_displayLayout->size_to_output(rect);52 m_displayLayout->size_to_output(rect);
56 placedParameters.size = rect.size;53 placedParameters.size = rect.size;
5754
58 qCDebug(QTMIR_MIR_MESSAGES) << "MirShell::create_surface(): size requested ("55 qCDebug(QTMIR_MIR_MESSAGES) << "MirWindowManager::add_surface(): size requested ("
59 << requestParameters.size.width.as_int() << "," << requestParameters.size.height.as_int() << ") and placed ("56 << requestParameters.size.width.as_int() << "," << requestParameters.size.height.as_int() << ") and placed ("
60 << placedParameters.size.width.as_int() << "," << placedParameters.size.height.as_int() << ")";57 << placedParameters.size.width.as_int() << "," << placedParameters.size.height.as_int() << ")";
6158
62 tracepoint(qtmirserver, surfacePlacementEnd);59 tracepoint(qtmirserver, surfacePlacementEnd);
6360
64 return AbstractShell::create_surface(session, placedParameters);61 return build(session, placedParameters);
65}62}
6663
67int MirShell::set_surface_attribute(64int MirWindowManager::set_surface_attribute(
68 const std::shared_ptr<mir::scene::Session> &session,65 std::shared_ptr<mir::scene::Session> const& /*session*/,
69 const std::shared_ptr<mir::scene::Surface> &surface,66 std::shared_ptr<mir::scene::Surface> const& surface,
70 MirSurfaceAttrib attrib,67 MirSurfaceAttrib attrib,
71 int value)68 int value)
72{69{
73 auto const result = AbstractShell::set_surface_attribute(session, surface, attrib, value);70 const auto result = surface->configure(attrib, value);
74 Q_EMIT surfaceAttributeChanged(surface.get(), attrib, result);71 Q_EMIT surfaceAttributeChanged(surface.get(), attrib, result);
75
76 return result;72 return result;
77}73}
74
75void MirWindowManager::add_session(std::shared_ptr<mir::scene::Session> const& /*session*/)
76{
77}
78
79void MirWindowManager::remove_session(std::shared_ptr<mir::scene::Session> const& /*session*/)
80{
81}
82
83void MirWindowManager::remove_surface(
84 std::shared_ptr<mir::scene::Session> const& /*session*/,
85 std::weak_ptr<mir::scene::Surface> const& /*surface*/)
86{
87}
88
89void MirWindowManager::add_display(mir::geometry::Rectangle const& /*area*/)
90{
91}
92
93void MirWindowManager::remove_display(mir::geometry::Rectangle const& /*area*/)
94{
95}
96
97bool MirWindowManager::handle_key_event(MirKeyboardEvent const* /*event*/)
98{
99 return false;
100}
101
102bool MirWindowManager::handle_touch_event(MirTouchEvent const* /*event*/)
103{
104 return false;
105}
106
107bool MirWindowManager::handle_pointer_event(MirPointerEvent const* /*event*/)
108{
109 return false;
110}
78111
=== renamed file 'src/platforms/mirserver/mirshell.h' => 'src/platforms/mirserver/mirwindowmanager.h'
--- src/platforms/mirserver/mirshell.h 2015-02-04 17:17:53 +0000
+++ src/platforms/mirserver/mirwindowmanager.h 2015-04-01 13:16:10 +0000
@@ -14,10 +14,10 @@
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */15 */
1616
17#ifndef QPAMIRSERVER_SHELL_H17#ifndef MIRWINDOWMANAGER_H
18#define QPAMIRSERVER_SHELL_H18#define MIRWINDOWMANAGER_H
1919
20#include <mir/shell/abstract_shell.h>20#include <mir/shell/window_manager.h>
21#include <QObject>21#include <QObject>
2222
23namespace mir {23namespace mir {
@@ -26,26 +26,43 @@
26 }26 }
27}27}
2828
29class MirShell : public QObject, public mir::shell::AbstractShell29class MirWindowManager : public QObject, public mir::shell::WindowManager
30{30{
31 Q_OBJECT31 Q_OBJECT
3232
33public:33public:
34 MirShell(34 explicit MirWindowManager(const std::shared_ptr<mir::shell::DisplayLayout> &displayLayout);
35 const std::shared_ptr<mir::shell::InputTargeter> &inputTargeter,
36 const std::shared_ptr<mir::scene::SurfaceCoordinator> &surfaceCoordinator,
37 const std::shared_ptr<mir::scene::SessionCoordinator> &sessionCoordinator,
38 const std::shared_ptr<mir::scene::PromptSessionManager> &promptSessionManager,
39 const std::shared_ptr<mir::shell::DisplayLayout> &displayLayout);
4035
41 virtual mir::frontend::SurfaceId create_surface(const std::shared_ptr<mir::scene::Session>& session, const mir::scene::SurfaceCreationParameters &params);36 auto add_surface(
37 std::shared_ptr<mir::scene::Session> const& session,
38 mir::scene::SurfaceCreationParameters const& params,
39 std::function<mir::frontend::SurfaceId(std::shared_ptr<mir::scene::Session> const& session, mir::scene::SurfaceCreationParameters const& params)> const& build)
40 -> mir::frontend::SurfaceId override;
4241
43 int set_surface_attribute(42 int set_surface_attribute(
44 const std::shared_ptr<mir::scene::Session> &session,43 std::shared_ptr<mir::scene::Session> const& session,
45 const std::shared_ptr<mir::scene::Surface> &surface,44 std::shared_ptr<mir::scene::Surface> const& surface,
46 MirSurfaceAttrib attrib,45 MirSurfaceAttrib attrib,
47 int value) override;46 int value) override;
4847
48 void add_session(std::shared_ptr<mir::scene::Session> const& session) override;
49
50 void remove_session(std::shared_ptr<mir::scene::Session> const& session) override;
51
52 void remove_surface(
53 std::shared_ptr<mir::scene::Session> const& session,
54 std::weak_ptr<mir::scene::Surface> const& surface) override;
55
56 void add_display(mir::geometry::Rectangle const& area) override;
57
58 void remove_display(mir::geometry::Rectangle const& area) override;
59
60 bool handle_key_event(MirKeyboardEvent const* event) override;
61
62 bool handle_touch_event(MirTouchEvent const* event) override;
63
64 bool handle_pointer_event(MirPointerEvent const* event) override;
65
49Q_SIGNALS:66Q_SIGNALS:
50 void surfaceAttributeChanged(mir::scene::Surface const*, const MirSurfaceAttrib, const int);67 void surfaceAttributeChanged(mir::scene::Surface const*, const MirSurfaceAttrib, const int);
5168
@@ -53,4 +70,4 @@
53 std::shared_ptr<mir::shell::DisplayLayout> const m_displayLayout;70 std::shared_ptr<mir::shell::DisplayLayout> const m_displayLayout;
54};71};
5572
56#endif /* QPAMIRSERVER_SHELL_H */73#endif /* MIRWINDOWMANAGER_H */
5774
=== modified file 'src/platforms/mirserver/nativeinterface.cpp'
--- src/platforms/mirserver/nativeinterface.cpp 2015-01-28 14:25:36 +0000
+++ src/platforms/mirserver/nativeinterface.cpp 2015-04-01 13:16:10 +0000
@@ -29,12 +29,17 @@
2929
30 if (resource == "SessionAuthorizer")30 if (resource == "SessionAuthorizer")
31 result = m_mirServer->sessionAuthorizer();31 result = m_mirServer->sessionAuthorizer();
32 else if (resource == "Shell")32 else if (resource == "WindowManager")
33 result = m_mirServer->shell();33 result = m_mirServer->windowManager();
34 else if (resource == "SessionListener")34 else if (resource == "SessionListener")
35 result = m_mirServer->sessionListener();35 result = m_mirServer->sessionListener();
36 else if (resource == "PromptSessionListener")36 else if (resource == "PromptSessionListener")
37 result = m_mirServer->promptSessionListener();37 result = m_mirServer->promptSessionListener();
38 else if (resource == "mir::shell::Shell")
39 {
40 const std::weak_ptr<mir::shell::Shell> shell{m_mirServer->the_shell()};
41 result = shell.lock().get();
42 }
3843
39 return result;44 return result;
40}45}
4146
=== modified file 'src/platforms/mirserver/nativeinterface.h'
--- src/platforms/mirserver/nativeinterface.h 2014-12-01 11:05:01 +0000
+++ src/platforms/mirserver/nativeinterface.h 2015-04-01 13:16:10 +0000
@@ -33,7 +33,7 @@
3333
34 virtual void *nativeResourceForIntegration(const QByteArray &resource);34 virtual void *nativeResourceForIntegration(const QByteArray &resource);
3535
36 QSharedPointer<MirServer> m_mirServer;36 const QSharedPointer<MirServer> m_mirServer;
37};37};
3838
39#endif // NATIVEINTEGRATION_H39#endif // NATIVEINTEGRATION_H
4040
=== modified file 'src/platforms/mirserver/qteventfeeder.cpp'
--- src/platforms/mirserver/qteventfeeder.cpp 2015-02-19 23:03:14 +0000
+++ src/platforms/mirserver/qteventfeeder.cpp 2015-04-01 13:16:10 +0000
@@ -258,14 +258,14 @@
258 return static_cast<Qt::KeyboardModifiers>(qtModifiers);258 return static_cast<Qt::KeyboardModifiers>(qtModifiers);
259}259}
260260
261Qt::MouseButton getQtMouseButtonsfromMirPointerEvent(MirPointerInputEvent const* pev)261Qt::MouseButton getQtMouseButtonsfromMirPointerEvent(MirPointerEvent const* pev)
262{262{
263 int buttons = Qt::NoButton;263 int buttons = Qt::NoButton;
264 if (mir_pointer_input_event_get_button_state(pev, mir_pointer_input_button_primary))264 if (mir_pointer_event_button_state(pev, mir_pointer_button_primary))
265 buttons |= Qt::LeftButton;265 buttons |= Qt::LeftButton;
266 if (mir_pointer_input_event_get_button_state(pev, mir_pointer_input_button_secondary))266 if (mir_pointer_event_button_state(pev, mir_pointer_button_secondary))
267 buttons |= Qt::RightButton;267 buttons |= Qt::RightButton;
268 if (mir_pointer_input_event_get_button_state(pev, mir_pointer_input_button_tertiary))268 if (mir_pointer_event_button_state(pev, mir_pointer_button_tertiary))
269 buttons |= Qt::MidButton;269 buttons |= Qt::MidButton;
270270
271 // TODO: Should mir back and forward buttons exist?271 // TODO: Should mir back and forward buttons exist?
@@ -281,12 +281,12 @@
281281
282 auto timestamp = mir_input_event_get_event_time(ev) / 1000000;282 auto timestamp = mir_input_event_get_event_time(ev) / 1000000;
283283
284 auto pev = mir_input_event_get_pointer_input_event(ev);284 auto pev = mir_input_event_get_pointer_event(ev);
285 auto modifiers = getQtModifiersFromMir(mir_pointer_input_event_get_modifiers(pev));285 auto modifiers = getQtModifiersFromMir(mir_pointer_event_modifiers(pev));
286 auto buttons = getQtMouseButtonsfromMirPointerEvent(pev);286 auto buttons = getQtMouseButtonsfromMirPointerEvent(pev);
287287
288 auto local_point = QPointF(mir_pointer_input_event_get_axis_value(pev, mir_pointer_input_axis_x),288 auto local_point = QPointF(mir_pointer_event_axis_value(pev, mir_pointer_axis_x),
289 mir_pointer_input_event_get_axis_value(pev, mir_pointer_input_axis_y));289 mir_pointer_event_axis_value(pev, mir_pointer_axis_y));
290290
291 mQtWindowSystem->handleMouseEvent(timestamp, local_point,291 mQtWindowSystem->handleMouseEvent(timestamp, local_point,
292 buttons, modifiers);292 buttons, modifiers);
@@ -299,24 +299,24 @@
299299
300 ulong timestamp = mir_input_event_get_event_time(event) / 1000000;300 ulong timestamp = mir_input_event_get_event_time(event) / 1000000;
301301
302 auto kev = mir_input_event_get_key_input_event(event);302 auto kev = mir_input_event_get_keyboard_event(event);
303 xkb_keysym_t xk_sym = mir_key_input_event_get_key_code(kev);303 xkb_keysym_t xk_sym = mir_keyboard_event_key_code(kev);
304304
305 // Key modifier and unicode index mapping.305 // Key modifier and unicode index mapping.
306 auto modifiers = getQtModifiersFromMir(mir_key_input_event_get_modifiers(kev));306 auto modifiers = getQtModifiersFromMir(mir_keyboard_event_modifiers(kev));
307307
308 // Key action308 // Key action
309 QEvent::Type keyType = QEvent::KeyRelease;309 QEvent::Type keyType = QEvent::KeyRelease;
310 bool is_auto_rep = false;310 bool is_auto_rep = false;
311311
312 switch (mir_key_input_event_get_action(kev))312 switch (mir_keyboard_event_action(kev))
313 {313 {
314 case mir_key_input_event_action_repeat:314 case mir_keyboard_action_repeat:
315 is_auto_rep = true; // fall-through315 is_auto_rep = true; // fall-through
316 case mir_key_input_event_action_down:316 case mir_keyboard_action_down:
317 keyType = QEvent::KeyPress;317 keyType = QEvent::KeyPress;
318 break;318 break;
319 case mir_key_input_event_action_up:319 case mir_keyboard_action_up:
320 keyType = QEvent::KeyRelease;320 keyType = QEvent::KeyRelease;
321 break;321 break;
322 default:322 default:
@@ -332,9 +332,9 @@
332 if (context) {332 if (context) {
333 // TODO: consider event.repeat_count333 // TODO: consider event.repeat_count
334 QKeyEvent qKeyEvent(keyType, keyCode, modifiers,334 QKeyEvent qKeyEvent(keyType, keyCode, modifiers,
335 mir_key_input_event_get_scan_code(kev),335 mir_keyboard_event_scan_code(kev),
336 mir_key_input_event_get_key_code(kev),336 mir_keyboard_event_key_code(kev),
337 mir_key_input_event_get_modifiers(kev),337 mir_keyboard_event_modifiers(kev),
338 text, is_auto_rep);338 text, is_auto_rep);
339 qKeyEvent.setTimestamp(timestamp);339 qKeyEvent.setTimestamp(timestamp);
340 if (context->filterEvent(&qKeyEvent)) {340 if (context->filterEvent(&qKeyEvent)) {
@@ -344,9 +344,9 @@
344 }344 }
345345
346 mQtWindowSystem->handleExtendedKeyEvent(timestamp, keyType, keyCode, modifiers,346 mQtWindowSystem->handleExtendedKeyEvent(timestamp, keyType, keyCode, modifiers,
347 mir_key_input_event_get_scan_code(kev),347 mir_keyboard_event_scan_code(kev),
348 mir_key_input_event_get_key_code(kev),348 mir_keyboard_event_key_code(kev),
349 mir_key_input_event_get_modifiers(kev), text, is_auto_rep);349 mir_keyboard_event_modifiers(kev), text, is_auto_rep);
350}350}
351351
352void QtEventFeeder::dispatchTouch(MirInputEvent const* event)352void QtEventFeeder::dispatchTouch(MirInputEvent const* event)
@@ -354,7 +354,7 @@
354 if (!mQtWindowSystem->hasTargetWindow())354 if (!mQtWindowSystem->hasTargetWindow())
355 return;355 return;
356356
357 auto tev = mir_input_event_get_touch_input_event(event);357 auto tev = mir_input_event_get_touch_event(event);
358358
359 // FIXME(loicm) Max pressure is device specific. That one is for the Samsung Galaxy Nexus. That359 // FIXME(loicm) Max pressure is device specific. That one is for the Samsung Galaxy Nexus. That
360 // needs to be fixed as soon as the compat input lib adds query support.360 // needs to be fixed as soon as the compat input lib adds query support.
@@ -364,29 +364,29 @@
364364
365 // TODO: Is it worth setting the Qt::TouchPointStationary ones? Currently they are left365 // TODO: Is it worth setting the Qt::TouchPointStationary ones? Currently they are left
366 // as Qt::TouchPointMoved366 // as Qt::TouchPointMoved
367 const int kPointerCount = mir_touch_input_event_get_touch_count(tev);367 const int kPointerCount = mir_touch_event_point_count(tev);
368 for (int i = 0; i < kPointerCount; ++i) {368 for (int i = 0; i < kPointerCount; ++i) {
369 QWindowSystemInterface::TouchPoint touchPoint;369 QWindowSystemInterface::TouchPoint touchPoint;
370370
371 const float kX = mir_touch_input_event_get_touch_axis_value(tev, i, mir_touch_input_axis_x);371 const float kX = mir_touch_event_axis_value(tev, i, mir_touch_axis_x);
372 const float kY = mir_touch_input_event_get_touch_axis_value(tev, i, mir_touch_input_axis_y);372 const float kY = mir_touch_event_axis_value(tev, i, mir_touch_axis_y);
373 const float kW = mir_touch_input_event_get_touch_axis_value(tev, i, mir_touch_input_axis_touch_major);373 const float kW = mir_touch_event_axis_value(tev, i, mir_touch_axis_touch_major);
374 const float kH = mir_touch_input_event_get_touch_axis_value(tev, i, mir_touch_input_axis_touch_minor);374 const float kH = mir_touch_event_axis_value(tev, i, mir_touch_axis_touch_minor);
375 const float kP = mir_touch_input_event_get_touch_axis_value(tev, i, mir_touch_input_axis_pressure);375 const float kP = mir_touch_event_axis_value(tev, i, mir_touch_axis_pressure);
376 touchPoint.id = mir_touch_input_event_get_touch_id(tev, i);376 touchPoint.id = mir_touch_event_id(tev, i);
377377
378 touchPoint.normalPosition = QPointF(kX / kWindowGeometry.width(), kY / kWindowGeometry.height());378 touchPoint.normalPosition = QPointF(kX / kWindowGeometry.width(), kY / kWindowGeometry.height());
379 touchPoint.area = QRectF(kX - (kW / 2.0), kY - (kH / 2.0), kW, kH);379 touchPoint.area = QRectF(kX - (kW / 2.0), kY - (kH / 2.0), kW, kH);
380 touchPoint.pressure = kP / kMaxPressure;380 touchPoint.pressure = kP / kMaxPressure;
381 switch (mir_touch_input_event_get_touch_action(tev, i))381 switch (mir_touch_event_action(tev, i))
382 {382 {
383 case mir_touch_input_event_action_up:383 case mir_touch_action_up:
384 touchPoint.state = Qt::TouchPointReleased;384 touchPoint.state = Qt::TouchPointReleased;
385 break;385 break;
386 case mir_touch_input_event_action_down:386 case mir_touch_action_down:
387 touchPoint.state = Qt::TouchPointPressed;387 touchPoint.state = Qt::TouchPointPressed;
388 break;388 break;
389 case mir_touch_input_event_action_change:389 case mir_touch_action_change:
390 touchPoint.state = Qt::TouchPointMoved;390 touchPoint.state = Qt::TouchPointMoved;
391 break;391 break;
392 default:392 default:
393393
=== modified file 'src/platforms/mirserver/surfaceobserver.h'
--- src/platforms/mirserver/surfaceobserver.h 2015-04-01 13:16:09 +0000
+++ src/platforms/mirserver/surfaceobserver.h 2015-04-01 13:16:10 +0000
@@ -42,7 +42,8 @@
42 void cursor_image_set_to(mir::graphics::CursorImage const&) override {}42 void cursor_image_set_to(mir::graphics::CursorImage const&) override {}
43 void orientation_set_to(MirOrientation) override {}43 void orientation_set_to(MirOrientation) override {}
44 void client_surface_close_requested() override {}44 void client_surface_close_requested() override {}
45 void keymap_changed(xkb_rule_names const&) override {}45 void keymap_changed(xkb_rule_names const &) override {}
46 void renamed(char const *) override {}
4647
47Q_SIGNALS:48Q_SIGNALS:
48 void framesPosted();49 void framesPosted();
4950
=== modified file 'tests/mirserver/QtEventFeeder/qteventfeeder_test.cpp'
--- tests/mirserver/QtEventFeeder/qteventfeeder_test.cpp 2015-02-19 23:03:14 +0000
+++ tests/mirserver/QtEventFeeder/qteventfeeder_test.cpp 2015-04-01 13:16:10 +0000
@@ -15,8 +15,6 @@
15 *15 *
16 */16 */
1717
18#define MIR_INCLUDE_DEPRECATED_EVENT_HEADER
19
20#include <gmock/gmock.h>18#include <gmock/gmock.h>
21#include <gtest/gtest.h>19#include <gtest/gtest.h>
2220
@@ -26,6 +24,8 @@
26#include <QGuiApplication>24#include <QGuiApplication>
27#include <QWindow>25#include <QWindow>
2826
27#include "mir/events/event_builders.h"
28
29#include "mock_qtwindowsystem.h"29#include "mock_qtwindowsystem.h"
3030
31using ::testing::_;31using ::testing::_;
@@ -44,6 +44,8 @@
44using ::testing::HasId;44using ::testing::HasId;
45using ::testing::StateIsMoved;45using ::testing::StateIsMoved;
4646
47namespace mev = mir::events;
48
47void PrintTo(const struct QWindowSystemInterface::TouchPoint& touchPoint, ::std::ostream* os) {49void PrintTo(const struct QWindowSystemInterface::TouchPoint& touchPoint, ::std::ostream* os) {
48 *os << "TouchPoint("50 *os << "TouchPoint("
49 << "id=" << touchPoint.id51 << "id=" << touchPoint.id
@@ -108,19 +110,10 @@
108 Contains(AllOf(HasId(0),110 Contains(AllOf(HasId(0),
109 IsPressed()))),_)).Times(1);111 IsPressed()))),_)).Times(1);
110112
111 MirEvent mirEvent;113 auto ev1 = mev::make_event(MirInputDeviceId(), 123*1000000, 0);
112 mirEvent.type = mir_event_type_motion;114 mev::add_touch(*ev1, /* touch ID */ 0, mir_touch_action_down, mir_touch_tooltype_unknown,
113 mirEvent.motion.pointer_count = 1;115 10, 10, 10, 1, 1, 10);
114 mirEvent.motion.pointer_coordinates[0].id = 0;116 qtEventFeeder->dispatch(*ev1);
115 mirEvent.motion.pointer_coordinates[0].x = 10;
116 mirEvent.motion.pointer_coordinates[0].y = 10;
117 mirEvent.motion.pointer_coordinates[0].touch_major = 1;
118 mirEvent.motion.pointer_coordinates[0].touch_minor = 1;
119 mirEvent.motion.pointer_coordinates[0].pressure = 10;
120 mirEvent.motion.action = mir_motion_action_down;
121 mirEvent.motion.event_time = 123 * 1000000;
122
123 qtEventFeeder->dispatch(mirEvent);
124117
125 ASSERT_TRUE(Mock::VerifyAndClearExpectations(mockWindowSystem));118 ASSERT_TRUE(Mock::VerifyAndClearExpectations(mockWindowSystem));
126119
@@ -131,18 +124,10 @@
131 Contains(AllOf(HasId(1),IsPressed()))124 Contains(AllOf(HasId(1),IsPressed()))
132 ),_)).Times(1);125 ),_)).Times(1);
133126
134 mirEvent.type = mir_event_type_motion;127 auto ev2 = mev::make_event(MirInputDeviceId(), 125*1000000, 0);
135 mirEvent.motion.pointer_count = 1;128 mev::add_touch(*ev2, 1 /* touch ID */, mir_touch_action_down, mir_touch_tooltype_unknown,
136 mirEvent.motion.pointer_coordinates[0].id = 1;129 10, 10, 10, 1, 1, 10);
137 mirEvent.motion.pointer_coordinates[0].x = 20;130 qtEventFeeder->dispatch(*ev2);
138 mirEvent.motion.pointer_coordinates[0].y = 20;
139 mirEvent.motion.pointer_coordinates[0].touch_major = 1;
140 mirEvent.motion.pointer_coordinates[0].touch_minor = 1;
141 mirEvent.motion.pointer_coordinates[0].pressure = 10;
142 mirEvent.motion.action = mir_motion_action_down;
143 mirEvent.motion.event_time = 125 * 1000000;
144
145 qtEventFeeder->dispatch(mirEvent);
146131
147 ASSERT_TRUE(Mock::VerifyAndClearExpectations(mockWindowSystem));132 ASSERT_TRUE(Mock::VerifyAndClearExpectations(mockWindowSystem));
148}133}
@@ -155,19 +140,10 @@
155 Contains(AllOf(HasId(0),140 Contains(AllOf(HasId(0),
156 IsPressed()))),_)).Times(1);141 IsPressed()))),_)).Times(1);
157142
158 MirEvent mirEvent;143 auto ev1 = mev::make_event(MirInputDeviceId(), 123*1000000, 0);
159 mirEvent.type = mir_event_type_motion;144 mev::add_touch(*ev1, /* touch ID */ 0, mir_touch_action_down, mir_touch_tooltype_unknown,
160 mirEvent.motion.pointer_count = 1;145 10, 10, 10, 1, 1, 10);
161 mirEvent.motion.pointer_coordinates[0].id = 0;146 qtEventFeeder->dispatch(*ev1);
162 mirEvent.motion.pointer_coordinates[0].x = 10;
163 mirEvent.motion.pointer_coordinates[0].y = 10;
164 mirEvent.motion.pointer_coordinates[0].touch_major = 1;
165 mirEvent.motion.pointer_coordinates[0].touch_minor = 1;
166 mirEvent.motion.pointer_coordinates[0].pressure = 10;
167 mirEvent.motion.action = mir_motion_action_down;
168 mirEvent.motion.event_time = 123 * 1000000;
169
170 qtEventFeeder->dispatch(mirEvent);
171147
172 ASSERT_TRUE(Mock::VerifyAndClearExpectations(mockWindowSystem));148 ASSERT_TRUE(Mock::VerifyAndClearExpectations(mockWindowSystem));
173149
@@ -177,18 +153,10 @@
177 Contains(AllOf(HasId(0), StateIsMoved()))153 Contains(AllOf(HasId(0), StateIsMoved()))
178 ),_)).Times(1);154 ),_)).Times(1);
179155
180 mirEvent.type = mir_event_type_motion;156 auto ev2 = mev::make_event(MirInputDeviceId(), 123*1000000, 0);
181 mirEvent.motion.pointer_count = 1;157 mev::add_touch(*ev2, /* touch ID */ 0, mir_touch_action_down, mir_touch_tooltype_unknown,
182 mirEvent.motion.pointer_coordinates[0].id = 0;158 10, 10, 10, 1, 1, 10);
183 mirEvent.motion.pointer_coordinates[0].x = 20;159 qtEventFeeder->dispatch(*ev2);
184 mirEvent.motion.pointer_coordinates[0].y = 20;
185 mirEvent.motion.pointer_coordinates[0].touch_major = 1;
186 mirEvent.motion.pointer_coordinates[0].touch_minor = 1;
187 mirEvent.motion.pointer_coordinates[0].pressure = 10;
188 mirEvent.motion.action = mir_motion_action_down;
189 mirEvent.motion.event_time = 125 * 1000000;
190
191 qtEventFeeder->dispatch(mirEvent);
192160
193 ASSERT_TRUE(Mock::VerifyAndClearExpectations(mockWindowSystem));161 ASSERT_TRUE(Mock::VerifyAndClearExpectations(mockWindowSystem));
194}162}
195163
=== modified file 'tests/modules/MirSurfaceItem/mirsurfaceitem_test.cpp'
--- tests/modules/MirSurfaceItem/mirsurfaceitem_test.cpp 2015-02-20 15:57:36 +0000
+++ tests/modules/MirSurfaceItem/mirsurfaceitem_test.cpp 2015-04-01 13:16:10 +0000
@@ -62,26 +62,26 @@
62 EXPECT_CALL(*mockSurface, type()).Times(AnyNumber()).WillRepeatedly(Return(mir_surface_type_normal));62 EXPECT_CALL(*mockSurface, type()).Times(AnyNumber()).WillRepeatedly(Return(mir_surface_type_normal));
63 EXPECT_CALL(*mockSession, setSurface(_)).Times(AnyNumber());63 EXPECT_CALL(*mockSession, setSurface(_)).Times(AnyNumber());
6464
65 auto getTouchEvent = [](MirEvent const& event) -> MirTouchInputEvent const*65 auto getTouchEvent = [](MirEvent const& event) -> MirTouchEvent const*
66 {66 {
67 if (mir_event_get_type(&event) != mir_event_type_input)67 if (mir_event_get_type(&event) != mir_event_type_input)
68 return nullptr;68 return nullptr;
69 auto const* input_event = mir_event_get_input_event(&event);69 auto const* input_event = mir_event_get_input_event(&event);
70 if (mir_input_event_get_type(input_event) != mir_input_event_type_touch)70 if (mir_input_event_get_type(input_event) != mir_input_event_type_touch)
71 return nullptr;71 return nullptr;
72 return mir_input_event_get_touch_input_event(input_event);72 return mir_input_event_get_touch_event(input_event);
73 };73 };
7474
75 auto eventMatches = [&](MirEvent const& event,75 auto eventMatches = [&](MirEvent const& event,
76 int touch_count,76 int touch_count,
77 MirTouchInputEventTouchAction action,77 MirTouchAction action,
78 MirTouchInputEventTouchId touch_id) ->void78 MirTouchId touch_id) ->void
79 {79 {
80 auto const* touch_event = getTouchEvent(event);80 auto const* touch_event = getTouchEvent(event);
81 ASSERT_NE(touch_event, nullptr);81 ASSERT_NE(touch_event, nullptr);
82 ASSERT_EQ(touch_count, mir_touch_input_event_get_touch_count(touch_event));82 ASSERT_EQ(touch_count, mir_touch_event_point_count(touch_event));
83 ASSERT_EQ(action, mir_touch_input_event_get_touch_action(touch_event,0));83 ASSERT_EQ(action, mir_touch_event_action(touch_event,0));
84 ASSERT_EQ(touch_id, mir_touch_input_event_get_touch_id(touch_event,0));84 ASSERT_EQ(touch_id, mir_touch_event_id(touch_event,0));
85 };85 };
8686
87 // The touch event sequence we expect mir::input::surface to receive from MirSurfaceItem.87 // The touch event sequence we expect mir::input::surface to receive from MirSurfaceItem.
@@ -89,16 +89,16 @@
89 // the sequence for touch 1.89 // the sequence for touch 1.
90 EXPECT_CALL(*mockSurface, consume(_))90 EXPECT_CALL(*mockSurface, consume(_))
91 .WillOnce(Invoke([&] (MirEvent const& mirEvent) {91 .WillOnce(Invoke([&] (MirEvent const& mirEvent) {
92 eventMatches(mirEvent, 1, mir_touch_input_event_action_down, 0);92 eventMatches(mirEvent, 1, mir_touch_action_down, 0);
93 }))93 }))
94 .WillOnce(Invoke([&] (MirEvent const& mirEvent) {94 .WillOnce(Invoke([&] (MirEvent const& mirEvent) {
95 eventMatches(mirEvent, 1, mir_touch_input_event_action_change, 0);95 eventMatches(mirEvent, 1, mir_touch_action_change, 0);
96 }))96 }))
97 .WillOnce(Invoke([&] (MirEvent const& mirEvent) {97 .WillOnce(Invoke([&] (MirEvent const& mirEvent) {
98 eventMatches(mirEvent, 1, mir_touch_input_event_action_up, 0);98 eventMatches(mirEvent, 1, mir_touch_action_up, 0);
99 }))99 }))
100 .WillOnce(Invoke([&] (MirEvent const& mirEvent) {100 .WillOnce(Invoke([&] (MirEvent const& mirEvent) {
101 eventMatches(mirEvent, 1, mir_touch_input_event_action_down, 1);101 eventMatches(mirEvent, 1, mir_touch_action_down, 1);
102 }));102 }));
103103
104104
105105
=== modified file 'tests/modules/common/mock_mir_session.h'
--- tests/modules/common/mock_mir_session.h 2015-01-28 14:25:36 +0000
+++ tests/modules/common/mock_mir_session.h 2015-04-01 13:16:10 +0000
@@ -66,6 +66,10 @@
66 void suspend_prompt_session() override {};66 void suspend_prompt_session() override {};
67 void resume_prompt_session() override {};67 void resume_prompt_session() override {};
6868
69 MOCK_CONST_METHOD1(get_buffer_stream, std::shared_ptr<frontend::BufferStream>(frontend::BufferStreamId));
70 MOCK_METHOD1(destroy_buffer_stream, void(frontend::BufferStreamId));
71 MOCK_METHOD1(create_buffer_stream, frontend::BufferStreamId(graphics::BufferProperties const&));
72
69private:73private:
70 std::string m_sessionName;74 std::string m_sessionName;
71 pid_t m_sessionId;75 pid_t m_sessionId;
7276
=== modified file 'tests/modules/common/mock_surface.h'
--- tests/modules/common/mock_surface.h 2015-04-01 13:16:09 +0000
+++ tests/modules/common/mock_surface.h 2015-04-01 13:16:10 +0000
@@ -66,7 +66,7 @@
66 MOCK_METHOD1(set_reception_mode, void(input::InputReceptionMode mode));66 MOCK_METHOD1(set_reception_mode, void(input::InputReceptionMode mode));
67 MOCK_METHOD0(request_client_surface_close, void());67 MOCK_METHOD0(request_client_surface_close, void());
68 MOCK_CONST_METHOD1(buffers_ready_for_compositor, int(void const*));68 MOCK_CONST_METHOD1(buffers_ready_for_compositor, int(void const*));
69 void set_keymap(xkb_rule_names const&) override {}69 void set_keymap(xkb_rule_names const &) override {}
7070
71 // from mir::input::surface71 // from mir::input::surface
72 MOCK_CONST_METHOD1(input_area_contains, bool(geometry::Point const& point));72 MOCK_CONST_METHOD1(input_area_contains, bool(geometry::Point const& point));
@@ -80,9 +80,13 @@
80 MOCK_CONST_METHOD0(client_input_fd, int());80 MOCK_CONST_METHOD0(client_input_fd, int());
81 MOCK_METHOD2(configure, int(MirSurfaceAttrib attrib, int value));81 MOCK_METHOD2(configure, int(MirSurfaceAttrib attrib, int value));
82 MOCK_CONST_METHOD1(query, int(MirSurfaceAttrib attrib));82 MOCK_CONST_METHOD1(query, int(MirSurfaceAttrib attrib));
83 bool modify(const Modifications &) override { return false; }
84
8385
84 // from mir::scene::SurfaceBufferAccess86 // from mir::scene::SurfaceBufferAccess
85 MOCK_METHOD1(with_most_recent_buffer_do, void(std::function<void(graphics::Buffer&)> const& exec));87 MOCK_METHOD1(with_most_recent_buffer_do, void(std::function<void(graphics::Buffer&)> const& exec));
88
89 MOCK_METHOD2(set_cursor_stream, void(std::shared_ptr<frontend::BufferStream> const&, geometry::Displacement const&));
86};90};
8791
88} // namespace scene92} // namespace scene
8993
=== modified file 'tests/modules/common/qtmir_test.h'
--- tests/modules/common/qtmir_test.h 2015-02-06 09:47:21 +0000
+++ tests/modules/common/qtmir_test.h 2015-04-01 13:16:10 +0000
@@ -109,7 +109,6 @@
109 &applicationManager,109 &applicationManager,
110 }110 }
111 , surfaceManager{111 , surfaceManager{
112 mirServer,
113 mirShell,112 mirShell,
114 &sessionManager113 &sessionManager
115 }114 }
@@ -150,7 +149,7 @@
150 testing::NiceMock<testing::MockDesktopFileReaderFactory> desktopFileReaderFactory;149 testing::NiceMock<testing::MockDesktopFileReaderFactory> desktopFileReaderFactory;
151 testing::NiceMock<testing::MockSharedWakelock> sharedWakelock;150 testing::NiceMock<testing::MockSharedWakelock> sharedWakelock;
152 QSharedPointer<FakeMirServer> mirServer;151 QSharedPointer<FakeMirServer> mirServer;
153 MirShell *mirShell{nullptr};152 mir::shell::Shell *mirShell{nullptr};
154 QSharedPointer<TaskController> taskController;153 QSharedPointer<TaskController> taskController;
155 ApplicationManager applicationManager;154 ApplicationManager applicationManager;
156 SessionManager sessionManager;155 SessionManager sessionManager;

Subscribers

People subscribed via source and target branches