71 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			71 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
| From e917b7ce0f1dca31683534e1980477b0b88da0de Mon Sep 17 00:00:00 2001
 | |
| From: Ray Strode <rstrode@redhat.com>
 | |
| Date: Wed, 26 Feb 2014 15:13:21 -0500
 | |
| Subject: [PATCH 2/4] background: refactor file loading
 | |
| 
 | |
| This commit moves the code around a bit such that the
 | |
| caller gets allocated up front and then a file load is either
 | |
| found or created to attach the caller to.
 | |
| 
 | |
| Functionally, the code is the same, it's just now factored in a way
 | |
| that will make it easier to fix a bug with cancellation later.
 | |
| 
 | |
| https://bugzilla.gnome.org/show_bug.cgi?id=722149
 | |
| ---
 | |
|  js/ui/background.js | 27 +++++++++++++++++----------
 | |
|  1 file changed, 17 insertions(+), 10 deletions(-)
 | |
| 
 | |
| diff --git a/js/ui/background.js b/js/ui/background.js
 | |
| index 3fe279d..396309a 100644
 | |
| --- a/js/ui/background.js
 | |
| +++ b/js/ui/background.js
 | |
| @@ -132,6 +132,10 @@ const BackgroundCache = new Lang.Class({
 | |
|          this._removeContent(this._images, content);
 | |
|      },
 | |
|  
 | |
| +    _attachCallerToFileLoad: function(caller, fileLoad) {
 | |
| +        fileLoad.callers.push(caller);
 | |
| +    },
 | |
| +
 | |
|      _loadImageContent: function(params) {
 | |
|          params = Params.parse(params, { monitorIndex: 0,
 | |
|                                          style: null,
 | |
| @@ -140,21 +144,24 @@ const BackgroundCache = new Lang.Class({
 | |
|                                          cancellable: null,
 | |
|                                          onFinished: null });
 | |
|  
 | |
| +        let caller = { monitorIndex: params.monitorIndex,
 | |
| +                       effects: params.effects,
 | |
| +                       onFinished: params.onFinished };
 | |
| +
 | |
|          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({ monitorIndex: params.monitorIndex,
 | |
| -                                                         effects: params.effects,
 | |
| -                                                         onFinished: params.onFinished });
 | |
| +            let fileLoad = this._pendingFileLoads[i];
 | |
| +
 | |
| +            if (fileLoad.filename == params.filename &&
 | |
| +                fileLoad.style == params.style) {
 | |
| +                this._attachCallerToFileLoad(caller, fileLoad);
 | |
|                  return;
 | |
|              }
 | |
|          }
 | |
|  
 | |
| -        this._pendingFileLoads.push({ filename: params.filename,
 | |
| -                                      style: params.style,
 | |
| -                                      callers: [{ monitorIndex: params.monitorIndex,
 | |
| -                                                  effects: params.effects,
 | |
| -                                                  onFinished: params.onFinished }] });
 | |
| +        let fileLoad = { filename: params.filename,
 | |
| +                         style: params.style,
 | |
| +                         callers: [] };
 | |
| +        this._attachCallerToFileLoad(caller, fileLoad);
 | |
|  
 | |
|          let content = new Meta.Background({ meta_screen: global.screen });
 | |
|  
 | |
| -- 
 | |
| 1.9.0
 | |
| 
 |