Here are some patches to help Soya 0.13 compile cleanly
with Pyrex 0.9.6.1, and to fix a couple of bugs.

Notes about the patches:

#U# marks code that I commented out because it was
generating unused code warnings.

I found a few places where local variables were not
initialised. It wasn't always clear what the correct
initial value should be, so I marked these with
POSSIBLE BUG.

--
Greg
diff -u -p -r -N -x .DS_Store -x build -x setup.py -x _ode.c -x _soya.c -x 
opengl.c -x sdlconst.c Soya-0.13/base.pyx Soya-0.13-new/base.pyx
--- Soya-0.13/base.pyx  2007-01-16 10:43:07.000000000 +1300
+++ Soya-0.13-new/base.pyx      2007-10-09 19:15:51.000000000 +1300
@@ -60,7 +60,7 @@ CAN_USE_TEX_BORDER = 1
 
 cdef Renderer renderer
 
-cdef int MAX_LIGHTS, MAX_CLIP_PLANES, MAX_TEXTURES, MAX_TEXTURE_SIZE
+cdef GLint MAX_LIGHTS, MAX_CLIP_PLANES, MAX_TEXTURES, MAX_TEXTURE_SIZE
 
 def get_max_texture_size():
        return MAX_TEXTURE_SIZE
@@ -113,8 +113,13 @@ cdef class _CObj:
                pass
        
        def __getstate__(self):
-               if getattr(self, "__dict__", 0): return self.__getcstate__(), 
self.__dict__
-               else:                            return self.__getcstate__(),
+               cdef object d
+               try:
+                       d = getattr(self, "__dict__")
+               except:
+                       return self.__getcstate__()
+               else:
+                       return self.__getcstate__(), d
                
        def __setstate__(self, state):
                self.__setcstate__(state[0])
@@ -136,8 +141,8 @@ cdef class _CObj:
                return clone
 
 
-cdef chunk_to_string(Chunk* chunk):
-       return PyString_FromStringAndSize(<char*> chunk.content, chunk.nb)
+#U#cdef chunk_to_string(Chunk* chunk):
+#U#    return PyString_FromStringAndSize(<char*> chunk.content, chunk.nb)
 
 cdef drop_chunk_to_string(Chunk* chunk):
        cdef string
diff -u -p -r -N -x .DS_Store -x build -x setup.py -x _ode.c -x _soya.c -x 
opengl.c -x sdlconst.c Soya-0.13/c.pxd Soya-0.13-new/c.pxd
--- Soya-0.13/c.pxd     2006-07-12 08:06:18.000000000 +1200
+++ Soya-0.13-new/c.pxd 2007-03-30 14:01:41.000000000 +1200
@@ -34,7 +34,7 @@ cdef extern from "math.h":
        float sin (float x)
        float tan (float x)
        float exp (float x)
-       float pow (float x, int n)
+       float pow (float x, float n)
        float ceil (float x)
        float floor (float x)
 
diff -u -p -r -N -x .DS_Store -x build -x setup.py -x _ode.c -x _soya.c -x 
opengl.c -x sdlconst.c Soya-0.13/cal3d/model.pyx Soya-0.13-new/cal3d/model.pyx
--- Soya-0.13/cal3d/model.pyx   2006-11-21 12:26:39.000000000 +1300
+++ Soya-0.13-new/cal3d/model.pyx       2007-03-30 14:01:41.000000000 +1200
@@ -677,8 +677,11 @@ cdef class _AnimatedModel(_Model):
                        CalCoreModel_CreateCoreMaterialThread(self._core_model, 
i)
                        CalCoreModel_SetCoreMaterialId(self._core_model, i, 0, 
i)
                        CalCoreMaterial_SetUserData(material, <CalUserData> i)
-                       
-               CalRenderer_GetMapUserData
+               
+               # Greg Ewing, March 2007 ([EMAIL PROTECTED])
+               # Following line commented out as it wasn't doing anything and 
was causing
+               # a compiler warning. POSSIBLE BUG.
+               #CalRenderer_GetMapUserData
                
 # This method is split in 3 ; this is a work-around for a bug in Pyrex
 
diff -u -p -r -N -x .DS_Store -x build -x setup.py -x _ode.c -x _soya.c -x 
opengl.c -x sdlconst.c Soya-0.13/cal3d_wrapper.h Soya-0.13-new/cal3d_wrapper.h
--- Soya-0.13/cal3d_wrapper.h   2006-05-21 10:43:18.000000000 +1200
+++ Soya-0.13-new/cal3d_wrapper.h       2007-03-30 14:01:41.000000000 +1200
@@ -188,7 +188,7 @@ extern "C"
 // CalCoreAnimation wrapper functions declaration                             
//
 
//****************************************************************************//
 
-  CAL3D_WRAPPER_API struct CalCoreAnimation *CalCoreAnimation_New();
+  CAL3D_WRAPPER_API struct CalCoreAnimation *CalCoreAnimation_New(void);
   CAL3D_WRAPPER_API void CalCoreAnimation_Delete(struct CalCoreAnimation 
*self);
 
   CAL3D_WRAPPER_API void CalCoreAnimation_AddCoreTrack(struct CalCoreAnimation 
*self, struct CalCoreTrack *pCoreTrack);
@@ -231,7 +231,7 @@ extern "C"
   CAL3D_WRAPPER_API struct CalQuaternion *CalCoreKeyframe_GetRotation(struct 
CalCoreKeyframe *self);
   CAL3D_WRAPPER_API float CalCoreKeyframe_GetTime(struct CalCoreKeyframe 
*self);
   CAL3D_WRAPPER_API struct CalVector *CalCoreKeyframe_GetTranslation(struct 
CalCoreKeyframe *self);
-  CAL3D_WRAPPER_API struct CalCoreKeyframe *CalCoreKeyframe_New();
+  CAL3D_WRAPPER_API struct CalCoreKeyframe *CalCoreKeyframe_New(void);
   CAL3D_WRAPPER_API void CalCoreKeyframe_SetRotation(struct CalCoreKeyframe 
*self, struct CalQuaternion *pRotation);
   CAL3D_WRAPPER_API void CalCoreKeyframe_SetTime(struct CalCoreKeyframe *self, 
float time);
   CAL3D_WRAPPER_API void CalCoreKeyframe_SetTranslation(struct CalCoreKeyframe 
*self, struct CalVector *pTranslation);
@@ -240,7 +240,7 @@ extern "C"
 // CalCoreMaterial wrapper functions declaration                              
