Merge lp:~3v1n0/unity/input-monitor-lockscreen-blank-window into lp:unity

Proposed by Marco Trevisan (Treviño)
Status: Merged
Approved by: Andrea Azzarone
Approved revision: no longer in the source branch.
Merged at revision: 4206
Proposed branch: lp:~3v1n0/unity/input-monitor-lockscreen-blank-window
Merge into: lp:unity
Prerequisite: lp:~3v1n0/unity/input-monitor-menus-scrubbing-triangolation
Diff against target: 138 lines (+31/-29)
3 files modified
lockscreen/LockScreenController.cpp (+27/-28)
lockscreen/LockScreenController.h (+1/-0)
tests/test_lockscreen_controller.cpp (+3/-1)
To merge this branch: bzr merge lp:~3v1n0/unity/input-monitor-lockscreen-blank-window
Reviewer Review Type Date Requested Status
Andrea Azzarone (community) Approve
Review via email: mp+304388@code.launchpad.net

Commit message

LockScreenController: use InputMonitor to get all the events and hide the Blank Window

When the blank window is shown now we use the XI2 events to figure out if we can hide it
in this way it will be possible to show the screensaver when something is grabbing the
screen and we don't need to grab the screen anymore to get the events.

To post a comment you must log in.
Revision history for this message
Andrea Azzarone (azzar1) wrote :

There are several conflicts when merging this branch with unity trunk. Can you please fix them?

review: Needs Fixing
Revision history for this message
Andrea Azzarone (azzar1) wrote :

