summaryrefslogtreecommitdiff
path: root/lockscreen
diff options
authorAndrea Azzarone <azzaronea@gmail.com>2014-03-28 10:14:55 +0000
committerCI bot <ps-jenkins@lists.canonical.com>2014-03-28 10:14:55 +0000
commitbec36e565e677c58d3530f15e8a81dda4224b620 (patch)
treecd6ef5caaa65d4ff5835fdd46297eb749f29a50c /lockscreen
parent55e995c3f47ff96b1b8e299b59070f9862f6e169 (diff)
parent9616465757b63ade1878826e5aac73852b5af7cb (diff)
Fixes the double lockscreen when switching users. Fixes: 1291088, 1298202
(bzr r3743)
Diffstat (limited to 'lockscreen')
-rw-r--r--lockscreen/LockScreenAbstractShield.h1
-rw-r--r--lockscreen/LockScreenController.cpp7
2 files changed, 7 insertions, 1 deletions
diff --git a/lockscreen/LockScreenAbstractShield.h b/lockscreen/LockScreenAbstractShield.h
index 584a66fe3..a9e993196 100644
--- a/lockscreen/LockScreenAbstractShield.h
+++ b/lockscreen/LockScreenAbstractShield.h
@@ -45,6 +45,7 @@ public:
nux::Property<bool> primary;
nux::Property<int> monitor;
+ using MockableBaseWindow::RemoveLayout;
virtual bool IsIndicatorOpen() const = 0;
sigc::signal<void, int, int> grab_motion;
diff --git a/lockscreen/LockScreenController.cpp b/lockscreen/LockScreenController.cpp
index 6904ee075..3385d0ef3 100644
--- a/lockscreen/LockScreenController.cpp
+++ b/lockscreen/LockScreenController.cpp
@@ -74,6 +74,11 @@ Controller::Controller(session::Manager::Ptr const& session_manager,
motion_connection_->disconnect();
uscreen_connection_->block();
session_manager_->unlocked.emit();
+
+ std::for_each(shields_.begin(), shields_.end(), [](nux::ObjectPtr<Shield> const& shield) {
+ shield->RemoveLayout();
+ });
+
shields_.clear();
if (Settings::Instance().lockscreen_type() == Type::UNITY)
@@ -231,7 +236,7 @@ void Controller::ShowShields()
void Controller::OnUnlockRequested()
{
- lockscreen_timeout_.release();
+ lockscreen_timeout_.reset();
if (!IsLocked())
return;