//
 
//****************************************************************************//
 
-  CAL3D_WRAPPER_API struct CalCoreMaterial *CalCoreMaterial_New();
+  CAL3D_WRAPPER_API struct CalCoreMaterial *CalCoreMaterial_New(void);
   CAL3D_WRAPPER_API void CalCoreMaterial_Delete(struct CalCoreMaterial *self);
 
 //  CAL3D_WRAPPER_API CalCoreMaterial::Color 
*CalCoreMaterial_GetAmbientColor(struct CalCoreMaterial *self);
@@ -265,7 +265,7 @@ extern "C"
 // CalCoreMesh wrapper functions declaration                                  
//
 
//****************************************************************************//
 
-  CAL3D_WRAPPER_API struct CalCoreMesh *CalCoreMesh_New();
+  CAL3D_WRAPPER_API struct CalCoreMesh *CalCoreMesh_New(void);
   CAL3D_WRAPPER_API void CalCoreMesh_Delete(struct CalCoreMesh *self);
 
   CAL3D_WRAPPER_API int CalCoreMesh_AddCoreSubmesh(struct CalCoreMesh *self, 
struct CalCoreSubmesh *pCoreSubmesh);
@@ -308,7 +308,7 @@ extern "C"
 // CalCoreSkeleton wrapper functions declaration                              
//
 
//****************************************************************************//
 
-  CAL3D_WRAPPER_API struct CalCoreSkeleton *CalCoreSkeleton_New();
+  CAL3D_WRAPPER_API struct CalCoreSkeleton *CalCoreSkeleton_New(void);
   CAL3D_WRAPPER_API void CalCoreSkeleton_Delete(struct CalCoreSkeleton* self);
 
   CAL3D_WRAPPER_API int CalCoreSkeleton_AddCoreBone(struct CalCoreSkeleton 
*self, struct CalCoreBone *pCoreBone);
@@ -334,7 +334,7 @@ extern "C"
 //  CAL3D_WRAPPER_API 
std::vector<std::vector<CalCoreSubmesh::TextureCoordinate> >& 
CalCoreSubmesh_GetVectorVectorTextureCoordinate(struct CalCoreSubmesh *self);
 //  CAL3D_WRAPPER_API std::vector<CalCoreSubmesh::Vertex>& 
CalCoreSubmesh_GetVectorVertex(struct CalCoreSubmesh *self);
   CAL3D_WRAPPER_API int CalCoreSubmesh_GetVertexCount(struct CalCoreSubmesh 
*self);
-  CAL3D_WRAPPER_API struct CalCoreSubmesh *CalCoreSubmesh_New();
+  CAL3D_WRAPPER_API struct CalCoreSubmesh *CalCoreSubmesh_New(void);
   CAL3D_WRAPPER_API enum Boolean CalCoreSubmesh_Reserve(struct CalCoreSubmesh 
*self, int vertexCount, int textureCoordinateCount, int faceCount, int 
springCount);
   CAL3D_WRAPPER_API void CalCoreSubmesh_SetCoreMaterialThreadId(struct 
CalCoreSubmesh *self, int coreMaterialThreadId);
 //  CAL3D_WRAPPER_API enum Boolean CalCoreSubmesh_SetFace(struct 
CalCoreSubmesh *self, int faceId, struct CalCoreSubmesh::Face *pFace);
@@ -355,7 +355,7 @@ CAL3D_WRAPPER_API enum Boolean  CalCoreS
   CAL3D_WRAPPER_API int CalCoreTrack_GetCoreBoneId(struct CalCoreTrack *self);
 //  CAL3D_WRAPPER_API std::map<float, CalCoreKeyframe *>& 
CalCoreTrack_GetMapCoreKeyframe(struct CalCoreTrack *self);
   CAL3D_WRAPPER_API enum Boolean CalCoreTrack_GetState(struct CalCoreTrack 
*self, float time, struct CalVector *pTranslation, struct CalQuaternion 
*pRotation);
-  CAL3D_WRAPPER_API struct CalCoreTrack *CalCoreTrack_New();
+  CAL3D_WRAPPER_API struct CalCoreTrack *CalCoreTrack_New(void);
   CAL3D_WRAPPER_API enum Boolean CalCoreTrack_SetCoreBoneId(struct 
CalCoreTrack *self, int coreBoneId);
 
 
//****************************************************************************//
@@ -385,19 +385,19 @@ CAL3D_WRAPPER_API enum Boolean  CalCoreS
     ERROR_CODE_MAX_ERROR_CODE
   };
 
-  CAL3D_WRAPPER_API enum CalErrorCode CalError_GetLastErrorCode();
-  CAL3D_WRAPPER_API char *CalError_GetLastErrorDescription();
-  CAL3D_WRAPPER_API char *CalError_GetLastErrorFile();
-  CAL3D_WRAPPER_API int CalError_GetLastErrorLine();
-  CAL3D_WRAPPER_API char *CalError_GetLastErrorText();
-  CAL3D_WRAPPER_API void CalError_PrintLastError();
+  CAL3D_WRAPPER_API enum CalErrorCode CalError_GetLastErrorCode(void);
+  CAL3D_WRAPPER_API char *CalError_GetLastErrorDescription(void);
+  CAL3D_WRAPPER_API char *CalError_GetLastErrorFile(void);
+  CAL3D_WRAPPER_API int CalError_GetLastErrorLine(void);
+  CAL3D_WRAPPER_API char *CalError_GetLastErrorText(void);
+  CAL3D_WRAPPER_API void CalError_PrintLastError(void);
 //  CAL3D_WRAPPER_API void CalError_SetLastError(enum CalErrorCode code, char 
*strFile, int line, char *strText);
 
 
//****************************************************************************//
 // CalLoader wrapper functions declaration                                    
//
 
//****************************************************************************//
 
-  CAL3D_WRAPPER_API struct CalLoader *CalLoader_New();
+  CAL3D_WRAPPER_API struct CalLoader *CalLoader_New(void);
   CAL3D_WRAPPER_API void CalLoader_Delete(struct CalLoader *self);
   CAL3D_WRAPPER_API struct CalCoreAnimation 
