[Xquartz-dev] libGL.1.2.dylib shipped with 2.3.3 RC5 makes applications crash
Jeremy Huddleston
jeremyhu at apple.com
Wed Apr 22 20:55:18 PDT 2009
On Apr 22, 2009, at 20:35, vmrsss wrote:
> On 23 Apr 2009, at 03:42, Jeremy Huddleston wrote:
>> That's using GL, but it's not using GLX. The macosx output plugin
>> for mplayer uses Cocoa. It has nothing to do with GLX.
>
> You're right about Cocoa of course.
>
>> If you're linking the macosx vo plugin against /usr/X11/lib/
>> libGL.dylib, then you should expect it to not work. The fact that
>> it used to work was pure luck on your part. You want to do -fw
>> OpenGL to link against the correct libGL... not -lGL.
>
>
> So, /usr/X11/libGL.dylib contains GLX and /System/Library/..../
> OpenGL/Libraries/libGL.dylib contains GL (as used by Cocoa)?
Not exactly. Both are "GL" ... /System/Library/Frameworks/
OpenGL.framework/Libraries/libGL.dylib is CGL. Our GLX libGL is a
translation layer that translates GLX to CGL.
> I am confused, can you conjecture why if I replace the new
> libGL.dylib with the one from 2.3.2.1 it all works?
Because of the way we used to implement libGL, it worked for you. You
were calling GL functions that were passed directly on to CGL by the
old GLX libGL, so you just got lucky that we implemented it that way.
> OK, luck, but there must be a technical explanation too. I suppose
> the system loads /usr/X11/lib/libGL.dylib in both cases, does it not?
It does, because you linked it that way, but the problem is that it
shouldn't be linking against the GLX libGL because you are not using
GLX. You are using CGL. You need to link against the correct library
for it to work correctly (-fw OpenGL rather than -lGL).
> (Also, it's not me who do -lGL, but a complex configure system. In
> fact, the gcc commandline contains both -fw OpenGL and -lGL. And
> you're telling me that -lGL should not be there at all... I'll try
> to find out and see what happens if I remove -lGL.)
That is correct.
>> Can you please provide a specific instance of a GLX application
>> that works with the old libGL but crashes with the new one?
>
> At this stage I dont know how to tell apart GLX applications from
> applications which use Cocoa/OpenGL (but possibly load /usr/X11/lib/
> libGL.dylib): what I had done previously was to scan my disc for
> applications which load /usr/X11/lib/libGL.dylib (to check which
> ones worked and which did not). For instance I had found the crash
> attached, which now looks to me exactly identical to the one we are
> discussing. So I wonder, do I have any GLX application at all?
Well, one way to know is if it uses X11 or not. When you open the
application and the window is in the foreground, is X11 the active OSX
application?
For instance, if I run mplayer, it will create a separate application
in the dock for mplayer. If I use '-vo x11', it will render through
X11.
--Jeremy
More information about the Xquartz-dev
mailing list