screenShield: Animate shield using translation_y
Instead of using the 'y', which queues a full relayout and thus forces effects to be reapplied, use the 'translation_y' property, that doesn't force relayouts and allows the blur effect to actually use the cached framebuffers a lot more. https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/864
This commit is contained in:
parent
768193ab20
commit
b41ae733a9
@ -786,7 +786,7 @@ var ScreenShield = class {
|
|||||||
let newY = currentY - origY;
|
let newY = currentY - origY;
|
||||||
newY = clamp(newY, -global.stage.height, 0);
|
newY = clamp(newY, -global.stage.height, 0);
|
||||||
|
|
||||||
this._lockScreenGroup.y = newY;
|
this._lockScreenGroup.translation_y = newY;
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -794,7 +794,7 @@ var ScreenShield = class {
|
|||||||
_onDragEnd(_action, _actor, _eventX, _eventY, _modifiers) {
|
_onDragEnd(_action, _actor, _eventX, _eventY, _modifiers) {
|
||||||
if (this._lockScreenState != MessageTray.State.HIDING)
|
if (this._lockScreenState != MessageTray.State.HIDING)
|
||||||
return;
|
return;
|
||||||
if (this._lockScreenGroup.y < -(ARROW_DRAG_THRESHOLD * global.stage.height)) {
|
if (this._lockScreenGroup.translation_y < -(ARROW_DRAG_THRESHOLD * global.stage.height)) {
|
||||||
// Complete motion automatically
|
// Complete motion automatically
|
||||||
let [velocity_, velocityX_, velocityY] = this._dragAction.get_velocity(0);
|
let [velocity_, velocityX_, velocityY] = this._dragAction.get_velocity(0);
|
||||||
this._liftShield(true, -velocityY);
|
this._liftShield(true, -velocityY);
|
||||||
@ -802,10 +802,10 @@ var ScreenShield = class {
|
|||||||
// restore the lock screen to its original place
|
// restore the lock screen to its original place
|
||||||
// try to use the same speed as the normal animation
|
// try to use the same speed as the normal animation
|
||||||
let h = global.stage.height;
|
let h = global.stage.height;
|
||||||
let duration = MANUAL_FADE_TIME * -this._lockScreenGroup.y / h;
|
let duration = MANUAL_FADE_TIME * -this._lockScreenGroup.translation_y / h;
|
||||||
this._lockScreenGroup.remove_all_transitions();
|
this._lockScreenGroup.remove_all_transitions();
|
||||||
this._lockScreenGroup.ease({
|
this._lockScreenGroup.ease({
|
||||||
y: 0,
|
translation_y: 0,
|
||||||
duration,
|
duration,
|
||||||
mode: Clutter.AnimationMode.EASE_IN_QUAD,
|
mode: Clutter.AnimationMode.EASE_IN_QUAD,
|
||||||
onComplete: () => {
|
onComplete: () => {
|
||||||
@ -954,14 +954,14 @@ var ScreenShield = class {
|
|||||||
// use the same speed regardless of original position
|
// use the same speed regardless of original position
|
||||||
// if velocity is specified, it's in pixels per milliseconds
|
// if velocity is specified, it's in pixels per milliseconds
|
||||||
let h = global.stage.height;
|
let h = global.stage.height;
|
||||||
let delta = h + this._lockScreenGroup.y;
|
let delta = h + this._lockScreenGroup.translation_y;
|
||||||
let minVelocity = global.stage.height / CURTAIN_SLIDE_TIME;
|
let minVelocity = global.stage.height / CURTAIN_SLIDE_TIME;
|
||||||
|
|
||||||
velocity = Math.max(minVelocity, velocity);
|
velocity = Math.max(minVelocity, velocity);
|
||||||
let duration = delta / velocity;
|
let duration = delta / velocity;
|
||||||
|
|
||||||
this._lockScreenGroup.ease({
|
this._lockScreenGroup.ease({
|
||||||
y: -h,
|
translation_y: -h,
|
||||||
duration,
|
duration,
|
||||||
mode: Clutter.AnimationMode.EASE_IN_QUAD,
|
mode: Clutter.AnimationMode.EASE_IN_QUAD,
|
||||||
onComplete: () => this._hideLockScreenComplete(),
|
onComplete: () => this._hideLockScreenComplete(),
|
||||||
@ -1023,10 +1023,10 @@ var ScreenShield = class {
|
|||||||
let fadeToBlack = params.fadeToBlack;
|
let fadeToBlack = params.fadeToBlack;
|
||||||
|
|
||||||
if (params.animateLockScreen) {
|
if (params.animateLockScreen) {
|
||||||
this._lockScreenGroup.y = -global.screen_height;
|
this._lockScreenGroup.translation_y = -global.screen_height;
|
||||||
this._lockScreenGroup.remove_all_transitions();
|
this._lockScreenGroup.remove_all_transitions();
|
||||||
this._lockScreenGroup.ease({
|
this._lockScreenGroup.ease({
|
||||||
y: 0,
|
translation_y: 0,
|
||||||
duration: MANUAL_FADE_TIME,
|
duration: MANUAL_FADE_TIME,
|
||||||
mode: Clutter.AnimationMode.EASE_OUT_QUAD,
|
mode: Clutter.AnimationMode.EASE_OUT_QUAD,
|
||||||
onComplete: () => {
|
onComplete: () => {
|
||||||
|
Loading…
Reference in New Issue
Block a user