*CalLoader_LoadCoreAnimation(struct CalLoader *self, char *strFilename);
   CAL3D_WRAPPER_API struct CalCoreMaterial *CalLoader_LoadCoreMaterial(struct 
CalLoader *self, char *strFilename);
@@ -481,7 +481,7 @@ CAL3D_WRAPPER_API enum Boolean  CalCoreS
   CAL3D_WRAPPER_API float *CalQuaternion_Get(struct CalQuaternion *self);
   CAL3D_WRAPPER_API void CalQuaternion_Multiply(struct CalQuaternion *self, 
struct CalQuaternion *pQ);
   CAL3D_WRAPPER_API void CalQuaternion_MultiplyVector(struct CalQuaternion 
*self, struct CalVector *pV);
-  CAL3D_WRAPPER_API struct CalQuaternion *CalQuaternion_New();
+  CAL3D_WRAPPER_API struct CalQuaternion *CalQuaternion_New(void);
   CAL3D_WRAPPER_API void CalQuaternion_Op_Multiply(struct CalQuaternion 
*pResult, struct CalQuaternion *pQ, struct CalQuaternion *pR);
   CAL3D_WRAPPER_API void CalQuaternion_Set(struct CalQuaternion *self, float 
qx, float qy, float qz, float qw);
 
@@ -518,7 +518,7 @@ CAL3D_WRAPPER_API enum Boolean  CalCoreS
 
//****************************************************************************//
 
   CAL3D_WRAPPER_API void CalSaver_Delete(struct CalSaver *self);
-  CAL3D_WRAPPER_API struct CalSaver *CalSaver_New();
+  CAL3D_WRAPPER_API struct CalSaver *CalSaver_New(void);
   CAL3D_WRAPPER_API enum Boolean CalSaver_SaveCoreAnimation(struct CalSaver 
*self, char *strFilename, struct  CalCoreAnimation *pCoreAnimation);
   CAL3D_WRAPPER_API enum Boolean CalSaver_SaveCoreMaterial(struct CalSaver 
*self, char *strFilename, struct CalCoreMaterial *pCoreMaterial);
   CAL3D_WRAPPER_API enum Boolean CalSaver_SaveCoreMesh(struct CalSaver *self, 
char *strFilename, struct CalCoreMesh *pCoreMesh);
@@ -584,7 +584,7 @@ CAL3D_WRAPPER_API enum Boolean  CalCoreS
   CAL3D_WRAPPER_API void CalVector_InverseScale(struct CalVector *self, float 
d);
   CAL3D_WRAPPER_API float *CalVector_Get(struct CalVector *self);
   CAL3D_WRAPPER_API float CalVector_Length(struct CalVector *self);
-  CAL3D_WRAPPER_API struct CalVector *CalVector_New();
+  CAL3D_WRAPPER_API struct CalVector *CalVector_New(void);
   CAL3D_WRAPPER_API float CalVector_Normalize(struct CalVector *self);
   CAL3D_WRAPPER_API void CalVector_Op_Add(struct CalVector *pResult, struct 
CalVector *pV, struct CalVector *pU);
   CAL3D_WRAPPER_API void CalVector_Op_Subtract(struct CalVector *pResult, 
struct CalVector *pV, struct CalVector *pU);
diff -u -p -r -N -x .DS_Store -x build -x setup.py -x _ode.c -x _soya.c -x 
opengl.c -x sdlconst.c Soya-0.13/chunk.c Soya-0.13-new/chunk.c
--- Soya-0.13/chunk.c   2006-06-26 00:41:13.000000000 +1200
+++ Soya-0.13-new/chunk.c       2007-03-30 14:01:41.000000000 +1200
@@ -472,4 +472,3 @@ float chunk_swap_float(float f) {
   dat2.b[3] = dat1.b[0];
   return dat2.f;
 }
-
diff -u -p -r -N -x .DS_Store -x build -x setup.py -x _ode.c -x _soya.c -x 
opengl.c -x sdlconst.c Soya-0.13/chunk.pxd Soya-0.13-new/chunk.pxd
--- Soya-0.13/chunk.pxd 2006-07-02 20:40:41.000000000 +1200
+++ Soya-0.13-new/chunk.pxd     2007-10-08 00:48:14.000000000 +1300
@@ -17,19 +17,13 @@
 # along with this program; if not, write to the Free Software
 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 
-ctypedef struct Chunk:
-       void* content
-       int   nb
-       int   max
-       
 cdef extern from "chunk.h":
-#   cdef struct _Chunk:
-#     void* content
-#     int   nb
-#     int   max
-               
-#   ctypedef _Chunk Chunk
-               
+
+       ctypedef struct Chunk:
+               void* content
+               int   nb
+               int   max
+
        Chunk*    chunk_new         ()
        int       chunk_dealloc     (Chunk*)
        int       chunk_check_error ()
@@ -50,8 +44,8 @@ cdef extern from "chunk.h":
        int       drop_chunk        (Chunk*)
 
 
-       int   chunk_add_chars_endian_safe (Chunk*, char* , int)
-       int   chunk_get_chars_endian_safe (Chunk*, char* , int)
+       int   chunk_add_chars_endian_safe (Chunk*, void* , int)
+       int   chunk_get_chars_endian_safe (Chunk*, void* , int)
 
        int   chunk_add_ints_endian_safe  (Chunk*, int*  , int)
        int   chunk_get_ints_endian_safe  (Chunk*, int*  , int)
diff -u -p -r -N -x .DS_Store -x build -x setup.py -x _ode.c -x _soya.c -x 
opengl.c -x sdlconst.c Soya-0.13/definitions/base.pxd 
Soya-0.13-new/definitions/base.pxd
--- Soya-0.13/definitions/base.pxd      2006-08-24 05:23:35.000000000 +1200
+++ Soya-0.13-new/definitions/base.pxd  2007-03-30 14:01:41.000000000 +1200
@@ -237,29 +237,30 @@ cdef enum:
        NETWORK_STATE_HAS_POSITION = 1 << 0
        NETWORK_STATE_HAS_SCALING  = 1 << 1
 
