diff options
author | Felix H. Dahlke <fhd@ubercode.de> | 2013-07-08 17:18:29 +0200 |
---|---|---|
committer | Felix H. Dahlke <fhd@ubercode.de> | 2013-07-08 17:18:29 +0200 |
commit | 907a96af0c740dfa188cfb6dbce2e8ecf1f48859 (patch) | |
tree | 5241636f214b2aedb8e2845a793686ee2fb95b47 /src/library_sdl.js | |
parent | 6dff9374e3cb873968f9a58f80b625e7f256d6d9 (diff) |
Fix GC pauses by reusing canvas elements
Diffstat (limited to 'src/library_sdl.js')
-rw-r--r-- | src/library_sdl.js | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/src/library_sdl.js b/src/library_sdl.js index 176a2fae..eb582273 100644 --- a/src/library_sdl.js +++ b/src/library_sdl.js @@ -21,6 +21,7 @@ var LibrarySDL = { version: null, surfaces: {}, + canvasPool: [], events: [], fonts: [null], @@ -288,7 +289,10 @@ var LibrarySDL = { SDL.GL = SDL.GL || useWebGL; var canvas; if (!usePageCanvas) { - canvas = document.createElement('canvas'); + if (SDL.canvasPool.length > 0) + canvas = SDL.canvasPool.pop(); + else + canvas = document.createElement('canvas'); canvas.width = width; canvas.height = height; } else { @@ -355,6 +359,7 @@ var LibrarySDL = { }, freeSurface: function(surf) { + SDL.canvasPool.push(SDL.surfaces[surf].canvas); _free(SDL.surfaces[surf].buffer); _free(SDL.surfaces[surf].pixelFormat); _free(surf); |