X-Git-Url: http://git.localhorst.tv/?a=blobdiff_plain;f=src%2Fapp%2Fapp.cpp;h=4d2d2c098afa17bcde96083ddf384aeddacaa86b;hb=2e3774eb3f2d5d23a08731175b168566457e2192;hp=6e7201a6f9b2239405255d2413aa0f06dca35007;hpb=e821b85cf13376b11d125bdf5da4f16b20acf2e2;p=blank.git diff --git a/src/app/app.cpp b/src/app/app.cpp index 6e7201a..4d2d2c0 100644 --- a/src/app/app.cpp +++ b/src/app/app.cpp @@ -385,32 +385,66 @@ CubeMap AssetLoader::LoadCubeMap(const string &name) const { string front = full + "-front.png"; CubeMap cm; + cm.Bind(); SDL_Surface *srf; if (!(srf = IMG_Load(right.c_str()))) throw SDLError("IMG_Load"); - cm.Data(CubeMap::RIGHT, *srf); + try { + cm.Data(CubeMap::RIGHT, *srf); + } catch (...) { + SDL_FreeSurface(srf); + throw; + } SDL_FreeSurface(srf); if (!(srf = IMG_Load(left.c_str()))) throw SDLError("IMG_Load"); - cm.Data(CubeMap::LEFT, *srf); + try { + cm.Data(CubeMap::LEFT, *srf); + } catch (...) { + SDL_FreeSurface(srf); + throw; + } SDL_FreeSurface(srf); if (!(srf = IMG_Load(top.c_str()))) throw SDLError("IMG_Load"); - cm.Data(CubeMap::TOP, *srf); + try { + cm.Data(CubeMap::TOP, *srf); + } catch (...) { + SDL_FreeSurface(srf); + throw; + } SDL_FreeSurface(srf); if (!(srf = IMG_Load(bottom.c_str()))) throw SDLError("IMG_Load"); - cm.Data(CubeMap::BOTTOM, *srf); + try { + cm.Data(CubeMap::BOTTOM, *srf); + } catch (...) { + SDL_FreeSurface(srf); + throw; + } SDL_FreeSurface(srf); if (!(srf = IMG_Load(back.c_str()))) throw SDLError("IMG_Load"); - cm.Data(CubeMap::BACK, *srf); + try { + cm.Data(CubeMap::BACK, *srf); + } catch (...) { + SDL_FreeSurface(srf); + throw; + } SDL_FreeSurface(srf); if (!(srf = IMG_Load(front.c_str()))) throw SDLError("IMG_Load"); - cm.Data(CubeMap::FRONT, *srf); + try { + cm.Data(CubeMap::FRONT, *srf); + } catch (...) { + SDL_FreeSurface(srf); + throw; + } SDL_FreeSurface(srf); + cm.FilterNearest(); + cm.WrapEdge(); + return cm; }