-ctypedef struct Frustum:
-## Frustum
-## points :
-## 15-------12
-## |\       /|
-## | \     / |
-## |  3---0  |
-## |  |   |  |
-## |  6---9  |
-## | /     \ |
-## |/       \|
-## 18-------21
-## 
-## plane[ 0] : front plane
-## plane[ 4] : top plane
-## plane[ 8] : bottom plane
-## plane[12] : right plane
-## plane[16] : left plane
-## plane[20] : back plane
-## plane normals are oriented toward the exterior of the frustum
-       float position[3]  # camera position (x,y,z)
-       float points  [24] # points : (x,y,z) * 8
-       float planes  [24] # planes equation : (a,b,c,d) * 6
+cdef extern from "matrix.h":
+       ctypedef struct Frustum:
+       ## Frustum
+       ## points :
+       ## 15-------12
+       ## |\       /|
+       ## | \     / |
+       ## |  3---0  |
+       ## |  |   |  |
+       ## |  6---9  |
+       ## | /     \ |
+       ## |/       \|
+       ## 18-------21
+       ## 
+       ## plane[ 0] : front plane
+       ## plane[ 4] : top plane
+       ## plane[ 8] : bottom plane
+       ## plane[12] : right plane
+       ## plane[16] : left plane
+       ## plane[20] : back plane
+       ## plane normals are oriented toward the exterior of the frustum
+               float position[3]  # camera position (x,y,z)
+               float points  [24] # points : (x,y,z) * 8
+               float planes  [24] # planes equation : (a,b,c,d) * 6
 
 cdef struct _Pack: # See material.pyx for doc and comments
        int      option
diff -u -p -r -N -x .DS_Store -x build -x setup.py -x _ode.c -x _soya.c -x 
opengl.c -x sdlconst.c Soya-0.13/definitions/model/terrain.pxd 
Soya-0.13-new/definitions/model/terrain.pxd
--- Soya-0.13/definitions/model/terrain.pxd     2006-08-24 05:23:34.000000000 
+1200
+++ Soya-0.13-new/definitions/model/terrain.pxd 2007-03-30 14:01:41.000000000 
+1200
@@ -54,7 +54,7 @@ cdef struct _TerrainTri:
        int         texcoord_type # 0: use terrainvertex texcoord, 1, 2, 3, 4: 
the tri use a texture generated (from blend_material), and the texcoord are 
(0.0, 0.0) - (1.0, 1.0)
 ctypedef _TerrainTri TerrainTri
 
-ctypedef void (*terrain_drawColor_FUNC   )(float*)
+ctypedef void (*terrain_drawColor_FUNC   )(GLfloat*)
 ctypedef void (*terrain_disableColor_FUNC)()
 ctypedef void (*terrain_enableColor_FUNC )()
 
diff -u -p -r -N -x .DS_Store -x build -x setup.py -x _ode.c -x _soya.c -x 
opengl.c -x sdlconst.c Soya-0.13/definitions/ode/ctype.pxd 
Soya-0.13-new/definitions/ode/ctype.pxd
--- Soya-0.13/definitions/ode/ctype.pxd 2007-01-12 04:26:50.000000000 +1300
+++ Soya-0.13-new/definitions/ode/ctype.pxd     2007-03-30 14:01:41.000000000 
+1200
@@ -15,6 +15,8 @@
 # author:
 #      edited by Marmoute - Pierre-Yves David - [EMAIL PROTECTED]
 
+cdef extern from "ode_check.h":
+       pass
 
 cdef extern from "ode/ode.h":
 
diff -u -p -r -N -x .DS_Store -x build -x setup.py -x _ode.c -x _soya.c -x 
opengl.c -x sdlconst.c Soya-0.13/init.pyx Soya-0.13-new/init.pyx
--- Soya-0.13/init.pyx  2006-07-02 20:40:41.000000000 +1200
+++ Soya-0.13-new/init.pyx      2007-03-30 14:01:41.000000000 +1200
@@ -233,7 +233,7 @@ def set_video(int width, int height, int
        renderer.screen_width  = width
        renderer.screen_height = height
        # Information about the current video settings
-       info = SDL_GetVideoInfo()
+       info = <SDL_VideoInfo*> SDL_GetVideoInfo() # cast for constness 
adjustment
        if info == NULL:
                s = "Video query failed : %s" % SDL_GetError()
                print s
diff -u -p -r -N -x .DS_Store -x build -x setup.py -x _ode.c -x _soya.c -x 
opengl.c -x sdlconst.c Soya-0.13/model/model.pyx Soya-0.13-new/model/model.pyx
--- Soya-0.13/model/model.pyx   2007-01-20 07:01:06.000000000 +1300
+++ Soya-0.13-new/model/model.pyx       2007-10-08 00:50:09.000000000 +1300
@@ -78,10 +78,10 @@ cdef class _Model(_CObj):
 #  int      normal
 #  int      v[4] # v[3] is optional (only for quad, unused for triangle)
        
-cdef int face_vertices_number(ModelFace* self):
-       if   self.option & FACE_TRIANGLE: return 3
-       elif self.option & FACE_QUAD:     return 4
-       return 0
+#U#cdef int face_vertices_number(ModelFace* self):
+#U#    if   self.option & FACE_TRIANGLE: return 3
+#U#    elif self.option & FACE_QUAD:     return 4
+#U#    return 0
 
 
 cdef class _SimpleModel(_Model):
@@ -736,7 +736,7 @@ and if the angle between their 2 faces i
                # find face neighbors
                if self._option & MODEL_NEIGHBORS:
                        self._neighbors      = <int *> malloc(self._nb_faces * 
4 * sizeof(int ))
-                       self._neighbors_side = <char*> malloc(self._nb_faces * 
4 * sizeof(char))
+                       self._neighbors_side = <signed char*> 
malloc(self._nb_faces * 4 * sizeof(char))
                        self._compute_face_neighbors(faces, vertex2ivertex, 
ivertex2vertices, self._neighbors, self._neighbors_side)
                        
                # find face simple neighbors (doesn't take angle into account)
@@ -744,7 +744,7 @@ and if the angle between their 2 faces i
                        # Re-identify vertices, because for simple neighbors we 
don't take angle into account
                        vertex2ivertex, ivertex2vertices = 
self._identify_vertices(faces, 360.0)
                        self._simple_neighbors      = <int *> 
malloc(self._nb_faces * 4 * sizeof(int ))
-                       self._simple_neighbors_side = <char*> 
malloc(self._nb_faces * 4 * sizeof(char))
+                       self._simple_neighbors_side = <signed char*> 
malloc(self._nb_faces * 4 * sizeof(char))
                        self._compute_face_neighbors(faces, vertex2ivertex, 
ivertex2vertices, self._simple_neighbors, self._simple_neighbors_side)
                        
                # TO DO ?
diff -u -p -r -N -x .DS_Store -x build -x setup.py -x _ode.c -x _soya.c -x 
opengl.c -x sdlconst.c Soya-0.13/model/terrain.pyx 
Soya-0.13-new/model/terrain.pyx
--- Soya-0.13/model/terrain.pyx 2006-11-02 04:08:38.000000000 +1300
+++ Soya-0.13-new/model/terrain.pyx     2007-03-30 15:16:01.000000000 +1200
@@ -203,19 +203,19 @@ cdef void terrain_get_height_at_factors(
        k[0] = (- (x - ptr[0]) * w[1] + (z - ptr[2]) * w[0]) * q
 
 
-cdef void terrain_drawColor_radeon(float* vect):
-       glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, vect)
+#U#cdef void terrain_drawColor_radeon(float* vect):
+#U#    glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, vect)
        
 cdef void noop():
        pass
 
-cdef void terrain_disableColor_radeon():
-       #glColor4fv(white) # XXX really needed ?
-       glDisable(GL_COLOR_MATERIAL)
-       glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, white)
+#U#cdef void terrain_disableColor_radeon():
+#U#    #glColor4fv(white) # XXX really needed ?
+#U#    glDisable(GL_COLOR_MATERIAL)
+#U#    glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, white)
        
