use padded 4 bytes for all CreatePicture parameters

This commit is contained in:
Andrey Sidorov 2012-05-01 13:11:40 +10:00
parent 95765c9385
commit 3298795a7b

View file

@ -105,19 +105,19 @@ exports.requireExt = function(display, callback)
} }
var valueList = [ var valueList = [
['repeat', 'C'], ['repeat', 'Cxxx'],
['alphaMap', 'L'], ['alphaMap', 'L'],
['alphaXOrigin', 's'], ['alphaXOrigin', 'sxx'],
['alphaYOrigin', 's'], ['alphaYOrigin', 'sxx'],
['clipXOrigin', 's'], ['clipXOrigin', 'sxx'],
['clipYOrigin', 's'], ['clipYOrigin', 'sxx'],
['clipMask', 'L'], ['clipMask', 'L'],
['graphicsExposures', 'C'], ['graphicsExposures', 'Cxxx'],
['subwindowMode', 'C'], ['subwindowMode', 'Cxxx'],
['polyEdge', 'C'], ['polyEdge', 'Cxxx'],
['polyMode', 'C'], ['polyMode', 'Cxxx'],
['dither', 'L'], ['dither', 'L'],
['componentAlpha', 'C'] ['componentAlpha', 'Cxxx']
]; ];
var argumentLength = { var argumentLength = {
@ -130,6 +130,7 @@ exports.requireExt = function(display, callback)
ext.CreatePicture = function(pid, drawable, pictformat, values) ext.CreatePicture = function(pid, drawable, pictformat, values)
{ {
console.log([pid, drawable, pictformat, values]);
X.seq_num++; X.seq_num++;
captureStack(); captureStack();
var mask = 0; var mask = 0;
@ -142,13 +143,15 @@ exports.requireExt = function(display, callback)
var valuesLength = 0; var valuesLength = 0;
for (var i=0; i < valueList.length; ++i) for (var i=0; i < valueList.length; ++i)
{ {
var val = values[valueList[i][0]]; var name = valueList[i][0];
var val = values[name];
console.log([name, val]);
if (val) { if (val) {
mask |= (1 << i); mask |= (1 << i);
params.push(val); params.push(val);
var valueFormat = valueList[i][1]; var valueFormat = valueList[i][1];
format += valueFormat; format += valueFormat;
valuesLength += argumentLength[valueFormat]; valuesLength += 4; //argumentLength[valueFormat];
} }
} }
var pad4 = (valuesLength + 3) >> 2; var pad4 = (valuesLength + 3) >> 2;
@ -159,6 +162,7 @@ exports.requireExt = function(display, callback)
params[2] = reqLen; params[2] = reqLen;
params[6] = mask; params[6] = mask;
} }
console.log(['CreatePicture', format, params]);
X.pack_stream.pack(format, params); X.pack_stream.pack(format, params);
X.pack_stream.flush(); X.pack_stream.flush();
} }
@ -367,6 +371,7 @@ exports.requireExt = function(display, callback)
} }
ext.QueryPictFormat(function(err, formats) { ext.QueryPictFormat(function(err, formats) {
console.log(formats);
for (var i=0; i < formats.formats.length; ++i) { for (var i=0; i < formats.formats.length; ++i) {
var f = formats.formats[i]; var f = formats.formats[i];
if (f[2] == 1 && f[10] == 1) if (f[2] == 1 && f[10] == 1)