+1

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'lockscreen/LockScreenController.cpp'
--- lockscreen/LockScreenController.cpp 2016-11-04 00:51:52 +0000
+++ lockscreen/LockScreenController.cpp 2016-11-11 15:56:00 +0000
@@ -28,6 +28,7 @@
28#include "LockScreenShield.h"28#include "LockScreenShield.h"
29#include "LockScreenSettings.h"29#include "LockScreenSettings.h"
30#include "unity-shared/AnimationUtils.h"30#include "unity-shared/AnimationUtils.h"
31#include "unity-shared/InputMonitor.h"
31#include "unity-shared/UnitySettings.h"32#include "unity-shared/UnitySettings.h"
32#include "unity-shared/UScreen.h"33#include "unity-shared/UScreen.h"
33#include "unity-shared/WindowManager.h"34#include "unity-shared/WindowManager.h"
@@ -318,10 +319,19 @@
318 blank_window_->ShowWindow(false);319 blank_window_->ShowWindow(false);
319 animation::SetValue(blank_window_animator_, animation::Direction::BACKWARD);320 animation::SetValue(blank_window_animator_, animation::Direction::BACKWARD);
320321
322 if (prompt_activation_)
323 BlankWindowGrabEnable(false);
324
321 blank_window_.Release();325 blank_window_.Release();
322 lockscreen_delay_timeout_.reset();326 lockscreen_delay_timeout_.reset();
323}327}
324328
329void Controller::OnBlankWindowInputEvent(XEvent const&)
330{
331 if (!lockscreen_timeout_)
332 HideBlankWindow();
333}
334
325void Controller::BlankWindowGrabEnable(bool grab)335void Controller::BlankWindowGrabEnable(bool grab)
326{336{
327 if (!blank_window_)337 if (!blank_window_)
@@ -329,41 +339,29 @@
329339
330 if (grab)340 if (grab)
331 {341 {
332 for (auto const& shield : shields_)342 if (!primary_shield_.IsValid())
333 {343 {
334 shield->UnGrabPointer();344 blank_window_->EnableInputWindow(true);
335 shield->UnGrabKeyboard();345 blank_window_->GrabPointer();
346 blank_window_->GrabKeyboard();
336 }347 }
337348
338 blank_window_->EnableInputWindow(true);349 input::Monitor::Get().RegisterClient(input::Events::INPUT, sigc::mem_fun(this, &Controller::OnBlankWindowInputEvent));
339 blank_window_->GrabPointer();
340 blank_window_->GrabKeyboard();
341 nux::GetWindowCompositor().SetAlwaysOnFrontWindow(blank_window_.GetPointer());350 nux::GetWindowCompositor().SetAlwaysOnFrontWindow(blank_window_.GetPointer());
342
343 blank_window_->mouse_move.connect([this](int, int, int dx, int dy, unsigned long, unsigned long) {
344 if ((dx || dy) && !lockscreen_timeout_) HideBlankWindow();
345 });
346 blank_window_->key_down.connect([this] (unsigned long et, unsigned long k, unsigned long s, const char* c, unsigned short kc) {
347 if (prompt_view_.GetPointer() && prompt_view_->focus_view())
348 prompt_view_->focus_view()->key_down.emit(et, k, s, c, kc);
349 if (!lockscreen_timeout_) HideBlankWindow();
350 });
351 blank_window_->mouse_down.connect([this] (int, int, unsigned long, unsigned long) {
352 if (!lockscreen_timeout_) HideBlankWindow();
353 });
354 }351 }
355 else352 else
356 {353 {
357 blank_window_->UnGrabPointer();354 input::Monitor::Get().UnregisterClient(sigc::mem_fun(this, &Controller::OnBlankWindowInputEvent));
358 blank_window_->UnGrabKeyboard();355
359356 if (primary_shield_.IsValid())
360 for (auto const& shield : shields_)357 {
361 {358 primary_shield_->GrabPointer();
362 if (!shield->primary())359 primary_shield_->GrabKeyboard();
363 continue;360 }
364361 else
365 shield->GrabPointer();362 {
366 shield->GrabKeyboard();363 blank_window_->UnGrabPointer();
364 blank_window_->UnGrabKeyboard();
367 }365 }
368 }366 }
369}367}
@@ -386,6 +384,7 @@
386 if (prompt)384 if (prompt)
387 {385 {
388 EnsureBlankWindow();386 EnsureBlankWindow();
387 BlankWindowGrabEnable(true);
389 blank_window_->SetOpacity(1.0);388 blank_window_->SetOpacity(1.0);
390 }389 }
391390
392391
=== modified file 'lockscreen/LockScreenController.h'
--- lockscreen/LockScreenController.h 2016-09-02 13:36:37 +0000
+++ lockscreen/LockScreenController.h 2016-11-11 15:56:00 +0000
@@ -78,6 +78,7 @@
78 void OnPresenceStatusChanged(bool idle);78 void OnPresenceStatusChanged(bool idle);
79 void OnScreenSaverActivationRequest(bool activate);79 void OnScreenSaverActivationRequest(bool activate);
80 void OnPrimaryShieldMotion(int x, int y);80 void OnPrimaryShieldMotion(int x, int y);
81 void OnBlankWindowInputEvent(XEvent const&);
8182
82 std::vector<nux::ObjectPtr<BaseShield>> shields_;83 std::vector<nux::ObjectPtr<BaseShield>> shields_;
83 nux::ObjectWeakPtr<BaseShield> primary_shield_;84 nux::ObjectWeakPtr<BaseShield> primary_shield_;
8485
=== modified file 'tests/test_lockscreen_controller.cpp'
--- tests/test_lockscreen_controller.cpp 2016-09-02 13:36:37 +0000
+++ tests/test_lockscreen_controller.cpp 2016-11-11 15:56:00 +0000
@@ -31,6 +31,7 @@
31#include "lockscreen/LockScreenSettings.h"31#include "lockscreen/LockScreenSettings.h"
32#include "lockscreen/ScreenSaverDBusManager.h"32#include "lockscreen/ScreenSaverDBusManager.h"
33#include "unity-shared/DashStyle.h"33#include "unity-shared/DashStyle.h"
34#include "unity-shared/InputMonitor.h"
34#include "unity-shared/PanelStyle.h"35#include "unity-shared/PanelStyle.h"
35#include "unity-shared/UScreen.h"36#include "unity-shared/UScreen.h"
36#include "mock_key_grabber.h"37#include "mock_key_grabber.h"
@@ -108,6 +109,7 @@
108 nux::animation::AnimationController animation_controller;109 nux::animation::AnimationController animation_controller;
109110
110 MockUScreen uscreen;111 MockUScreen uscreen;
112 unity::input::Monitor im;
111 unity::dash::Style dash_style;113 unity::dash::Style dash_style;
112 unity::panel::Style panel_style;114 unity::panel::Style panel_style;
113 unity::lockscreen::Settings lockscreen_settings;115 unity::lockscreen::Settings lockscreen_settings;
@@ -258,7 +260,7 @@
258 tick_source.tick(BLANK_ANIMATION_DURATION);260 tick_source.tick(BLANK_ANIMATION_DURATION);
259261
260 ASSERT_TRUE(controller.blank_window_->GetOpacity() == 1.0);262 ASSERT_TRUE(controller.blank_window_->GetOpacity() == 1.0);
261 ASSERT_TRUE(controller.blank_window_->OwnsPointerGrab());263 ASSERT_FALSE(controller.blank_window_->OwnsPointerGrab());
262264
263 // Wake the screen265 // Wake the screen
264 dbus_manager->simulate_activity.emit();266 dbus_manager->simulate_activity.emit();