Merge lp:~alan-griffiths/miral/fix-initialization-order into lp:miral

Proposed by Alan Griffiths on 2017-02-27
Status: Merged
Approved by: Gerry Boland on 2017-02-27
Approved revision: 521
Merged at revision: 521
Proposed branch: lp:~alan-griffiths/miral/fix-initialization-order
Merge into: lp:miral
Diff against target: 36 lines (+10/-9)
1 file modified
miral/basic_window_manager.h (+10/-9)
To merge this branch: bzr merge lp:~alan-griffiths/miral/fix-initialization-order
Reviewer Review Type Date Requested Status
Andreas Pokorny (community) Approve on 2017-02-27
Gerry Boland 2017-02-27 Approve on 2017-02-27
Review via email: mp+318353@code.launchpad.net

Commit Message

[libmiral] Fix initialization order so that policies can allocate workspaces when constructed

Description of the Change

[libmiral] Fix initialization order so that policies can allocate workspaces when constructed

I only started seeing errors today, but this problem has clearly existed a while. Weird.

To post a comment you must log in.
Gerry Boland (gerboland) :
review: Approve
Andreas Pokorny (andreas-pokorny) wrote :

ok

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'miral/basic_window_manager.h'
2--- miral/basic_window_manager.h 2017-02-21 15:02:23 +0000
3+++ miral/basic_window_manager.h 2017-02-27 12:42:15 +0000
4@@ -165,6 +165,16 @@
5 mir::shell::FocusController* const focus_controller;
6 std::shared_ptr<mir::shell::DisplayLayout> const display_layout;
7 std::shared_ptr<mir::shell::PersistentSurfaceStore> const persistent_surface_store;
8+
9+ // Workspaces may die without any sync with the BWM mutex
10+ struct DeadWorkspaces
11+ {
12+ std::mutex mutable dead_workspaces_mutex;
13+ std::vector<std::weak_ptr<Workspace>> workspaces;
14+ };
15+
16+ std::shared_ptr<DeadWorkspaces> const dead_workspaces{std::make_shared<DeadWorkspaces>()};
17+
18 std::unique_ptr<WindowManagementPolicy> const policy;
19 WorkspacePolicy* const workspace_policy;
20
21@@ -185,15 +195,6 @@
22
23 wwbimap_t workspaces_to_windows;
24
25- // Workspaces may die without any sync with the BWM mutex
26- struct DeadWorkspaces
27- {
28- std::mutex mutable dead_workspaces_mutex;
29- std::vector<std::weak_ptr<Workspace>> workspaces;
30- };
31-
32- std::shared_ptr<DeadWorkspaces> const dead_workspaces{std::make_shared<DeadWorkspaces>()};
33-
34 struct Locker;
35
36 void update_event_timestamp(MirKeyboardEvent const* kev);

Subscribers

People subscribed via source and target branches