This commit is contained in:
Juan RP 2013-09-15 13:53:19 +02:00
parent 8424f318a8
commit cbf8283136
2 changed files with 127 additions and 1 deletions

View File

@ -0,0 +1,126 @@
From 616e53679be1a412d5ce1add65f12c2129752fd4 Mon Sep 17 00:00:00 2001
From: Adel Gadllah <adel.gadllah@gmail.com>
Date: Thu, 15 Aug 2013 21:51:46 +0200
Subject: [PATCH] Revert "background: fix asynchronous management of background
loading operations"
This reverts commit 1020d8a0f8523a04d8336b1348388b8b242e414f.
---
js/ui/background.js | 69 +++++++++++++++++++----------------------------------
1 file changed, 25 insertions(+), 44 deletions(-)
diff --git a/js/ui/background.js b/js/ui/background.js
index 13343c6..1d9ab7c 100644
--- js/ui/background.js
+++ js/ui/background.js
@@ -142,40 +142,33 @@ const BackgroundCache = new Lang.Class({
cancellable: null,
onFinished: null });
- let fileLoad = { filename: params.filename,
- style: params.style,
- shouldCopy: false,
- monitorIndex: params.monitorIndex,
- effects: params.effects,
- onFinished: params.onFinished,
- cancellable: new Gio.Cancellable(), };
- this._pendingFileLoads.push(fileLoad);
-
- if (params.cancellable) {
- params.cancellable.connect(Lang.bind(this, function(c) {
- fileLoad.cancellable.cancel();
- }));
+ for (let i = 0; i < this._pendingFileLoads.length; i++) {
+ if (this._pendingFileLoads[i].filename == params.filename &&
+ this._pendingFileLoads[i].style == params.style) {
+ this._pendingFileLoads[i].callers.push({ shouldCopy: true,
+ monitorIndex: params.monitorIndex,
+ effects: params.effects,
+ onFinished: params.onFinished });
+ return;
+ }
}
+ this._pendingFileLoads.push({ filename: params.filename,
+ style: params.style,
+ callers: [{ shouldCopy: false,
+ monitorIndex: params.monitorIndex,
+ effects: params.effects,
+ onFinished: params.onFinished }] });
+
let content = new Meta.Background({ meta_screen: global.screen,
monitor: params.monitorIndex,
effects: params.effects });
content.load_file_async(params.filename,
params.style,
- fileLoad.cancellable,
+ params.cancellable,
Lang.bind(this,
function(object, result) {
- if (fileLoad.cancellable.is_cancelled()) {
- if (params.cancellable && params.cancellable.is_cancelled()) {
- if (params.onFinished)
- params.onFinished(null);
- this._removePendingFileLoad(fileLoad);
- return;
- }
- return;
- }
-
try {
content.load_file_finish(result);
@@ -185,25 +178,22 @@ const BackgroundCache = new Lang.Class({
content = null;
}
- let needsCopy = false;
for (let i = 0; i < this._pendingFileLoads.length; i++) {
let pendingLoad = this._pendingFileLoads[i];
if (pendingLoad.filename != params.filename ||
pendingLoad.style != params.style)
continue;
- if (pendingLoad.cancellable.is_cancelled())
- continue;
+ for (let j = 0; j < pendingLoad.callers.length; j++) {
+ if (pendingLoad.callers[j].onFinished) {
+ if (content && pendingLoad.callers[j].shouldCopy) {
+ content = object.copy(pendingLoad.callers[j].monitorIndex,
+ pendingLoad.callers[j].effects);
- pendingLoad.cancellable.cancel();
- if (pendingLoad.onFinished) {
- if (content && needsCopy) {
- content = object.copy(pendingLoad.monitorIndex,
- pendingLoad.effects);
- }
+ }
- needsCopy = true;
- pendingLoad.onFinished(content);
+ pendingLoad.callers[j].onFinished(content);
+ }
}
this._pendingFileLoads.splice(i, 1);
@@ -211,15 +201,6 @@ const BackgroundCache = new Lang.Class({
}));
},
- _removePendingFileLoad: function(fileLoad) {
- for (let i = 0; i < this._pendingFileLoads.length; i++) {
- if (this._pendingFileLoads[i].cancellable == fileLoad.cancellable) {
- this._pendingFileLoads.splice(i, 1);
- break;
- }
- }
- },
-
getImageContent: function(params) {
params = Params.parse(params, { monitorIndex: 0,
style: null,
--
1.8.3.1

View File

@ -1,7 +1,7 @@
# Template file for 'gnome-shell' # Template file for 'gnome-shell'
pkgname=gnome-shell pkgname=gnome-shell
version=3.8.4 version=3.8.4
revision=1 revision=2
build_style=gnu-configure build_style=gnu-configure
configure_args="--disable-schemas-compile --with-systemd" configure_args="--disable-schemas-compile --with-systemd"
hostmakedepends="pkg-config intltool gnome-doc-utils gobject-introspection" hostmakedepends="pkg-config intltool gnome-doc-utils gobject-introspection"