-cdef void terrain_enableColor_radeon():
-       glEnable(GL_COLOR_MATERIAL)
+#U#cdef void terrain_enableColor_radeon():
+#U#    glEnable(GL_COLOR_MATERIAL)
 
 #ctypedef void (*terrain_drawColor_FUNC   )(float*)
 #ctypedef void (*terrain_disableColor_FUNC)()
@@ -225,7 +225,7 @@ cdef terrain_drawColor_FUNC    terrain_d
 cdef terrain_disableColor_FUNC terrain_disableColor
 cdef terrain_enableColor_FUNC  terrain_enableColor
 
-terrain_drawColor    = glColor4fv
+terrain_drawColor    = <terrain_drawColor_FUNC> glColor4fv # Const cast
 terrain_disableColor = noop
 terrain_enableColor  = noop
 
@@ -749,6 +749,9 @@ You MUST call this method after the terr
                cshadow_color[2] = shadow_color[2]
                cshadow_color[3] = shadow_color[3]
                
+               scolor = 0 # Greg Ewing, March 2007 ([EMAIL PROTECTED])
+               wcolor = 0 # Uninitialised variables. POSSIBLE BUG.
+               
                # initialize vertex colors if needed
                old_colors = self._colors
                self._colors = NULL
@@ -1143,6 +1146,9 @@ You MUST call this method after the terr
                cur = renderer.data.nb
                pack = <Pack*> chunk_get_ptr(renderer.data)
                
+               index = 0 # Greg Ewing, March 2007 ([EMAIL PROTECTED])
+                         # Uninitialised variable. POSSIBLE BUG.
+               
                if   renderer.state == RENDERER_STATE_OPAQUE:
                        while pack:
                                (<_Material> (pack.material_id))._activate()
@@ -1461,10 +1467,10 @@ You MUST call this method after the terr
                                                patch = self._patchs + i
                                                if not sphere_raypick(data, 
patch.sphere): continue
                                                # raypick on tris with full 
accuracy
-                                               if 
self._full_raypick_rect_b(<int> patch.tri_top   .v3.coord[0] / 
self._scale_factor,
-                                                                               
                                                                                
 <int> patch.tri_top   .v3.coord[2] / self._scale_factor,
-                                                                               
                                                                                
 <int> patch.tri_bottom.v3.coord[0] / self._scale_factor,
-                                                                               
                                                                                
 <int> patch.tri_bottom.v3.coord[2] / self._scale_factor,
+                                               if 
self._full_raypick_rect_b(<int> (patch.tri_top   .v3.coord[0] / 
self._scale_factor),
+                                                                               
                                                                                
 <int> (patch.tri_top   .v3.coord[2] / self._scale_factor),
+                                                                               
                                                                                
 <int> (patch.tri_bottom.v3.coord[0] / self._scale_factor),
+                                                                               
                                                                                
 <int> (patch.tri_bottom.v3.coord[2] / self._scale_factor),
                                                                                
                                                                                
 data, raypick_data.option): return 1
                                else:
                                        if raypick_data.option & 
RAYPICK_HALF_LINE:
diff -u -p -r -N -x .DS_Store -x build -x setup.py -x _ode.c -x _soya.c -x 
opengl.c -x sdlconst.c Soya-0.13/ode/collision.pyx 
Soya-0.13-new/ode/collision.pyx
--- Soya-0.13/ode/collision.pyx 2006-08-24 05:24:14.000000000 +1200
+++ Soya-0.13-new/ode/collision.pyx     2007-03-30 15:12:40.000000000 +1200
@@ -101,50 +101,50 @@ def collide(_Geom geom1, _Geom geom2, in
 
        return res
 
-cdef int collide_edge(GLfloat *A, GLfloat *B,
-                        GLfloat *AB, GLfloat *normalA,
-                        GLfloat *normalB,
-                        dGeomID o1, dGeomID o2, int max_contacts, 
-                        int flags, dContactGeom *contact):
-               """Check for collision with one triangle edge. Uses a normal
-               that's halfway between the precomputed normals of the vertices
-               that make up the edge."""
-               cdef dGeomID _land_ray   # Reusable ray geom #XXX misplaced
-
-
-               cdef int n, num_contacts, nA, nB
-               cdef dContactGeom contactA, contactB
-               cdef _Geom other
-               _land_ray = dCreateRay(NULL, 1.0)#XXX misplaced
-
-               # First, do one direction
-               dGeomRaySetLength(_land_ray, point_distance_to(A, B))
-               dGeomRaySet(_land_ray, A[0], A[1], A[2], AB[0], AB[1], AB[2])
-               nA = dCollide(_land_ray, o2, flags, &contactA, 
sizeof(dContactGeom))
-       
-
-               # Then the other
-               dGeomRaySet(_land_ray, B[0], B[1], B[2], -AB[0], -AB[1], -AB[2])
-               nB = dCollide(_land_ray, o2, flags, &contactB, 
sizeof(dContactGeom))
-               dGeomDestroy(_land_ray)
-               
-               if nA and nB:
-                               contact.pos[0] = (contactA.pos[0] + 
contactB.pos[0]) / 2.0
-                               contact.pos[1] = (contactA.pos[1] + 
contactB.pos[1]) / 2.0
-                               contact.pos[2] = (contactA.pos[2] + 
contactB.pos[2]) / 2.0
-
-                               # D
-                               contact.normal[0] = (normalA[0] + normalB[0]) / 
2.0
-                               contact.normal[1] = (normalA[1] + normalB[1]) / 
2.0
-                               contact.normal[2] = (normalA[2] + normalB[2]) / 
2.0
-
-                               # Get the depth of the contact point in the 
colliding geom
-                               other = <_Geom>dGeomGetData(o2)
-                               contact.depth = 
other._point_depth(contact.pos[0], contact.pos[1], 
-                                                                               
                                                                                
         contact.pos[2])
-                               contact.g1 = o1
-                               contact.g2 = o2
-
-                               return 1
-
-               return 0
+#U#cdef int collide_edge(GLfloat *A, GLfloat *B,
+#U#                     GLfloat *AB, GLfloat *normalA,
+#U#                     GLfloat *normalB,
+#U#                     dGeomID o1, dGeomID o2, int max_contacts, 
+#U#                     int flags, dContactGeom *contact):
+#U#            """Check for collision with one triangle edge. Uses a normal
+#U#            that's halfway between the precomputed normals of the vertices
+#U#            that make up the edge."""
+#U#            cdef dGeomID _land_ray   # Reusable ray geom #XXX misplaced
+#U#
+#U#
+#U#            cdef int n, num_contacts, nA, nB
+#U#            cdef dContactGeom contactA, contactB
+#U#            cdef _Geom other
+#U#            _land_ray = dCreateRay(NULL, 1.0)#XXX misplaced
+#U#
+#U#            # First, do one direction
+#U#            dGeomRaySetLength(_land_ray, point_distance_to(A, B))
+#U#            dGeomRaySet(_land_ray, A[0], A[1], A[2], AB[0], AB[1], AB[2])
+#U#            nA = dCollide(_land_ray, o2, flags, &contactA, 
sizeof(dContactGeom))
+#U#    
+#U#
+#U#            # Then the other
+#U#            dGeomRaySet(_land_ray, B[0], B[1], B[2], -AB[0], -AB[1], -AB[2])
+#U#            nB = dCollide(_land_ray, o2, flags, &contactB, 
sizeof(dContactGeom))
+#U#            dGeomDestroy(_land_ray)
+#U#            
+#U#            if nA and nB:
+#U#                            contact.pos[0] = (contactA.pos[0] + 
contactB.pos[0]) / 2.0
+#U#                            contact.pos[1] = (contactA.pos[1] + 
contactB.pos[1]) / 2.0
+#U#                            contact.pos[2] = (contactA.pos[2] + 
contactB.pos[2]) / 2.0
+#U#
+#U#                            # D
+#U#                            contact.normal[0] = (normalA[0] + normalB[0]) / 
2.0
+#U#                            contact.normal[1] = (normalA[1] + normalB[1]) / 
2.0
+#U#                            contact.normal[2] = (normalA[2] + normalB[2]) / 
2.0
+#U#
+#U#                            # Get the depth of the contact point in the 
colliding geom
+#U#                            other = <_Geom>dGeomGetData(o2)
+#U#                            contact.depth = 
other._point_depth(contact.pos[0], contact.pos[1], 
+#U#                                                                            
                                                                                
         contact.pos[2])
