Anonymous | Login | 03-02-2021 23:30 UTC |
Main | My View | View Issues | Change Log | Docs |
Viewing Issue Simple Details [ Jump to Notes ] | [ View Advanced ] [ Issue History ] [ Print ] | |||||||||||
ID | Category | Severity | Reproducibility | Date Submitted | Last Update | |||||||
0001710 | [Croquet] Jasmine | crash | always | 08-18-05 18:59 | 08-18-05 21:15 | |||||||
Reporter | schwa | View Status | public | |||||||||
Assigned To | ||||||||||||
Priority | normal | Resolution | open | |||||||||
Status | new | |||||||||||
Summary | 0001710: Reproducible OpenAL Walkbacks | |||||||||||
Description |
The easiest way to reproduce this bug is to walk into an OpenAL space, and then collapse and expand the TeapotMorph. Another way is to save, quit, and restart an image where an OpenAL Teapot is open. Once these walkbacks occur, you can't even delete the teapot (just causes more walkbacks). Ultimately, the problem is that an instance of the OpenAL class does not store a handle to an OpenAL context, so there is no way to tell whether OpenAL is in a valid state (contrast this with OpenGL>>destroy... it is clear that an OpenGL context is invalid when the 'handle' iVar is nil). The OpenAL code uses the deprecated function alutInit(), which does not do any error checking and does not return a handle to an OpenAL context. See the following links (search the latter for 'alut'): http://opensource.creative.com/pipermail/openal/2005-February/002660.html [^] http://www.openal.org/openal_webstf/specs/OpenAL1-1Spec.pdf [^] Although alutInit() and alutExit() may be sufficient for a simple C program, they are not appropriate for a dynamic object environment that can be snapshotted and restarted. Instead, we should use functions like alcCreateContext() and alcDestroyContext() to explicitly manage the lifetime of OpenAL contexts (Jasmine's OpenGL support hides these in the plugin with #primDestroyRenderer: and #primCreateRenderer:x:y:w:h:). Another example is the support that I have written for Nvidia's Cg. I haven't pushed this into Jasmine because DAS advised against major changes since Hedgehog is coming Real Soon Now, but I have added code to OpenGL to allow additional APIs to be supported without requiring further changes to OpenGL (only method additions, no new iVars necessary). If anyone wants to use this for OpenAL, too, let me know. Even though the lifetimes of a Cg and OpenGL are much more closely related than to that of an OpenAL context, I think that it would be quite reasonable to create/destroy/re-create OpenAL contexts at the same time as the other context types (eg: collapse/expand window, quit/restart image, etc.) |
|||||||||||
Additional Information | ||||||||||||
Attached Files | ||||||||||||
|
![]() |
|||
Date Modified | Username | Field | Change |
08-18-05 18:59 | schwa | New Issue | |
08-18-05 21:15 | pmoore | Note Added: 0002424 | |
08-18-05 21:17 | pmoore | Issue Monitored: pmoore |
Mantis 1.0.8[^]
Copyright © 2000 - 2007 Mantis Group
34 total queries executed. 27 unique queries executed. |