Mercurial > MadButterfly
view nodejs/examples/simple/testleak.js @ 1412:3e80b5cf8da2
Testcase for redrawing image.
There is a report from wycc that redrawing is not working for image
(maybe other shapes). This testcase shows that he may forget to call
redraw_changed() after updating transform matrix.
author | Thinker K.F. Li <thinker@codemud.net> |
---|---|
date | Wed, 06 Apr 2011 10:44:15 +0800 |
parents | a74b4d986a91 |
children |
line wrap: on
line source
// -*- indent-tabs-mode: t; tab-width: 8; c-basic-offset: 4; -*- // vim: sw=4:ts=8:sts=4 var mbfly = require("mbfly"); var sys = require("sys"); var cproc = require("child_process"); function testcase1() { var mbrt = new mbfly.mb_rt(":32.0", 300, 200); var root = mbrt.root; var coords = []; var coord; var i; while(true) { for(i = 0; i < 200; i++) { coords.push(mbrt.coord_new(root)); } mbrt.redraw_changed(); mbrt.flush(); while(coords.length > 0) { coord = coords.pop(); coord.remove(); } } } function testcase2() { var mbrt = new mbfly.mb_rt(":32.0", 300, 200); var root = mbrt.root; var coords = []; var coord; var i, j; while(true) { for(i = 0; i < 200; i++) { coords.push(mbrt.coord_new(root)); for(j = 0; j < 10; j++) coord = mbrt.coord_new(coords[i]); } mbrt.redraw_changed(); mbrt.flush(); while(coords.length > 0) { coord = coords.pop(); coord.remove(); } } } function testcase3() { var mbrt = new mbfly.mb_rt(":32.0", 300, 200); var root = mbrt.root; var coords = []; var coord; var shape; var i, j; while(true) { for(i = 0; i < 200; i++) { coords.push(mbrt.coord_new(root)); for(j = 0; j < 10; j++) { coord = mbrt.coord_new(coords[i]); shape = mbrt.rect_new(15, 15, 20, 20, 0, 0); coord.add_shape(shape); } } mbrt.redraw_changed(); mbrt.flush(); while(coords.length > 0) { coord = coords.pop(); coord.remove(); } } } function testcase4() { var mbrt = new mbfly.mb_rt(":32.0", 300, 200); var root = mbrt.root; var coords = []; var coord; var shape; var i, j; while(true) { for(i = 0; i < 200; i++) { coords.push(mbrt.coord_new(root)); for(j = 0; j < 10; j++) { coord = mbrt.coord_new(coords[i]); shape = mbrt.path_new("m 10,10 l 55,27 l -30,-3 z"); coord.add_shape(shape); } } mbrt.redraw_changed(); mbrt.flush(); while(coords.length > 0) { coord = coords.pop(); coord.remove(); } } } function testcase5() { var mbrt = new mbfly.mb_rt(":32.0", 300, 200); var root = mbrt.root; var paint; while(true) { paint = mbrt.paint_color_new(0.5, 0.5, 0.5, 1); } } function testcase6() { var mbrt = new mbfly.mb_rt(":32.0", 300, 200); var root = mbrt.root; var coords = []; var coord; var shape; var paint; var i, j; while(true) { for(i = 0; i < 200; i++) { coords.push(mbrt.coord_new(root)); /* Paint is free, but rdman is dirty */ paint = mbrt.paint_color_new(0.5, 0.5, 0.5, 1); for(j = 0; j < 10; j++) { coord = mbrt.coord_new(coords[i]); shape = mbrt.rect_new(5, 5, 20, 20, 0, 0); coord.add_shape(shape); } } mbrt.redraw_changed(); mbrt.flush(); while(coords.length > 0) { coord = coords.pop(); coord.remove(); } } } function testcase7() { var mbrt = new mbfly.mb_rt(":32.0", 300, 200); var root = mbrt.root; var coords = []; var coord; var shape; var paint; var i, j; while(true) { for(i = 0; i < 200; i++) { coords.push(mbrt.coord_new(root)); for(j = 0; j < 10; j++) { /* paint is not free, and rdman is dirty */ paint = mbrt.paint_color_new(0.5, 0.5, 0.5, 1); coord = mbrt.coord_new(coords[i]); shape = mbrt.path_new("M 100,100 L 30,30 L 0,30 z"); coord.add_shape(shape); paint.stroke(shape); } } mbrt.redraw_changed(); mbrt.flush(); while(coords.length > 0) { coord = coords.pop(); coord.remove(); } } } cproc.exec("killall -9 Xvfb; Xvfb :32 -screen 0 800x600x24"); setTimeout(function() { if(process.argv.length == 1) testcase1(); else if(process.argv.length == 3) { sys.puts("testcase " + process.argv[2]); switch(process.argv[2]) { case "1": testcase1(); break; case "2": testcase2(); break; case "3": testcase3(); break; case "4": testcase4(); break; case "5": testcase5(); break; case "6": testcase6(); break; case "7": testcase7(); break; default: sys.puts("Usage: node testleak.js [1|2|3...7]"); } } else sys.puts("Usage: node testleak.js [1|2|3...7]"); cproc.exec("killall -9 Xvfb"); }, 1500);