[gnome-shell] magnifier: Track cursor sprite changes only when active
- From: Georges Basile Stavracas Neto <gbsneto src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-shell] magnifier: Track cursor sprite changes only when active
- Date: Mon, 1 Apr 2019 20:46:32 +0000 (UTC)
commit 9158f55360d6af87c078d3af3db81f296f3b36b3
Author: Marco Trevisan (TreviƱo) <mail 3v1n0 net>
Date: Mon Mar 11 17:09:08 2019 -0400
magnifier: Track cursor sprite changes only when active
There's no point in keeping the cursor sprite texture around all the time,
and to listen for its changes, we just need this when the magnifier is active.
So, initialize the magnifier texture and monitor for the sprite changes on
activation, while disconnect from the signal and nullify the texture when
the magnifier is deactivated.
https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/443
js/ui/magnifier.js | 11 +++++++----
1 file changed, 7 insertions(+), 4 deletions(-)
---
diff --git a/js/ui/magnifier.js b/js/ui/magnifier.js
index f6b0e9550..b01e8b6b2 100644
--- a/js/ui/magnifier.js
+++ b/js/ui/magnifier.js
@@ -88,7 +88,7 @@ var MouseSpriteContent = GObject.registerClass({
this._texture = coglTexture;
this.invalidate();
- if (!oldTexture ||
+ if (!oldTexture || !coglTexture ||
oldTexture.get_width() != coglTexture.get_width() ||
oldTexture.get_height() != coglTexture.get_height())
this.invalidate_size();
@@ -106,7 +106,6 @@ var Magnifier = class Magnifier {
this._mouseSprite = new Clutter.Actor({ request_mode: Clutter.RequestMode.CONTENT_SIZE });
this._mouseSprite.content = new MouseSpriteContent();
- this._updateSpriteTexture();
this._cursorRoot = new Clutter.Actor();
this._cursorRoot.add_actor(this._mouseSprite);
@@ -122,8 +121,6 @@ var Magnifier = class Magnifier {
let showAtLaunch = this._settingsInit(aZoomRegion);
aZoomRegion.scrollContentsTo(this.xMouse, this.yMouse);
- cursorTracker.connect('cursor-changed', this._updateMouseSprite.bind(this));
-
// Export to dbus.
magDBusService = new MagnifierDBus.ShellMagnifier();
this.setActive(showAtLaunch);
@@ -159,9 +156,15 @@ var Magnifier = class Magnifier {
if (isActive != activate) {
if (activate) {
+ this._updateMouseSprite();
+ this._cursorSpriteChangedId =
+ this._cursorTracker.connect('cursor-changed',
+ this._updateMouseSprite.bind(this));
Meta.disable_unredirect_for_display(global.display);
this.startTrackingMouse();
} else {
+ this._cursorTracker.disconnect(this._cursorSpriteChangedId);
+ this._mouseSprite.content.texture = null;
Meta.enable_unredirect_for_display(global.display);
this.stopTrackingMouse();
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]