Merge lp:~nick-dedekind/qtmir/lp1352977 into lp:qtmir
- lp1352977
- Merge into trunk
Status: | Merged |
---|---|
Approved by: | Gerry Boland |
Approved revision: | 230 |
Merged at revision: | 227 |
Proposed branch: | lp:~nick-dedekind/qtmir/lp1352977 |
Merge into: | lp:qtmir |
Diff against target: |
375 lines (+133/-29) 8 files modified
debian/changelog (+7/-0) src/modules/Unity/Application/application.cpp (+61/-1) src/modules/Unity/Application/application.h (+11/-0) src/modules/Unity/Application/application_manager.cpp (+3/-0) src/modules/Unity/Application/application_manager.h (+1/-0) src/modules/Unity/Application/mirsurfaceitem.cpp (+7/-2) src/modules/Unity/Application/mirsurfacemanager.cpp (+42/-25) src/modules/Unity/Application/mirsurfacemanager.h (+1/-1) |
To merge this branch: | bzr merge lp:~nick-dedekind/qtmir/lp1352977 |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Daniel d'Andrada (community) | Needs Fixing | ||
Gerry Boland (community) | code | Approve | |
Review via email: mp+229942@code.launchpad.net |
Commit message
Added application prompt surfaces to allow prompting application which have not yet created a surface
Description of the change
Added application prompt surfaces to allow prompting application which have not yet created a surface
* Are there any related MPs required for this MP to build/function as expected? Please list.
https:/
* Did you perform an exploratory manual test run of your code change and any related functionality?
Yes
* If you changed the packaging (debian), did you subscribe the ubuntu-unity team to this MP?
No
- 226. By Nick Dedekind
-
rebased
Gerry Boland (gerboland) wrote : | # |
Gerry Boland (gerboland) wrote : | # |
I can see that this approach works, and is reasonably elegant on the QML side for our phone/tablet purposes. But I will ask you to keep in mind the future desktop situation where, unlike phone/tablet, surfaces will have child surfaces, so an application will build up a tree of surfaces. When that situation happens, this separate list approach won't gel at all - I think we'll need to add prompt surfaces just as more nodes in that tree (with a special "I am a prompt session surface" property attached) and work from there.
In fact, I think if we did not have this separation between app surface and trust surfaces, then the problem you're addressing here would not exist.
But for now, this approach will do.
+ for(MirSurfaceItem* promptSurface : promptSurfaces) {
nit-pick, space after "for"
+ if (surface == m_surface || m_promptSurface
please move return to the next line
+ qDebug()
use the categorised logging please.
+void Application:
add log output here please, is significant enough IMO
Combining management of app surface and trust helper surfaces bit odd here. Think it would be clearer to have 2 methods.
+++ src/modules/
+ m_roleNames.
why expose the entire Application object? I don't think it's really necessary.
- case RoleFullscreen:
- return QVariant:
Eh? We need this.
void MirSurfaceItem:
{
- m_application = app;
+ m_application = app;
Bad whitespace change.
+ qDebug()
qCDebug please
-void MirSurfaceManag
+void MirSurfaceManag
No more const pointer? I don't see where we are changing it.
+ qCDebug(
rehost?
Checklist for the MR please. Please use the unity-mir one.
- 227. By Nick Dedekind
-
fixed changelog
- 228. By Nick Dedekind
-
fixed up some logging
Nick Dedekind (nick-dedekind) wrote : | # |
> I can see that this approach works, and is reasonably elegant on the QML side
> for our phone/tablet purposes. But I will ask you to keep in mind the future
> desktop situation where, unlike phone/tablet, surfaces will have child
> surfaces, so an application will build up a tree of surfaces. When that
> situation happens, this separate list approach won't gel at all - I think
> we'll need to add prompt surfaces just as more nodes in that tree (with a
> special "I am a prompt session surface" property attached) and work from
> there.
>
> In fact, I think if we did not have this separation between app surface and
> trust surfaces, then the problem you're addressing here would not exist.
Right, so this is a bit of a hotfix which we can live with for awhile. But it's definately what I wanted to end up with.
Firstly, I think that the trust surfaces should just be siblings of each other, not children with the first being a top level surface. So I've already started to look at putting them linearly (unfortunately it makes messing around with the previous surfaces position in the animations a bit more difficult, but that's unity8 problem.
I'm not sure about having the app surface in the same sector as the prompt surfaces, since it will make the management a bit shifty.
>
> But for now, this approach will do.
>
> + for(MirSurfaceItem* promptSurface : promptSurfaces) {
> nit-pick, space after "for"
>
> + if (surface == m_surface || m_promptSurface
> please move return to the next line
>
> + qDebug()
> use the categorised logging please.
>
> +void Application:
> add log output here please, is significant enough IMO
> Combining management of app surface and trust helper surfaces bit odd here.
> Think it would be clearer to have 2 methods.
Done.
>
>
> +++ src/modules/
> + m_roleNames.
> why expose the entire Application object? I don't think it's really necessary.
QML can't work out using out a QVariant(
>
> - case RoleFullscreen:
> - return QVariant:
> Eh? We need this.
doh. fixed.
>
> void MirSurfaceItem:
> {
> - m_application = app;
> + m_application = app;
> Bad whitespace change.
>
> + qDebug()
> qCDebug please
Done & Done
>
> -void MirSurfaceManag
> application)
> +void MirSurfaceManag
> application)
> No more const pointer? I don't see where we are changing it.
application-
>
> + qCDebug(
> remove: " << item->name();
> rehost?
Done.
>
> Checklist for the MR please. Please use the unity-mir one.
- 229. By Nick Dedekind
-
review comments
Nick Dedekind (nick-dedekind) wrote : | # |
> +void Application:
> add log output here please, is significant enough IMO
> Combining management of app surface and trust helper surfaces bit odd here.
> Think it would be clearer to have 2 methods.
>
Hm. both calling setSurface & addPromptSruface set the application. would have to do this:
if (m_application) {
m_application-
}
if (m_application) {
m_application-
}
Which i just find a bit weird. I though having removeSurface handling removal or all types of surfaces was lesser of evils.
- 230. By Nick Dedekind
-
more review comments
Gerry Boland (gerboland) wrote : | # |
Code looks ok, but not had chance to test
Gerry Boland (gerboland) wrote : | # |
Oh except Checklist please!!
Daniel d'Andrada (dandrader) wrote : | # |
109 + Q_PROPERTY(
You should update unity-api accordingly.
Nick Dedekind (nick-dedekind) wrote : | # |
> 109 + Q_PROPERTY(
> READ promptSurfaces NOTIFY promptSurfacesC
>
> You should update unity-api accordingly.
This can be added later. It's not a requirement for this MP and shouldn't be considered a blocker.
Daniel d'Andrada (dandrader) wrote : | # |
> > 109 + Q_PROPERTY(
> > READ promptSurfaces NOTIFY promptSurfacesC
> >
> > You should update unity-api accordingly.
>
> This can be added later. It's not a requirement for this MP and shouldn't be
> considered a blocker.
That's the right time to add it. Otherwise "later" can very well mean "never".
Preview Diff
1 | === modified file 'debian/changelog' |
2 | --- debian/changelog 2014-08-05 19:23:28 +0000 |
3 | +++ debian/changelog 2014-08-08 10:47:06 +0000 |
4 | @@ -1,3 +1,10 @@ |
5 | +qtmir (0.4.1-0ubuntu1) UNRELEASED; urgency=medium |
6 | + |
7 | + [ Nick Dedekind ] |
8 | + * Added prompt surfaces to application |
9 | + |
10 | + -- Nicholas Dedekind <nicholas.dedekind@gmail.com> Thu, 07 Aug 2014 14:56:41 +0100 |
11 | + |
12 | qtmir (0.4.0+14.10.20140805.1-0ubuntu1) utopic; urgency=low |
13 | |
14 | [ Nick Dedekind ] |
15 | |
16 | === modified file 'src/modules/Unity/Application/application.cpp' |
17 | --- src/modules/Unity/Application/application.cpp 2014-07-25 15:29:20 +0000 |
18 | +++ src/modules/Unity/Application/application.cpp 2014-08-08 10:47:06 +0000 |
19 | @@ -75,6 +75,11 @@ |
20 | |
21 | Application::~Application() |
22 | { |
23 | + QList<MirSurfaceItem*> promptSurfaces(m_promptSurfaces); |
24 | + for (MirSurfaceItem* promptSurface : promptSurfaces) { |
25 | + delete promptSurface; |
26 | + } |
27 | + |
28 | qCDebug(QTMIR_APPLICATIONS) << "Application::~Application"; |
29 | { |
30 | // In case we get a threaded screenshot callback once the application is deleted. |
31 | @@ -82,8 +87,8 @@ |
32 | m_screenShotGuard.clear(); |
33 | } |
34 | stopPromptSessions(); |
35 | + delete m_surface; |
36 | delete m_desktopData; |
37 | - delete m_surface; |
38 | } |
39 | |
40 | bool Application::isValid() const |
41 | @@ -480,4 +485,59 @@ |
42 | return false; |
43 | } |
44 | |
45 | +void Application::addPromptSurface(MirSurfaceItem* surface) |
46 | +{ |
47 | + qCDebug(QTMIR_APPLICATIONS) << "Application::addPromptSurface " << surface->name() << " to " << name(); |
48 | + if (surface == m_surface || m_promptSurfaces.contains(surface)) |
49 | + return; |
50 | + |
51 | + surface->setApplication(this); |
52 | + m_promptSurfaces.append(surface); |
53 | + Q_EMIT promptSurfacesChanged(); |
54 | +} |
55 | + |
56 | +void Application::removeSurface(MirSurfaceItem* surface) |
57 | +{ |
58 | + qCDebug(QTMIR_APPLICATIONS) << "Application::removeSurface " << surface->name() << " from " << name(); |
59 | + |
60 | + if (m_surface == surface) { |
61 | + setSurface(nullptr); |
62 | + } else if (m_promptSurfaces.contains(surface)) { |
63 | + m_promptSurfaces.removeAll(surface); |
64 | + surface->setApplication(nullptr); |
65 | + |
66 | + Q_EMIT promptSurfacesChanged(); |
67 | + } |
68 | +} |
69 | + |
70 | +void Application::foreachPromptSurface(std::function<void(MirSurfaceItem*)> f) const |
71 | +{ |
72 | + for (MirSurfaceItem* promptSurface : m_promptSurfaces) { |
73 | + f(promptSurface); |
74 | + } |
75 | +} |
76 | + |
77 | +QQmlListProperty<MirSurfaceItem> Application::promptSurfaces() |
78 | +{ |
79 | + return QQmlListProperty<MirSurfaceItem>(this, |
80 | + 0, |
81 | + Application::promptSurfaceCount, |
82 | + Application::promptSurfaceAt); |
83 | +} |
84 | + |
85 | +int Application::promptSurfaceCount(QQmlListProperty<MirSurfaceItem> *prop) |
86 | +{ |
87 | + Application *p = qobject_cast<Application*>(prop->object); |
88 | + return p->m_promptSurfaces.count(); |
89 | +} |
90 | + |
91 | +MirSurfaceItem* Application::promptSurfaceAt(QQmlListProperty<MirSurfaceItem> *prop, int index) |
92 | +{ |
93 | + Application *p = qobject_cast<Application*>(prop->object); |
94 | + |
95 | + if (index < 0 || index >= p->m_promptSurfaces.count()) |
96 | + return nullptr; |
97 | + return p->m_promptSurfaces[index]; |
98 | +} |
99 | + |
100 | } // namespace qtmir |
101 | |
102 | === modified file 'src/modules/Unity/Application/application.h' |
103 | --- src/modules/Unity/Application/application.h 2014-07-18 16:29:01 +0000 |
104 | +++ src/modules/Unity/Application/application.h 2014-08-08 10:47:06 +0000 |
105 | @@ -58,6 +58,7 @@ |
106 | Q_PROPERTY(Stage stage READ stage WRITE setStage NOTIFY stageChanged) |
107 | Q_PROPERTY(SupportedOrientations supportedOrientations READ supportedOrientations CONSTANT) |
108 | Q_PROPERTY(MirSurfaceItem* surface READ surface NOTIFY surfaceChanged) |
109 | + Q_PROPERTY(QQmlListProperty<qtmir::MirSurfaceItem> promptSurfaces READ promptSurfaces NOTIFY promptSurfacesChanged DESIGNABLE false) |
110 | |
111 | public: |
112 | Q_DECLARE_FLAGS(Stages, Stage) |
113 | @@ -112,6 +113,10 @@ |
114 | |
115 | bool containsProcess(pid_t pid) const; |
116 | |
117 | + void foreachPromptSurface(std::function<void(MirSurfaceItem*)> f) const; |
118 | + void addPromptSurface(MirSurfaceItem* surface); |
119 | + void removeSurface(MirSurfaceItem* surface); |
120 | + |
121 | public Q_SLOTS: |
122 | void suspend(); |
123 | void resume(); |
124 | @@ -121,6 +126,7 @@ |
125 | void fullscreenChanged(); |
126 | void stageChanged(Stage stage); |
127 | void surfaceChanged(); |
128 | + void promptSurfacesChanged(); |
129 | |
130 | void surfaceDestroyed(MirSurfaceItem *surface); |
131 | |
132 | @@ -144,6 +150,10 @@ |
133 | |
134 | void updateFullscreenProperty(); |
135 | |
136 | + QQmlListProperty<MirSurfaceItem> promptSurfaces(); |
137 | + static int promptSurfaceCount(QQmlListProperty<MirSurfaceItem> *prop); |
138 | + static MirSurfaceItem* promptSurfaceAt(QQmlListProperty<MirSurfaceItem> *prop, int index); |
139 | + |
140 | ApplicationManager* m_appMgr; |
141 | QSharedPointer<TaskController> m_taskController; |
142 | DesktopFileReader* m_desktopData; |
143 | @@ -162,6 +172,7 @@ |
144 | QTimer* m_suspendTimer; |
145 | SupportedOrientations m_supportedOrientations; |
146 | MirSurfaceItem *m_surface; |
147 | + QList<MirSurfaceItem*> m_promptSurfaces; |
148 | QList<std::shared_ptr<mir::scene::PromptSession>> m_promptSessions; |
149 | std::shared_ptr<mir::scene::PromptSessionManager> const m_promptSessionManager; |
150 | |
151 | |
152 | === modified file 'src/modules/Unity/Application/application_manager.cpp' |
153 | --- src/modules/Unity/Application/application_manager.cpp 2014-08-05 10:53:04 +0000 |
154 | +++ src/modules/Unity/Application/application_manager.cpp 2014-08-08 10:47:06 +0000 |
155 | @@ -213,6 +213,7 @@ |
156 | |
157 | m_roleNames.insert(RoleSurface, "surface"); |
158 | m_roleNames.insert(RoleFullscreen, "fullscreen"); |
159 | + m_roleNames.insert(RoleApplication, "application"); |
160 | } |
161 | |
162 | ApplicationManager::~ApplicationManager() |
163 | @@ -250,6 +251,8 @@ |
164 | return QVariant::fromValue(application->surface()); |
165 | case RoleFullscreen: |
166 | return QVariant::fromValue(application->fullscreen()); |
167 | + case RoleApplication: |
168 | + return QVariant::fromValue(application); |
169 | default: |
170 | return QVariant(); |
171 | } |
172 | |
173 | === modified file 'src/modules/Unity/Application/application_manager.h' |
174 | --- src/modules/Unity/Application/application_manager.h 2014-08-05 10:53:04 +0000 |
175 | +++ src/modules/Unity/Application/application_manager.h 2014-08-08 10:47:06 +0000 |
176 | @@ -68,6 +68,7 @@ |
177 | enum MoreRoles { |
178 | RoleSurface = RoleScreenshot+1, |
179 | RoleFullscreen, |
180 | + RoleApplication, |
181 | }; |
182 | |
183 | // Mapping enums to Ubuntu Platform API enums. |
184 | |
185 | === modified file 'src/modules/Unity/Application/mirsurfaceitem.cpp' |
186 | --- src/modules/Unity/Application/mirsurfaceitem.cpp 2014-07-29 15:01:34 +0000 |
187 | +++ src/modules/Unity/Application/mirsurfaceitem.cpp 2014-08-08 10:47:06 +0000 |
188 | @@ -312,6 +312,9 @@ |
189 | if (m_parentSurface) { |
190 | m_parentSurface->removeChildSurface(this); |
191 | } |
192 | + if (m_application) { |
193 | + m_application->removeSurface(this); |
194 | + } |
195 | |
196 | qCDebug(QTMIR_SURFACES) << "MirSurfaceItem::~MirSurfaceItem - this=" << this; |
197 | QMutexLocker locker(&m_mutex); |
198 | @@ -334,7 +337,7 @@ |
199 | } |
200 | |
201 | if (m_application) { |
202 | - m_application->setSurface(nullptr); |
203 | + m_application->removeSurface(this); |
204 | } |
205 | if (!parent()) { |
206 | deleteLater(); |
207 | @@ -706,7 +709,7 @@ |
208 | |
209 | void MirSurfaceItem::addChildSurface(MirSurfaceItem* surface) |
210 | { |
211 | - qDebug() << "MirSurfaceItem::addChildSurface " << surface->name() << " to " << name(); |
212 | + qCDebug(QTMIR_SURFACES) << "MirSurfaceItem::addChildSurface " << surface->name() << " to " << name(); |
213 | |
214 | m_children.append(surface); |
215 | Q_EMIT childSurfacesChanged(); |
216 | @@ -714,6 +717,8 @@ |
217 | |
218 | void MirSurfaceItem::removeChildSurface(MirSurfaceItem* surface) |
219 | { |
220 | + qCDebug(QTMIR_SURFACES) << "MirSurfaceItem::removeChildSurface " << surface->name() << " from " << name(); |
221 | + |
222 | if (m_children.contains(surface)) { |
223 | m_children.removeOne(surface); |
224 | |
225 | |
226 | === modified file 'src/modules/Unity/Application/mirsurfacemanager.cpp' |
227 | --- src/modules/Unity/Application/mirsurfacemanager.cpp 2014-08-01 11:46:30 +0000 |
228 | +++ src/modules/Unity/Application/mirsurfacemanager.cpp 2014-08-08 10:47:06 +0000 |
229 | @@ -196,8 +196,11 @@ |
230 | } |
231 | |
232 | void MirSurfaceManager::onPromptProviderAdded(const mir::scene::PromptSession *promptSession, |
233 | - const std::shared_ptr<mir::scene::Session> &) |
234 | + const std::shared_ptr<mir::scene::Session> &session) |
235 | { |
236 | + qCDebug(QTMIR_SURFACES) << "MirSurfaceManager::onPromptProviderAdded - promptSession=" << promptSession |
237 | + << "session=" << session.get(); |
238 | + |
239 | ApplicationManager* appMgr = static_cast<ApplicationManager*>(ApplicationManager::singleton()); |
240 | Application* application = appMgr->findApplicationWithPromptSession(promptSession); |
241 | |
242 | @@ -205,8 +208,11 @@ |
243 | } |
244 | |
245 | void MirSurfaceManager::onPromptProviderRemoved(const mir::scene::PromptSession *promptSession, |
246 | - const std::shared_ptr<mir::scene::Session> &) |
247 | + const std::shared_ptr<mir::scene::Session> &session) |
248 | { |
249 | + qCDebug(QTMIR_SURFACES) << "MirSurfaceManager::onPromptProviderRemoved - promptSession=" << promptSession |
250 | + << "session=" << session.get(); |
251 | + |
252 | ApplicationManager* appMgr = static_cast<ApplicationManager*>(ApplicationManager::singleton()); |
253 | Application* application = appMgr->findApplicationWithPromptSession(promptSession); |
254 | |
255 | @@ -252,12 +258,12 @@ |
256 | return m_surfaceItems[index]; |
257 | } |
258 | |
259 | -void getSurfaceDecendents(MirSurfaceItem* item, QList<MirSurfaceItem*>& surfaceChildren) |
260 | +void appendSurfaceDecendents(MirSurfaceItem* item, QList<MirSurfaceItem*>& surfaceChildren) |
261 | { |
262 | // recursive function. fetch all decendent surface items as a list. |
263 | item->foreachChildSurface([&surfaceChildren](MirSurfaceItem* child) { |
264 | surfaceChildren.append(child); |
265 | - getSurfaceDecendents(child, surfaceChildren); |
266 | + appendSurfaceDecendents(child, surfaceChildren); |
267 | }); |
268 | } |
269 | |
270 | @@ -271,29 +277,32 @@ |
271 | refreshPromptSessionSurfaces(application); |
272 | } |
273 | |
274 | -void MirSurfaceManager::refreshPromptSessionSurfaces(const Application* application) |
275 | +void MirSurfaceManager::refreshPromptSessionSurfaces(Application* application) |
276 | { |
277 | // Re-contruct the child surface heirachy from prompt session providers. |
278 | - // Each provider becomes the parent surface of the next surface, |
279 | - // with the application surface at the top of the heirachy. |
280 | + // First provider becomes prompt surface of Application, subsequent providers |
281 | + // becoming the children of the previous provider. |
282 | |
283 | - if (!application) |
284 | + if (!application) { |
285 | + qCDebug(QTMIR_SURFACES) << "MirSurfaceManager::refreshPromptSessionSurfaces - No Application for prompt session"; |
286 | return; |
287 | + } |
288 | qCDebug(QTMIR_SURFACES) << "MirSurfaceManager::refreshPromptSessionSurfaces - appId=" << application->name(); |
289 | |
290 | std::shared_ptr<ms::PromptSessionManager> manager = m_mirConfig->the_prompt_session_manager(); |
291 | |
292 | - MirSurfaceItem* parentItem = application->surface(); |
293 | - if (!parentItem) { |
294 | - return; |
295 | - } |
296 | - |
297 | - QList<MirSurfaceItem*> surfaceChildren; |
298 | - getSurfaceDecendents(parentItem, surfaceChildren); |
299 | + QList<MirSurfaceItem*> surfaces; |
300 | + application->foreachPromptSurface([&surfaces](MirSurfaceItem* promptSurface) { |
301 | + surfaces.append(promptSurface); |
302 | + appendSurfaceDecendents(promptSurface, surfaces); |
303 | + }); |
304 | + // stop adding providers to the child stack if we come across one which has not yet added a surface. |
305 | bool continueProviders = true; |
306 | |
307 | auto refreshFn = [&](const std::shared_ptr<mir::scene::PromptSession>& promptSession) { |
308 | |
309 | + MirSurfaceItem* parentSurface = nullptr; |
310 | + |
311 | manager->for_each_provider_in(promptSession, |
312 | [&](const std::shared_ptr<ms::Session> &session) { |
313 | QMutexLocker lock(&m_mutex); |
314 | @@ -302,31 +311,39 @@ |
315 | return; |
316 | |
317 | auto it = m_mirSessionToItemHash.find(session.get()); |
318 | - MirSurfaceItem *nextParent = nullptr; |
319 | + MirSurfaceItem *nextParentSurface = nullptr; |
320 | |
321 | while (it != m_mirSessionToItemHash.end() && it.key() == session.get()) { // all surfaces for session |
322 | MirSurfaceItem *surface = it.value(); |
323 | - surfaceChildren.removeOne(surface); |
324 | + surfaces.removeOne(surface); |
325 | |
326 | if (!surface->isFirstFrameDrawn()) { // only add if the surface is ready. |
327 | continueProviders = false; |
328 | break; |
329 | } |
330 | |
331 | - qCDebug(QTMIR_SURFACES) << "MirSurfaceManager::refreshPromptSessionSurfaces - " << surface->name() << "->setParent(" << parentItem->name() << ")"; |
332 | - surface->setParentSurface(parentItem); |
333 | - if (!nextParent) |
334 | - nextParent = surface; |
335 | + // FIXME - all providers should be "prompt surfaces" of application |
336 | + |
337 | + // first privder is a application "prompt surface" |
338 | + if (parentSurface == nullptr) { |
339 | + surface->setParentSurface(nullptr); |
340 | + application->addPromptSurface(surface); |
341 | + // susquent provider is child of previous provider |
342 | + } else { |
343 | + surface->setParentSurface(parentSurface); |
344 | + } |
345 | + if (!nextParentSurface) |
346 | + nextParentSurface = surface; |
347 | ++it; |
348 | } |
349 | // first valid session surface is parent of next provider session surface. |
350 | - if (nextParent) { |
351 | - parentItem = nextParent; |
352 | + if (nextParentSurface) { |
353 | + parentSurface = nextParentSurface; |
354 | } |
355 | }); |
356 | |
357 | - for (MirSurfaceItem* item : surfaceChildren) { |
358 | - qCDebug(QTMIR_SURFACES) << "MirSurfaceManager::rehostPromptSessionSurfaces - remove: " << item->name() << " from " << item->parentSurface()->name(); |
359 | + for (MirSurfaceItem* item : surfaces) { |
360 | + qCDebug(QTMIR_SURFACES) << "MirSurfaceManager::refreshPromptSessionSurfaces - remove: " << item->name(); |
361 | Q_EMIT item->removed(); |
362 | } |
363 | }; |
364 | |
365 | === modified file 'src/modules/Unity/Application/mirsurfacemanager.h' |
366 | --- src/modules/Unity/Application/mirsurfacemanager.h 2014-07-18 09:44:54 +0000 |
367 | +++ src/modules/Unity/Application/mirsurfacemanager.h 2014-08-08 10:47:06 +0000 |
368 | @@ -93,7 +93,7 @@ |
369 | ); |
370 | |
371 | void refreshPromptSessionSurfaces(const mir::scene::Session *session); |
372 | - void refreshPromptSessionSurfaces(const Application* application); |
373 | + void refreshPromptSessionSurfaces(Application* application); |
374 | |
375 | void removePromptSessionSurface(MirSurfaceItem* surface); |
376 |
No tests?