+#U#                            contact.g1 = o1
+#U#                            contact.g2 = o2
+#U#
+#U#                            return 1
+#U#
+#U#            return 0
diff -u -p -r -N -x .DS_Store -x build -x setup.py -x _ode.c -x _soya.c -x 
opengl.c -x sdlconst.c Soya-0.13/ode/contact.pyx Soya-0.13-new/ode/contact.pyx
--- Soya-0.13/ode/contact.pyx   2006-10-16 21:52:31.000000000 +1300
+++ Soya-0.13-new/ode/contact.pyx       2007-10-08 22:16:19.000000000 +1300
@@ -19,7 +19,7 @@ cdef class Contact:
                """
                
 
-               def __new__(self, *args, **kw):
+               def __cinit__(self, *args, **kw):
                                self._contact.surface.mode = ContactBounce
                                self._contact.surface.mu   = dInfinity
 
diff -u -p -r -N -x .DS_Store -x build -x setup.py -x _ode.c -x _soya.c -x 
opengl.c -x sdlconst.c Soya-0.13/ode/geom-terrain.pyx 
Soya-0.13-new/ode/geom-terrain.pyx
--- Soya-0.13/ode/geom-terrain.pyx      2006-08-24 05:24:14.000000000 +1200
+++ Soya-0.13-new/ode/geom-terrain.pyx  2007-03-30 15:13:26.000000000 +1200
@@ -455,8 +455,8 @@ cdef dColliderFn * _TerrainGetColliderFn
                raise RuntimeError("TerrainGeom can't collide with non 
primitive Geom")
 
 
-cdef int _TerrainAABBTest(dGeomID o1, dGeomID o2, dReal aabb2[6]):
-               pass
+#U#cdef int _TerrainAABBTest(dGeomID o1, dGeomID o2, dReal aabb2[6]):
+#U#            pass
 
 
 cdef dGeomClass dTerrainGeomClass
diff -u -p -r -N -x .DS_Store -x build -x setup.py -x _ode.c -x _soya.c -x 
opengl.c -x sdlconst.c Soya-0.13/ode_check.h Soya-0.13-new/ode_check.h
--- Soya-0.13/ode_check.h       1970-01-01 12:00:00.000000000 +1200
+++ Soya-0.13-new/ode_check.h   2007-03-30 14:01:41.000000000 +1200
@@ -0,0 +1,14 @@
+/*
+ *   Check that ODE is configured to use floats and not doubles.
+ *   Otherwise chunk_add_float_endian_safe gets passed pointers
+ *   of the wrong type.
+ *
+ *   Greg Ewing, March 2007
+ *   [EMAIL PROTECTED]
+ */
+
+#include <ode/ode.h>
+
+#ifndef dSINGLE
+#error Soya requires ODE to be configured with PRECISION=SINGLE
+#endif
diff -u -p -r -N -x .DS_Store -x build -x setup.py -x _ode.c -x _soya.c -x 
opengl.c -x sdlconst.c Soya-0.13/opengl.pyx Soya-0.13-new/opengl.pyx
--- Soya-0.13/opengl.pyx        2006-07-02 20:40:41.000000000 +1200
+++ Soya-0.13-new/opengl.pyx    2007-03-30 16:36:22.000000000 +1200
@@ -22,6 +22,7 @@ include "c.pxd"
 include "python.pxd"
 
 cimport c_opengl
+from c_opengl cimport GLenum, GLuint
 
 GL_FALSE = c_opengl.GL_FALSE
 GL_TRUE = c_opengl.GL_TRUE
@@ -844,9 +845,8 @@ def glScalef(float x,float y,float z):
        c_opengl.glScalef(x,y,z)
 
 def glGenTextures(int n):
-       cdef unsigned int ret
+       cdef GLuint ret
        c_opengl.glGenTextures(n,&ret)
-
        return ret
  
 def glBindTexture(int target, unsigned int texture):
@@ -864,7 +864,7 @@ def glAccum(int value, float coef):
 def glMatrixMode(int mode):
        c_opengl.glMatrixMode(mode)
        
-def glMultMatrix(float mode):
+def glMultMatrix(GLenum mode):
        c_opengl.glMatrixMode(mode)
        
 def glTexParameteri(int target, int param, int value):
diff -u -p -r -N -x .DS_Store -x build -x setup.py -x _ode.c -x _soya.c -x 
opengl.c -x sdlconst.c Soya-0.13/sound/sound.pyx Soya-0.13-new/sound/sound.pyx
--- Soya-0.13/sound/sound.pyx   2006-08-21 02:02:39.000000000 +1200
+++ Soya-0.13-new/sound/sound.pyx       2007-10-08 22:30:05.000000000 +1300
@@ -155,7 +155,7 @@ cdef class _Sound(_CObj):
        cdef        int    _format
        cdef        int    _framerate
        
-       def __new__(self, *args, **kargs):
+       def __cinit__(self, *args, **kargs):
                self._buffers = []
                
        def __dealloc__(self):
@@ -234,6 +234,10 @@ cdef class _OGGVorbisSound(_Sound):
                elif self._format == AL_FORMAT_MONO16  : size = 16384
                elif self._format == AL_FORMAT_STEREO8 : size = 16384
                elif self._format == AL_FORMAT_MONO8   : size = 16384 / 2
+               # Greg Ewing, March 2007 ([EMAIL PROTECTED])
+               # Else clause added to fix uninitialised variable warning
+               else:
+                       raise ValueError("Unknown size")
 
                # Catching exception seems to memory leak in pyrex
                #try:    self._file.pcm_seek(i * 8192)
@@ -285,7 +289,7 @@ cdef class _SoundPlayer(CoordSyst):
        cdef int    _current_buffer_id
        cdef float  _old_pos[3]
        
-       def __new__(self, *args, **kargs):
+       def __cinit__(self, *args, **kargs):
                alGenSources(1, &self._source)
                alSourcef(self._source, AL_REFERENCE_DISTANCE, 
_reference_distance)
                
diff -u -p -r -N -x .DS_Store -x build -x setup.py -x _ode.c -x _soya.c -x 
opengl.c -x sdlconst.c Soya-0.13/soya3d/body.pyx Soya-0.13-new/soya3d/body.pyx
--- Soya-0.13/soya3d/body.pyx   2006-12-05 08:27:08.000000000 +1300
+++ Soya-0.13-new/soya3d/body.pyx       2007-03-30 14:01:41.000000000 +1200
@@ -71,12 +71,12 @@ cdef class _Body(CoordSyst):
                        # pos            vector (3)   # XXX ignored for the 
moment
                        # quaternion     quaternion   # XXX use a self-relativ 
cordinate later
                        # linear speed   vector (3)   # XXX idem
-                       v = dBodyGetLinearVel(bid)
+                       v = <dReal*> dBodyGetLinearVel(bid) # Cast for const 
correction
                        vector_by_matrix(vector, 
self._ode_parent._root_matrix())
                        vector_by_matrix(vector, self._inverted_root_matrix())
                        chunk_add_floats_endian_safe(ode_chunk,v,3)
                        # angular speed  vector (3)   # XXX idem
-                       v = dBodyGetAngularVel(bid)
+                       v = <dReal*> dBodyGetAngularVel(bid) # Cast for const 
correction
                        vector_by_matrix(v, self._ode_parent._root_matrix())
                        vector_by_matrix(v, self._inverted_root_matrix())
                        chunk_add_floats_endian_safe(ode_chunk,v,3)
@@ -110,7 +110,7 @@ cdef class _Body(CoordSyst):
                                if self._option & BODY_HAS_ODE:
                                        self.__ode_data = cstate[3]
                                        self.joints = cstate[4]
-                                       self._option & BODY_HAS_ODE
+                                       #self._option & BODY_HAS_ODE
                                        self._option = self._option & 
~BODY_HAS_ODE
                                else:
                                        self.__ode_data = None
@@ -464,13 +464,17 @@ It also resets the cycle animation time 
                        
                                                
        cdef void _sync_ode_position(self):
-               cdef GLfloat * m
+               # Greg Ewing, March 2007 ([EMAIL PROTECTED])
+               # multiply_matrix was being passed an uninitialised pointer
+               cdef GLfloat ma[19]
+               cdef GLfloat *m
                cdef dMatrix3  R
                cdef dReal * q
                
                if self.parent is self.ode_parent:
                        m = self._matrix
                else:
+                       m = ma
                        multiply_matrix(m, 
self._ode_parent._inverted_root_matrix(), self._root_matrix())
                R[0]  = m[0]
                R[1]  = m[4]
@@ -490,13 +494,13 @@ It also resets the cycle animation time 
                dBodySetPosition(self._OdeBodyID, m[12], m[13], m[14])
                dBodySetRotation(self._OdeBodyID, R)
                
-               q = dBodyGetQuaternion(self._OdeBodyID)
+               q = <dReal*> dBodyGetQuaternion(self._OdeBodyID) # Cast for 
const correction
                self._q[0] = q[1]
                self._q[1] = q[2]
                self._q[2] = q[3]
                self._q[3] = q[0]
 
-               q = dBodyGetPosition(self._OdeBodyID)
+               q = <dReal*> dBodyGetPosition(self._OdeBodyID) # Cast for const 
correction
                self._p[0] = q[0]
                self._p[1] = q[1]
                self._p[2] = q[2]
@@ -518,13 +522,13 @@ It also resets the cycle animation time 
                        self._t = 0
                        if self._option & BODY_ODE_INVALIDE_POS:
                                self._sync_ode_position()
-                       q = dBodyGetQuaternion(self._OdeBodyID)
+                       q = <dReal*> dBodyGetQuaternion(self._OdeBodyID) # Cast 
for const correction
                        self._q[0] = q[1]
                        self._q[1] = q[2]
                        self._q[2] = q[3]
                        self._q[3] = q[0]
        
-                       q = dBodyGetPosition(self._OdeBodyID)
+                       q = <dReal*> dBodyGetPosition(self._OdeBodyID) # Cast 
for const correction
                        self._p[0] = q[0]
                        self._p[1] = q[1]
                        self._p[2] = q[2]
@@ -560,8 +564,8 @@ It also resets the cycle animation time 
                                        #saving the scale of the object
                                        #XXX optimisable
                                        
memcpy(zoom,&self._matrix[16],3*sizeof(float))
-                                       r = dBodyGetQuaternion(self._OdeBodyID)
-                                       p = dBodyGetPosition(self._OdeBodyID)
+                                       r = <dReal*> 
dBodyGetQuaternion(self._OdeBodyID) # Cast for const correction
+                                       p = <dReal*> 
dBodyGetPosition(self._OdeBodyID) # Cast for const correction
                                        t = 1.0 - self._t
                
                                        # Linearly interpolate between the 
current quaternion and the last
diff -u -p -r -N -x .DS_Store -x build -x setup.py -x _ode.c -x _soya.c -x 
opengl.c -x sdlconst.c Soya-0.13/soya3d/camera.pyx 
Soya-0.13-new/soya3d/camera.pyx
--- Soya-0.13/soya3d/camera.pyx 2006-08-09 09:17:00.000000000 +1200
+++ Soya-0.13-new/soya3d/camera.pyx     2007-10-08 22:29:04.000000000 +1300
@@ -25,7 +25,7 @@ cdef class _Camera(CoordSyst):
        #cdef int      _viewport[4]
        #cdef          _master
        
-       def __new__(self, *args, **kargs):
+       def __cinit__(self, *args, **kargs):
                self.__raypick_data     = -1
                self._render_matrix[15] = 1.0
                self._frustum           = <Frustum*> malloc(sizeof(Frustum))
diff -u -p -r -N -x .DS_Store -x build -x setup.py -x _ode.c -x _soya.c -x 
opengl.c -x sdlconst.c Soya-0.13/soya3d/coordsyst.pyx 
Soya-0.13-new/soya3d/coordsyst.pyx
--- Soya-0.13/soya3d/coordsyst.pyx      2007-01-07 05:25:01.000000000 +1300
+++ Soya-0.13-new/soya3d/coordsyst.pyx  2007-10-08 22:28:01.000000000 +1300
@@ -83,7 +83,7 @@ cdef class CoordSyst(Position):
        #cdef int _option
        #cdef int _auto_static_count
        
-       def __new__(self, *args, **kargs):
+       def __cinit__(self, *args, **kargs):
                self.__raypick_data     = -1
                self._auto_static_count = 3
                
diff -u -p -r -N -x .DS_Store -x build -x setup.py -x _ode.c -x _soya.c -x 
opengl.c -x sdlconst.c Soya-0.13/soya3d/light.pyx Soya-0.13-new/soya3d/light.pyx
--- Soya-0.13/soya3d/light.pyx  2006-08-10 08:59:42.000000000 +1200
+++ Soya-0.13-new/soya3d/light.pyx      2007-10-08 22:28:34.000000000 +1300
@@ -33,7 +33,7 @@ cdef class _Light(CoordSyst):
        ##cdef int _used
        #cdef _static_shadow_displaylists
        
-       def __new__(self, *args, **kargs):
+       def __cinit__(self, *args, **kargs):
                self.__raypick_data              = -1
                self._id                         = -1
                self._static_shadow_displaylists = weakref.WeakKeyDictionary()
@@ -401,11 +401,11 @@ model computation time)."""
                        glEnable(GL_LIGHT0 + light._id)
                        light._gl_id_enabled = 1
                        
