diff options
author | Kenneth Russel <[email protected]> | 2005-01-31 01:09:48 +0000 |
---|---|---|
committer | Kenneth Russel <[email protected]> | 2005-01-31 01:09:48 +0000 |
commit | eb6ed9455e33975a9933b6ccf98ac9810a63683a (patch) | |
tree | d5d6e919169f2412e926e6e1c75375cd65f22f66 /src/net/java/games/gluegen/FunctionEmitter.java | |
parent | d78bfcde3e1e860568ab4e8045ffe279f5d144b7 (diff) |
Fixed Issue 118: EXCEPTION_ACCESS_VIOLATION on show of 2nd canvas (ATI-specific)
The root cause of this bug was not the new DummyGL code, but severe
bugs in ATI's OpenGL drivers where it appears that if an OpenGL
context is ever made current on more than one thread during the
lifetime of an application, problems begin to occur such as the
SetPixelFormat call failing on the just the next newly-created HDC, or
all subsequent SetPixelFormat calls failing on all
subsequently-created HDCs. This was occurring because the
single-threaded ATI workaround's automatic detection mechanism was not
being enabled until the first time a context was made current, but by
then it was typically too late; the context was made current on the
end user's thread during e.g. Frame.show(), and if it was ever made
current on another thread (like the AWT event queue thread, which is
where all OpenGL operations are performed when the single-threaded
workaround is enabled) then the problems would begin.
The failure has only been seen on Windows so far; ATI's drivers on X11
seem to be better behaved. The workaround is to check for the presence
of ATI's drivers very early during JOGL's initialization, by looking
in the system directory for atioglxx.dll, and enabling the
single-threaded workaround if it was found. This workaround causes the
attached test case to work properly.
Also added some more debugging code to make diagnosing problems like
these easier in the future.
git-svn-id: file:///usr/local/projects/SUN/JOGL/git-svn/svn-server-sync/jogl/trunk@196 232f8b59-042b-4e1e-8c03-345bb8c30851
Diffstat (limited to 'src/net/java/games/gluegen/FunctionEmitter.java')
0 files changed, 0 insertions, 0 deletions