capture stack trace for Render functions)

This commit is contained in:
Andrey Sidorov 2011-12-15 09:31:29 +11:00
parent d24332c90f
commit 564f4f0126

View file

@ -8,6 +8,15 @@ var x11 = require('..');
// TODO: move to templates
exports.requireExt = function(display, callback)
{
function captureStack()
{
var err = new Error;
//err.name = reqName;
Error.captureStackTrace(err, arguments.callee);
display.client.seq2stack[display.client.seq_num] = err.stack;
}
var X = display.client;
X.QueryExtension('RENDER', function(ext) {
@ -19,6 +28,7 @@ exports.requireExt = function(display, callback)
ext.QueryVersion = function(clientMaj, clientMin, callback)
{
X.seq_num++;
captureStack();
X.pack_stream.pack('CCSLL', [ext.majorOpcode, 0, 3, clientMaj, clientMin]);
X.replies[X.seq_num] = [
function(buf, opt) {
@ -33,6 +43,7 @@ exports.requireExt = function(display, callback)
ext.QueryPictFormat = function(callback)
{
X.seq_num++;
captureStack();
X.pack_stream.pack('CCS', [ext.majorOpcode, 1, 1]);
X.replies[X.seq_num] = [
function (buf, opt) {
@ -63,6 +74,7 @@ exports.requireExt = function(display, callback)
ext.QueryFilters = function(callback)
{
X.seq_num++;
captureStack();
X.pack_stream.pack('CCSL', [ext.majorOpcode, 29, 2, display.screen[0].root]);
X.replies[X.seq_num] = [
function(buf, opt) {
@ -119,6 +131,7 @@ exports.requireExt = function(display, callback)
ext.CreatePicture = function(pid, drawable, pictformat, values)
{
X.seq_num++;
captureStack();
var mask = 0;
var reqLen = 5; // + (values + pad)/4
var format = 'CCSLLLL';
@ -160,6 +173,7 @@ exports.requireExt = function(display, callback)
ext.SetPictureFilter = function(pid, name, filterParams)
{
X.seq_num++;
captureStack();
var reqLen = 2; //header + params + 1xStopfix+2xColors
var format = 'CCSLa';
var params = [ext.majorOpcode, 30, reqLen, pid];
@ -183,6 +197,7 @@ exports.requireExt = function(display, callback)
{
// TODO: merge with linear gradient
X.seq_num++;
captureStack();
var reqLen = 9+stops.length*3; //header + params + 1xStopfix+2xColors
var format = 'CCSLLLLLLLL';
var params = [ext.majorOpcode, 35, reqLen, pid];
@ -217,6 +232,7 @@ exports.requireExt = function(display, callback)
ext.LinearGradient = function(pid, p1, p2, stops)
{
X.seq_num++;
captureStack();
var reqLen = 7+stops.length*3; //header + params + 1xStopfix+2xColors
var format = 'CCSLLLLLL';
var params = [ext.majorOpcode, 34, reqLen, pid];
@ -250,6 +266,7 @@ exports.requireExt = function(display, callback)
ext.ConicalGradient = function(pid, center, angle, stops)
{
X.seq_num++;
captureStack();
var reqLen = 6+stops.length*3; //header + params + 1xStopfix+2xColors
var format = 'CCSLLLLL';
var params = [ext.majorOpcode, 36, reqLen, pid];
@ -282,6 +299,7 @@ exports.requireExt = function(display, callback)
ext.FillRectangles = function(op, pid, color, rects)
{
X.seq_num++;
captureStack();
var reqLen = 5+rects.length/2;
var format = 'CCSCxxxLSSSS';
var params = [ext.majorOpcode, 26, reqLen, op, pid];
@ -302,6 +320,7 @@ exports.requireExt = function(display, callback)
ext.Composite = function(op, src, mask, dst, srcX, srcY, maskX, maskY, dstX, dstY, width, height)
{
X.seq_num++;
captureStack();
X.pack_stream.pack(
'CCSCxxxLLLssssssSS',
[ext.majorOpcode, 8, 9, op, src, mask, dst, srcX, srcY, maskX, maskY, dstX, dstY, width, height]
@ -312,6 +331,7 @@ exports.requireExt = function(display, callback)
ext.Trapezoids = function(op, src, srcX, srcY, dst, maskFormat, trapz)
{
X.seq_num++;
captureStack();
var format = 'CCSCxxxLLLss';
var params = [ext.majorOpcode, 10, 6+trapz.length, op, src, dst, maskFormat, srcX, srcY];
for (var i=0; i < trapz.length; i+=10)
@ -328,6 +348,7 @@ exports.requireExt = function(display, callback)
ext.Triangles = function(op, src, srcX, srcY, dst, maskFormat, tris)
{
X.seq_num++;
captureStack();
var format = 'CCSCxxxLLLss';
var params = [ext.majorOpcode, 11, 6+tris.length, op, src, dst, maskFormat, srcX, srcY];
for (var i=0; i < tris.length; i+=6)