是否可以将GC从process1传递到process2并在那里使用它(我需要更新剪辑区域)?
我试图通过window属性传递GC。但是我在那个GC上的XSetRegion调用上有SEGFAULT。
答案 0 :(得分:1)
var x11 = require('x11');
var gc;
x11.createClient(function(display) {
var X = display.client;
var root = display.screen[0].root;
var wid = X.AllocID();
X.CreateWindow(wid, root, 0, 0, 400, 300);
var _gc = parseInt(process.argv[2]);
if (_gc != 0)
gc = _gc;
else {
gc = X.AllocID();
X.CreateGC(gc, root);
console.log('GC created: ' + gc);
setInterval(function() {
X.ChangeGC(gc, { foreground: parseInt(Math.random()*0xffffff) });
console.log('gc updated!');
}, 500);
}
X.MapWindow(wid);
setInterval(function() {
X.PolyText8(wid, gc, 50, 50, ['Hello, Node.JS!', ' Hello, world!']);
console.log(gc);
}, 100);
X.on('error', function(err) {
console.log(err);
});
});
答案 1 :(得分:1)
可能 但是...
这是Xlib手册所说的:
“ Xlib为非资源的GC的所有元素实现写回缓存 允许Xlib实施对GC更改的透明合并的ID。对于 例如,先调用GC的XSetForeground,再调用XSetLineAttributes 只会导致对服务器的单次更改GC协议请求。 GC都不是 期望也不鼓励在客户端应用程序之间共享,因此此写回 缓存应该没有问题。如果没有以下条件,应用程序将无法共享GC 外部同步。因此,在应用程序之间共享GC非常重要 灰心丧气。”