[pyrrlicht-commit] SF.net SVN: pyrrlicht: [541] trunk/cpp
Status: Pre-Alpha
Brought to you by:
kbluck
|
From: <kb...@us...> - 2007-01-22 22:58:41
|
Revision: 541
http://svn.sourceforge.net/pyrrlicht/?rev=541&view=rev
Author: kbluck
Date: 2007-01-22 14:58:42 -0800 (Mon, 22 Jan 2007)
Log Message:
-----------
BUG: I've been suspicious that readying types before their supertypes are ready was going to bite me, and it finally did. Setting up tp_bases before the base types are readied eventually causes garbage collector to segfault; precisely when depends on pre-main() init order and the gc threshold setting. Renaming the 'irr' sources finally surfaced the problem. I've addressed it with the following measures:
1. Making ready functions reschedulable; if they detect that the base type is not ready, they will quit early and reschedule themselves for later. This ensures that all single-inherited types will end up readied only after their supertype is readied.
2. Multiple-base types are harder. Since tp_bases can not be properly set up until such time as the types are readied, it is very hard to do it "automatically" as for single types. For now, I'm settling for a bit of a hack in IGUIElement's ready function; when I get my second multiple-inherited type, I'll generalize it better.
Modified Paths:
--------------
trunk/cpp/irr__class_IEventReceiver.cpp
trunk/cpp/irr__class_ILogger.cpp
trunk/cpp/irr__class_IOSOperator.cpp
trunk/cpp/irr__class_ITimer.cpp
trunk/cpp/irr__class_IUnknown.cpp
trunk/cpp/irr__class_IrrlichtDevice.cpp
trunk/cpp/irr__struct_SEvent.cpp
trunk/cpp/irr__struct_SIrrlichtCreationParameters.cpp
trunk/cpp/irr__struct_SKeyMap.cpp
trunk/cpp/irr__typedefs.cpp
trunk/cpp/irr_core_class_aabbox3d.cpp
trunk/cpp/irr_core_class_dimension2d.cpp
trunk/cpp/irr_core_class_line2d.cpp
trunk/cpp/irr_core_class_line3d.cpp
trunk/cpp/irr_core_class_matrix4.cpp
trunk/cpp/irr_core_class_plane3d.cpp
trunk/cpp/irr_core_class_position2d.cpp
trunk/cpp/irr_core_class_quaternion.cpp
trunk/cpp/irr_core_class_rect.cpp
trunk/cpp/irr_core_class_triangle3d.cpp
trunk/cpp/irr_core_class_vector2d.cpp
trunk/cpp/irr_core_class_vector3d.cpp
trunk/cpp/irr_gui_class_ICursorControl.cpp
trunk/cpp/irr_gui_class_IGUIElement.cpp
trunk/cpp/irr_gui_class_IGUIEnvironment.cpp
trunk/cpp/irr_io_class_IFileList.cpp
trunk/cpp/irr_io_class_IFileSystem.cpp
trunk/cpp/irr_io_class_IReadFile.cpp
trunk/cpp/irr_io_class_IWriteFile.cpp
trunk/cpp/irr_scene_class_ISceneManager.cpp
trunk/cpp/irr_video_class_IVideoDriver.cpp
trunk/cpp/irr_video_class_IVideoModeList.cpp
trunk/cpp/irr_video_struct_S3DVertex.cpp
trunk/cpp/irr_video_struct_S3DVertex2TCoords.cpp
trunk/cpp/irr_video_struct_S3DVertexTangents.cpp
trunk/cpp/irr_video_struct_SColor.cpp
trunk/cpp/irr_video_struct_SColorf.cpp
trunk/cpp/irr_video_struct_SLight.cpp
trunk/cpp/python_enum.hpp
trunk/cpp/python_type.cpp
trunk/cpp/python_type.hpp
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|