On Sat, 2008-02-16 at 10:51 -0800, Jeremy Huddleston wrote:
Hi Paul,
This is a rather loaded question you're asking. Firstly regarding the native vs X11 performance issues. You might want to speak with folks at OpenOffice.org as I recall them mentioning this as well. Perhaps they may have some suggestions for tweaking your native build.
Well, since I'm one of the most active developers of the gtk/osx port right now, I think you can assume I have my hands pretty deep in the mess :) And when I say "deep", I mean right inside the window redraw cycle at the intersection of Quartz/Cocoa and GDK. My codebase actual contains a bunch of patches that we hope will get into gtk/osx eventually, since they dramatically improve performance already :)
From what I can tell, the speed issues really are in Cocoa. And it struck me that when I survey the landscape of other apps that have the kind of GUI requirements that Ardour does, I don't know of a single one that was written with Cocoa. Most modern apps in my domain are tending to use openGL for x-platform purposes. The legacy apps are using Carbon because ... well, they're legacy apps ;) Shark gives me some pretty clear indications that the use of Cocoa inside the window update process is a killer.
XQuartz itself is just an X server. Most of the functionality you mention in the last paragraph is specific to the session manager or window manager (quartz-wm in out case) and has not been implemented. That being said, I very much hope that one day we will be able to have drag-and-drop between X and native apps, better integrated clipboard support, etc. There are just many more pressing issues before we can tackle this one. The menu bar feature is the one that I least expect to ever be supported.
OK, thanks for the info. Just as a point of reference, the old "3rd party" X server for OS X (Ouroborous) had both these items (DnD, menubar). It had a number of other nice features too - at least on paper; I never actually tried running it. I understand that the menubar thing is tricky - all the solutions I've actually seen at work are all X11-toolkit specific, and map a native menu onto the Carbon "main menu". Since X11 has no concept of a menu, its clear that its hard to integrate this at that level. As a point of interest, given my quick grep through the xquartz code the other day: how *is* xquartz drawing the screen? Does it go via CoreGraphics/Quartz, or does it undercut that in some way? Does it blit an rgba buffer to the display, or actually use CG calls for more stuff? grep suggested to me that almost no CG calls are to be found inside the server source tree .... --p