Browse Source

De-reference callbacks and minor cleanup. Fixes #94

pull/134/head
james.cryer 7 years ago
parent
commit
ae6747ea7d
  1. 1
      .npmignore
  2. 32
      memory-leak-test.js
  3. 24
      resemble.js

1
.npmignore

@ -9,3 +9,4 @@ nodejs-tests
.dockerignore
dockerfile
.travis.yml
memory-leak-test.js

32
memory-leak-test.js

@ -0,0 +1,32 @@
// node --expose-gc memory-leak-test.js
const fs = require('fs');
const resemble = require('./resemble');
let max = 2000;
const timerLabel = "2000 compare";
console.time(timerLabel);
compare();
function compare(){
const people = fs.readFileSync('./demoassets/ghost1.png');
const people2 = fs.readFileSync('./demoassets/ghost2.png');
resemble(people).compareTo(people2).onComplete(function() {
if (--max >= 0) {
process.nextTick(compare);
} else {
process.nextTick(log);
}
global.gc();
if (max % 100 === 0) {
var mem = process.memoryUsage();
console.log(max, mem.rss, mem.heapUsed, mem.external);
}
});
}
function log(){
console.timeEnd(timerLabel);
process.exit(0);
}

24
resemble.js

@ -15,10 +15,19 @@ URL: https://github.com/Huddle/Resemble.js
}(this, function () {
'use strict';
var document = typeof window != "undefined" ? window.document : {
var Img;
var Canvas;
if (typeof Image !== 'undefined') {
Img = Image;
} else {
Canvas = require('canvas-prebuilt');
Img = Canvas.Image;
}
var document = typeof window !== "undefined" ? window.document : {
createElement: function() {
// This will work as long as only createElement is used on window.document
var Canvas = require('canvas-prebuilt');
return new Canvas();
}
};
@ -198,12 +207,9 @@ URL: https://github.com/Huddle/Resemble.js
function loadImageData( fileData, callback ){
var fileReader;
var hiddenImage;
if (typeof Image !== 'undefined') {
hiddenImage = new Image();
} else {
var CanvasImage = require('canvas-prebuilt').Image;
hiddenImage = new CanvasImage();
var hiddenImage = new Img();
if (!hiddenImage.setAttribute) {
hiddenImage.setAttribute = function setAttribute() { };
}
@ -212,6 +218,7 @@ URL: https://github.com/Huddle/Resemble.js
}
hiddenImage.onerror = function (err) {
hiddenImage.onload = null;
hiddenImage.onerror = null; //fixes pollution between calls
images.push({ error : err ? err + "" : "Image load error." });
callback();
@ -219,6 +226,7 @@ URL: https://github.com/Huddle/Resemble.js
hiddenImage.onload = function() {
hiddenImage.onload = null; //fixes pollution between calls
hiddenImage.onerror = null;
var hiddenCanvas = document.createElement('canvas');
var imageData;

Loading…
Cancel
Save