Skip to content

Commit e450966

Browse files
committed
Converted the Device and CanvasPool into page level singletons, that can be shared by all instances of a Phaser Game running in the same page.
1 parent 3009a42 commit e450966

11 files changed

Lines changed: 114 additions & 87 deletions

File tree

v3/src/boot/Game.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ var DebugHeader = require('./DebugHeader');
1212
var RequestAnimationFrame = require('../dom/RequestAnimationFrame');
1313
var DOMContentLoaded = require('../dom/DOMContentLoaded');
1414
var RandomDataGenerator = require('../math/random-data-generator/RandomDataGenerator');
15+
var CanvasPool = require('../dom/CanvasPool');
1516

1617
var Game = function (config)
1718
{
@@ -86,6 +87,9 @@ Game.prototype = {
8687

8788
console.log(CHECKSUM.build);
8889

90+
console.log('pool', CanvasPool.getTotal());
91+
console.log('free', CanvasPool.getFree());
92+
8993
// Add in ability to specify pre-init and post-init callbacks in the config
9094

9195
this.raf.start();

v3/src/checksum.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
var CHECKSUM = {
2-
build: '7c3f6cb0-b2cd-11e6-b14c-d53f539998e7'
2+
build: '0a915bb0-b376-11e6-8e00-5b1f6d1d763b'
33
};
44
module.exports = CHECKSUM;

v3/src/device/Audio.js

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
var OS = require('./OS');
2+
var Browser = require('./Browser');
3+
14
var Audio = {
25

36
/**
@@ -57,7 +60,7 @@ var Audio = {
5760

5861
};
5962

60-
function init (OS, Browser)
63+
function init ()
6164
{
6265
Audio.audioData = !!(window['Audio']);
6366
Audio.webAudio = !!(window['AudioContext'] || window['webkitAudioContext']);
@@ -133,4 +136,4 @@ function init (OS, Browser)
133136
return Audio;
134137
}
135138

136-
module.exports = init;
139+
module.exports = init();

v3/src/device/Browser.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
var OS = require('./OS');
2+
13
var Browser = {
24

35
/**
@@ -104,7 +106,7 @@ var Browser = {
104106

105107
};
106108

107-
function init (OS)
109+
function init ()
108110
{
109111
var ua = navigator.userAgent;
110112

@@ -168,4 +170,4 @@ function init (OS)
168170
return Browser;
169171
}
170172

171-
module.exports = init;
173+
module.exports = init();

v3/src/device/Features.js

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
var OS = require('./OS');
2+
var Browser = require('./Browser');
3+
var CanvasPool = require('../dom/CanvasPool');
4+
15
var Features = {
26

37
/**
@@ -106,8 +110,10 @@ function checkIsLittleEndian ()
106110
}
107111
}
108112

109-
function init (OS, Browser)
113+
function init ()
110114
{
115+
console.log('Features.init');
116+
111117
Features.canvas = !!window['CanvasRenderingContext2D'] || OS.cocoonJS;
112118

113119
try
@@ -130,7 +136,7 @@ function init (OS, Browser)
130136
{
131137
try
132138
{
133-
var canvas = document.createElement('canvas');
139+
var canvas = CanvasPool.create(this, 1, 1);
134140

135141
// cocoon ...
136142
canvas.screencanvas = false;
@@ -146,6 +152,8 @@ function init (OS, Browser)
146152
*/
147153
isUint8 = image.data instanceof Uint8ClampedArray;
148154

155+
CanvasPool.removeByCanvas(canvas);
156+
149157
return (ctx !== null);
150158
}
151159
catch (e)
@@ -211,4 +219,4 @@ function init (OS, Browser)
211219
return Features;
212220
}
213221

214-
module.exports = init;
222+
module.exports = init();

v3/src/device/Fullscreen.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
var OS = require('./OS');
2+
var Browser = require('./Browser');
3+
14
var Fullscreen = {
25

36
/**
@@ -86,4 +89,4 @@ function init ()
8689
return Fullscreen;
8790
}
8891

89-
module.exports = init;
92+
module.exports = init();

v3/src/device/Input.js

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
var OS = require('./OS');
2+
var Browser = require('./Browser');
3+
14
var Input = {
25

36
/**
@@ -21,7 +24,7 @@ var Input = {
2124

2225
};
2326

24-
function init (OS, Browser)
27+
function init ()
2528
{
2629
if ('ontouchstart' in document.documentElement || (window.navigator.maxTouchPoints && window.navigator.maxTouchPoints >= 1))
2730
{
@@ -56,4 +59,4 @@ function init (OS, Browser)
5659
return Input;
5760
}
5861

59-
module.exports = init;
62+
module.exports = init();

v3/src/device/OS.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -259,4 +259,4 @@ function init ()
259259
return OS;
260260
}
261261

262-
module.exports = init;
262+
module.exports = init();

v3/src/device/Video.js

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
var OS = require('./OS');
2+
var Browser = require('./Browser');
3+
14
var Video = {
25

36
/**
@@ -38,7 +41,7 @@ var Video = {
3841

3942
};
4043

41-
function init (OS, Browser)
44+
function init ()
4245
{
4346
var videoElement = document.createElement('video');
4447
var result = !!videoElement.canPlayType;
@@ -83,4 +86,4 @@ function init (OS, Browser)
8386
return Video;
8487
}
8588

86-
module.exports = init;
89+
module.exports = init();

v3/src/device/index.js

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
1+
// This singleton is instantiated as soon as Phaser loads,
2+
// before a Phaser.Game instance has even been created.
3+
// Which means all instances of Phaser Games can share it,
4+
// without having to re-poll the device all over again
5+
16
var OS = require('./OS');
27
var Browser = require('./Browser');
38
var Features = require('./Features');
@@ -6,18 +11,14 @@ var Audio = require('./Audio');
611
var Video = require('./Video');
712
var Fullscreen = require('./Fullscreen');
813

9-
var os = OS();
10-
var browser = Browser(os);
11-
1214
module.exports = {
1315

14-
// Doing this makes it available under Device.OS
15-
OS: os,
16-
Browser: browser,
17-
Features: Features(os, browser),
18-
Input: Input(os, browser),
19-
Audio: Audio(os, browser),
20-
Video: Video(os, browser),
21-
Fullscreen: Fullscreen()
16+
OS: OS,
17+
Browser: Browser,
18+
Features: Features,
19+
Input: Input,
20+
Audio: Audio,
21+
Video: Video,
22+
Fullscreen: Fullscreen
2223

2324
};

0 commit comments

Comments
 (0)