我怎样才能为gnustep编写一个windowserver?我有几天正在阅读gnustep的来源,但不知道它是如何工作的。有人可以从NSApplicationMain()到图形用户界面解释它是如何工作的吗?实现一个非常基本的WindowServer需要什么?我知道这是一个很大的话题。
谢谢, 托米
答案 0 :(得分:0)
GNUstep在其AppKit中使用自己的半抽象类GSDisplayServer来实现现有窗口系统(如X11或WIN32)的包装。这也取决于你对这个WindowServer的设计,但主要有两件事要做,第一件事是实现你自己的WindowServer,提供你需要的API(如果存在,不是一些Quartz API?)和后端的实现(子类化GSDisplayServer和NSGraphicsContext)。但据我所知,在OSX上获取窗口的唯一方法是要求你使用带有NSWindow的Objective-C,因为没有支持的API可以在没有Objective-C的情况下在OSX上创建一个窗口(请在这里纠正我,因为我的知识仅限于GNUstep方面)。所以我认为为GNUstep实现一个WindowServer没有多大意义,而是将它包装在你系统上任何现有的窗口系统中。但严重的是,X11并不是那么糟糕,我强烈建议你使用它。至少在xcb中重写GNUstep的x11后端。发明一个新的窗口系统将是一个很大的浪费时间。如果您在其他领域贡献您的时间,GNUstep将受益更多。但是,如果您只想将GNUstep移植到窗口系统,只需查看现有的后端即可。