-cdef void disable_deep_lights():
-       """Disable all non top level lights."""
-       cdef _Light light
-       for light in LIGHTS:
-               if (not light is None) and (light._option & LIGHT_TOP_LEVEL) 
and (light._gl_id_enabled == 1):
-                       glDisable(GL_LIGHT0 + i)
-                       light._gl_id_enabled = 0
+#U#cdef void disable_deep_lights():
+#U#    """Disable all non top level lights."""
+#U#    cdef _Light light
+#U#    for light in LIGHTS:
+#U#            if (not light is None) and (light._option & LIGHT_TOP_LEVEL) 
and (light._gl_id_enabled == 1):
+#U#                    glDisable(GL_LIGHT0 + i)
+#U#                    light._gl_id_enabled = 0
                        
diff -u -p -r -N -x .DS_Store -x build -x setup.py -x _ode.c -x _soya.c -x 
opengl.c -x sdlconst.c Soya-0.13/soya3d/world.pyx Soya-0.13-new/soya3d/world.pyx
--- Soya-0.13/soya3d/world.pyx  2007-01-20 07:01:06.000000000 +1300
+++ Soya-0.13-new/soya3d/world.pyx      2007-10-09 19:41:28.000000000 +1300
@@ -417,8 +417,14 @@ children, + the children of its children
        #  return item in self.children
        def __getitem__(self, name):
                cdef CoordSyst item, i
