On Tue, Jun 06, 2000 at 10:51:57AM +0200, Tasslehof wrote:
> I apologize in advance for this post, but I am really in a mess... I am
> developing a (another :->) Cdplayer (Call it A). I have written a lot of
> applets, including a port of Xmms OpenGL applet and it all worked fine
> using XFree 3.3.6 and Mesa 3.1. Now I switched to 4.0.0 and DRI for
> VoodoBanshee. Here's the problem:
> 1) A uses dlopen() to load each applet ad startup.
> 2) When I start an applet, A "pthreads" a new thread sampling the
> sound device), then starts the applets (At this point I have
> 3 thread : a manager, the main thread and the sampler).
> 3) When I start OpenGL applets (linked against Xfree GL lib),
> I get a "libGL error: dlopen failed: XXX/tdfx_dri.so :
> undefined symbol : _glapi_Context" and GL primitives don't
> work. (The same problem is in Xmms.)
> 4) I tried to link the main program against GL libs : everything
> goes fine, but every time I close a GL window and re-open it,
> the rendering context is drawn in the same sreen space, and the
> window in another place (!).
> This is very puzzling (I thought I should simply set up the libraries...).
> Could anyone help me ? Hi,
The short answer is that it should already be fixed in the CVS tree on
SourceForge. If you were running from the pre-built 3dfx RPMS you
wouldn't have it. I assume 3dfx will make another package after the
4.0.1 release and the fix will be in there.
The longer answer is that we required dynamic linking to use RTLD_GLOBAL
when they loaded the library. That way the tdfx_dri could find the
symbols in libGL. Since then we've seen a lot of applications that don't
use the flag that way, and we've convinced ourselves that requiring the
global link is probably the wrong answer, so we changed our libraries to
link libGL to tdfx_dri, so it doesn't need the global link to resolve
all the symbols.