From b41ae733a991874f231aa8a4baf7dc5c43ea6fd9 Mon Sep 17 00:00:00 2001 From: Georges Basile Stavracas Neto Date: Thu, 28 Nov 2019 12:29:12 -0300 Subject: [PATCH] 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 --- js/ui/screenShield.js | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/js/ui/screenShield.js b/js/ui/screenShield.js index 7071c7781..48c33545a 100644 --- a/js/ui/screenShield.js +++ b/js/ui/screenShield.js @@ -786,7 +786,7 @@ var ScreenShield = class { let newY = currentY - origY; newY = clamp(newY, -global.stage.height, 0); - this._lockScreenGroup.y = newY; + this._lockScreenGroup.translation_y = newY; return true; } @@ -794,7 +794,7 @@ var ScreenShield = class { _onDragEnd(_action, _actor, _eventX, _eventY, _modifiers) { if (this._lockScreenState != MessageTray.State.HIDING) 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 let [velocity_, velocityX_, velocityY] = this._dragAction.get_velocity(0); this._liftShield(true, -velocityY); @@ -802,10 +802,10 @@ var ScreenShield = class { // restore the lock screen to its original place // try to use the same speed as the normal animation 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.ease({ - y: 0, + translation_y: 0, duration, mode: Clutter.AnimationMode.EASE_IN_QUAD, onComplete: () => { @@ -954,14 +954,14 @@ var ScreenShield = class { // use the same speed regardless of original position // if velocity is specified, it's in pixels per milliseconds 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; velocity = Math.max(minVelocity, velocity); let duration = delta / velocity; this._lockScreenGroup.ease({ - y: -h, + translation_y: -h, duration, mode: Clutter.AnimationMode.EASE_IN_QUAD, onComplete: () => this._hideLockScreenComplete(), @@ -1023,10 +1023,10 @@ var ScreenShield = class { let fadeToBlack = params.fadeToBlack; if (params.animateLockScreen) { - this._lockScreenGroup.y = -global.screen_height; + this._lockScreenGroup.translation_y = -global.screen_height; this._lockScreenGroup.remove_all_transitions(); this._lockScreenGroup.ease({ - y: 0, + translation_y: 0, duration: MANUAL_FADE_TIME, mode: Clutter.AnimationMode.EASE_OUT_QUAD, onComplete: () => {