0
是否有可能将GC从process1传递给process2并在那里使用它(我需要更新剪切区域)?在另一个进程中使用GC(X11图形上下文)
我试着通过窗口属性传递GC。但是我在该GC上的XSetRegion调用中获得了SEGFAULT。
是否有可能将GC从process1传递给process2并在那里使用它(我需要更新剪切区域)?在另一个进程中使用GC(X11图形上下文)
我试着通过窗口属性传递GC。但是我在该GC上的XSetRegion调用中获得了SEGFAULT。
是的,这是可能的。这里是一个例子(对不起,在JavaScript中,使用node-x11),您可以在一个进程中创建gc,并将其作为命令行参数传递给另一个进程。所有对gc的更改(在本例中为前景色)在另一个进程中都可见。请注意,当第一个进程退出时,GC将在服务器上销毁,如果您尝试继续使用它,则会在第二个进程中看到“错误的GContext”错误。
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);
});
});
感谢分享!我是X11的新手,想知道这样的操作是否有效。 – 2012-04-18 12:56:43