client.atoms - std atoms (hardcoded) + atoms cache

This commit is contained in:
sidorares 2011-07-21 14:09:44 +10:00
parent 318b1afd1f
commit 783ac4b416
2 changed files with 89 additions and 15 deletions

72
lib/x11/stdatoms.js Normal file
View file

@ -0,0 +1,72 @@
// pre-defined atoms. generated automatically with genstdatoms.js
module.exports = {
PRIMARY: 1,
SECONDARY: 2,
ARC: 3,
ATOM: 4,
BITMAP: 5,
CARDINAL: 6,
COLORMAP: 7,
CURSOR: 8,
CUT_BUFFER0: 9,
CUT_BUFFER1: 10,
CUT_BUFFER2: 11,
CUT_BUFFER3: 12,
CUT_BUFFER4: 13,
CUT_BUFFER5: 14,
CUT_BUFFER6: 15,
CUT_BUFFER7: 16,
DRAWABLE: 17,
FONT: 18,
INTEGER: 19,
PIXMAP: 20,
POINT: 21,
RECTANGLE: 22,
RESOURCE_MANAGER: 23,
RGB_COLOR_MAP: 24,
RGB_BEST_MAP: 25,
RGB_BLUE_MAP: 26,
RGB_DEFAULT_MAP: 27,
RGB_GRAY_MAP: 28,
RGB_GREEN_MAP: 29,
RGB_RED_MAP: 30,
STRING: 31,
VISUALID: 32,
WINDOW: 33,
WM_COMMAND: 34,
WM_HINTS: 35,
WM_CLIENT_MACHINE: 36,
WM_ICON_NAME: 37,
WM_ICON_SIZE: 38,
WM_NAME: 39,
WM_NORMAL_HINTS: 40,
WM_SIZE_HINTS: 41,
WM_ZOOM_HINTS: 42,
MIN_SPACE: 43,
NORM_SPACE: 44,
MAX_SPACE: 45,
END_SPACE: 46,
SUPERSCRIPT_X: 47,
SUPERSCRIPT_Y: 48,
SUBSCRIPT_X: 49,
SUBSCRIPT_Y: 50,
UNDERLINE_POSITION: 51,
UNDERLINE_THICKNESS: 52,
STRIKEOUT_ASCENT: 53,
STRIKEOUT_DESCENT: 54,
ITALIC_ANGLE: 55,
X_HEIGHT: 56,
QUAD_WIDTH: 57,
WEIGHT: 58,
POINT_SIZE: 59,
RESOLUTION: 60,
COPYRIGHT: 61,
NOTICE: 62,
FONT_NAME: 63,
FAMILY_NAME: 64,
FULL_NAME: 65,
CAP_HEIGHT: 66,
WM_CLASS: 67,
WM_TRANSIENT_FOR: 68
}

View file

@ -15,6 +15,7 @@ require('./unpackbuffer').addUnpack(Buffer);
var xerrors = require('./xerrors');
var coreRequests = require('./corereqs');
var stdatoms = require('./corereqs');
function XClient(stream)
{
@ -50,30 +51,31 @@ function XClient(stream)
this.seq_num = 0; // incremented in each request. (even if we don't expect reply)
// in/out packets indexed by sequence ID
this.requests = {};
//this.requests = {};
this.replies = {};
this.events = {};
//this.events = {};
this.atoms = stdatoms;
this.event_consumers = {}; // maps window id to eventemitter TODO: bad name
this.importRequestsFromTemplates(this, coreRequests);
this.startHandshake();
// TODO: bad name
this.event_consumers = {}; // maps window id to eventemitter
// TODO: this is potentially async and probably has to be synchronised with 'connect' event
/*
// import available extentions
// TODO: lazy import on first call?
/*
this.ext = {};
this.ListExtensions( function(err, extentionsList ) {
for (ext in extentionsList) {
var extRequests = require('./ext/' + extentionsList[ext]);
// TODO: need to call QueryExtention to get [major opcode, first event, first error]
importRequestsFromTemplates(this, extRequests);
try {
X.QueryExtension(ext, function(e) {
var extRequests = require('./ext/' + extentionsList[ext]);
importRequestsFromTemplates(this, extRequests);
});
} catch (e) {
// do not import if module not defined
}
}
}
});
*/
// init comon extentions
this.startHandshake();
}
util.inherits(XClient, EventEmitter);