+               cdef object name_attr
                for item in self.children:
-                       if getattr(item, "name", "") == name: return item
+                       try:
+                               name_attr = getattr(item, "name")
+                       except:
+                               name_attr = ""
+                       if name_attr == name:
+                               return item
                for item in self.children:
                        if isinstance(item, _World):
                                i = item[name]
diff -u -p -r -N -x .DS_Store -x build -x setup.py -x _ode.c -x _soya.c -x 
opengl.c -x sdlconst.c Soya-0.13/text/text.pyx Soya-0.13-new/text/text.pyx
--- Soya-0.13/text/text.pyx     2006-07-02 20:40:41.000000000 +1200
+++ Soya-0.13-new/text/text.pyx 2007-03-30 14:01:41.000000000 +1200
@@ -152,7 +152,7 @@ initialized to make OpenGL calls."""
                for j from 0 <= j < bitmap.rows: # get pixels
                        memcpy(self._pixels + self._current_x + 
(self._current_y + j) * MAX_TEXTURE_SIZE, bitmap.buffer + bitmap.pitch * j, 
bitmap.pitch)
                        
-               self._current_x = self._current_x + glyph.width + 5
+               self._current_x = self._current_x + <int>glyph.width + 5
                
                glBindTexture(GL_TEXTURE_2D, self._tex_id)
                glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR)
_______________________________________________
Soya-user mailing list
Soya-user@gna.org
https://mail.gna.org/listinfo/soya-user

Reply via email to