|
Subject: KDE's implementation of various GUI bits, problems with MacOSX Newsgroups: gmane.comp.kde.darwin, gmane.comp.kde.devel.general Date: 2004-01-19 21:51:16 GMT (5 years, 23 weeks, 6 days, 15 hours and 21 minutes ago) So we're running into issues in the Qt/Mac port revolving around process handling and GUIs. From what I can tell, there are a number of places where kde exec's new processes for things like dialog boxes and other gui elements. (kcmshell is the most common of them). The problem I'm running into is that the Mac OS X gui loses it's ability to talk to the display server across a fork. What happens is, Mac OS X's kernel is a hybrid of mach and a BSD kernel, but there's a number of places where their resources are separate. All GUI stuff is communicated through mach ports, and fork doesn't preserve mach port resources in the child process, so essentially children can't be GUI apps. As far as I can tell, what happens is something like this: 1. I start konqueror. 2. kdeinit spawns, and in turn spawns kded and dcopserver (and other things as necessary) 3. I try to go to konq's settings 4. konq says "I want to open konqueror_config.desktop", it talks through dcop to kdeinit (is this right?) 5. kdeinit spawns kcmshell konqfoo konqbar, which in turn calls kcmodule stuff, which uses kapplication or kuniqueapplication to display stuff (I forget which) At #5, though, kdeinit has never had a graphics context, so it's unable to display stuff properly. It seems like a lot of this design comes from X11 being decoupled, where you can make windows modal children of other windows at will, whether Qt thinks it's a child or not. Am I getting this right? The path between clicking on a menu option and the executable coming up is very convoluted. I'm looking for suggestions on how to even consider fixing this. I'm having a difficult time wrapping my head around the way such things get executed, but it seems like the "fix" is to have a way for konqueror itself to call the kcmodule code, so that it becomes a child widget of konqueror, no extra forking and execing is happening, and things get inherited properly through Qt. Does this seem right? Where do I even begin? =) -- Benjamin Reed a.k.a. Ranger Rick -- http://ranger.befunk.com/ gpg: 6401 D02A A35F 55E9 D7DD 71C5 52EF A366 D3F6 65FE You had me at HELO. |
|
|