--- deliantra/Deliantra-Client/Client.xs 2007/04/21 09:25:31 1.186 +++ deliantra/Deliantra-Client/Client.xs 2007/04/26 23:51:02 1.191 @@ -58,6 +58,8 @@ # define PARACHUTE 0 #endif +static AV *texture_av; + static struct { #define GL_FUNC(ptr,name) ptr name; @@ -402,17 +404,12 @@ #define SDLK_MODIFIER_MIN 300 #define SDLK_MODIFIER_MAX 314 -static AV *texture_av; - MODULE = CFPlus PACKAGE = CFPlus PROTOTYPES: ENABLE BOOT: { - texture_av = newAV (); - AvREAL_off (texture_av); - HV *stash = gv_stashpv ("CFPlus", 1); static const struct { const char *name; @@ -621,10 +618,13 @@ ); if (RETVAL) { + av_clear (texture_av); + SDL_WM_SetCaption ("Crossfire+ Client " VERSION, "Crossfire+"); # define GL_FUNC(ptr,name) gl.name = (ptr)SDL_GL_GetProcAddress ("gl" # name); # include "glfunc.h" # undef GL_FUNC + } OUTPUT: RETVAL @@ -1398,12 +1398,12 @@ if (dx > 0) map_blank (self, self->x, self->y, dx, self->h); else if (dx < 0) - map_blank (self, self->x + self->w + dx + 1, self->y, -dx, self->h); + map_blank (self, self->x + self->w + dx, self->y, -dx, self->h); if (dy > 0) map_blank (self, self->x, self->y, self->w, dy); else if (dy < 0) - map_blank (self, self->x, self->y + self->h + dy + 1, self->w, -dy); + map_blank (self, self->x, self->y + self->h + dy, self->w, -dy); self->ox += dx; self->x += dx; self->oy += dy; self->y += dy; @@ -1742,7 +1742,7 @@ if (!(bits & 0x1000) && skey->level == level - && level >= smooth_max [skey->x][skey->y]) + && level > smooth_max [skey->x][skey->y]) { maptex tex = self->tex [skey->tile]; int px = (((int)skey->x) - 1) * T; @@ -2217,6 +2217,9 @@ for (civ = const_iv + sizeof (const_iv) / sizeof (const_iv [0]); civ-- > const_iv; ) newCONSTSUB (stash, (char *)civ->name, newSViv (civ->iv)); + + texture_av = newAV (); + AvREAL_off (texture_av); } char * @@ -2378,7 +2381,7 @@ { GLuint name; if (AvFILL (texture_av) >= 0) - name = (GLuint)av_pop (texture_av); + name = (GLuint)(size_t)av_pop (texture_av); else glGenTextures (1, &name); RETVAL = name; @@ -2391,10 +2394,10 @@ { /* make a half-assed attempt at returning the memory used by the texture */ /* textures are frequently being reused by cfplus anyway */ - glBindTexture (GL_TEXTURE_2D, name); - glTexImage2D (GL_TEXTURE_2D, 0, GL_ALPHA, 0, 0, 0, GL_ALPHA, GL_UNSIGNED_BYTE, 0); - av_push (texture_av, (SV *)name); - /*glDeleteTextures (1, &name_);*/ + /*glBindTexture (GL_TEXTURE_2D, name);*/ + /*glTexImage2D (GL_TEXTURE_2D, 0, GL_ALPHA, 0, 0, 0, GL_ALPHA, GL_UNSIGNED_BYTE, 0);*/ + av_push (texture_av, (SV *)(size_t)name); + { GLuint name_ = name; glDeleteTextures (1, &name_); } } int glGenList ()