forked from Mirrorlandia_minetest/irrlicht
Completely remove irrAllocator
This commit is contained in:
parent
07fd32da50
commit
05a00a8d91
@ -9,7 +9,6 @@
|
|||||||
#include "position2d.h"
|
#include "position2d.h"
|
||||||
#include "rect.h"
|
#include "rect.h"
|
||||||
#include "SColor.h"
|
#include "SColor.h"
|
||||||
#include "irrAllocator.h"
|
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
namespace irr
|
namespace irr
|
||||||
@ -44,7 +43,7 @@ public:
|
|||||||
delete[] Data;
|
delete[] Data;
|
||||||
|
|
||||||
if (DeleteMipMapsMemory)
|
if (DeleteMipMapsMemory)
|
||||||
Allocator.deallocate(MipMapsData);
|
delete[] MipMapsData;
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Returns the color format
|
//! Returns the color format
|
||||||
@ -275,13 +274,13 @@ public:
|
|||||||
will by copied internally.
|
will by copied internally.
|
||||||
\param deleteMemory Whether the memory is deallocated upon
|
\param deleteMemory Whether the memory is deallocated upon
|
||||||
destruction. */
|
destruction. */
|
||||||
void setMipMapsData(void* data, bool ownForeignMemory, bool deleteMemory)
|
void setMipMapsData(void* data, bool ownForeignMemory)
|
||||||
{
|
{
|
||||||
if (data != MipMapsData)
|
if (data != MipMapsData)
|
||||||
{
|
{
|
||||||
if (DeleteMipMapsMemory)
|
if (DeleteMipMapsMemory)
|
||||||
{
|
{
|
||||||
Allocator.deallocate(MipMapsData);
|
delete[] MipMapsData;
|
||||||
|
|
||||||
DeleteMipMapsMemory = false;
|
DeleteMipMapsMemory = false;
|
||||||
}
|
}
|
||||||
@ -292,7 +291,7 @@ public:
|
|||||||
{
|
{
|
||||||
MipMapsData = static_cast<u8*>(data);
|
MipMapsData = static_cast<u8*>(data);
|
||||||
|
|
||||||
DeleteMipMapsMemory = deleteMemory;
|
DeleteMipMapsMemory = false;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -311,7 +310,7 @@ public:
|
|||||||
dataSize += getDataSizeFromFormat(Format, width, height);
|
dataSize += getDataSizeFromFormat(Format, width, height);
|
||||||
} while (width != 1 || height != 1);
|
} while (width != 1 || height != 1);
|
||||||
|
|
||||||
MipMapsData = Allocator.allocate(dataSize);
|
MipMapsData = new u8[dataSize];
|
||||||
memcpy(MipMapsData, data, dataSize);
|
memcpy(MipMapsData, data, dataSize);
|
||||||
|
|
||||||
DeleteMipMapsMemory = true;
|
DeleteMipMapsMemory = true;
|
||||||
@ -578,7 +577,6 @@ protected:
|
|||||||
bool DeleteMemory;
|
bool DeleteMemory;
|
||||||
bool DeleteMipMapsMemory;
|
bool DeleteMipMapsMemory;
|
||||||
|
|
||||||
core::irrAllocator<u8> Allocator;
|
|
||||||
#if defined(IRRLICHT_sRGB)
|
#if defined(IRRLICHT_sRGB)
|
||||||
int Format_sRGB;
|
int Format_sRGB;
|
||||||
#endif
|
#endif
|
||||||
|
@ -331,7 +331,7 @@ namespace video
|
|||||||
_IRR_DEPRECATED_ ITexture* addTexture(const io::path& name, IImage* image, void* mipmapData)
|
_IRR_DEPRECATED_ ITexture* addTexture(const io::path& name, IImage* image, void* mipmapData)
|
||||||
{
|
{
|
||||||
if (image)
|
if (image)
|
||||||
image->setMipMapsData(mipmapData, false, true);
|
image->setMipMapsData(mipmapData, false);
|
||||||
|
|
||||||
return addTexture(name, image);
|
return addTexture(name, image);
|
||||||
}
|
}
|
||||||
|
@ -6,7 +6,6 @@
|
|||||||
#define __S_MATERIAL_LAYER_H_INCLUDED__
|
#define __S_MATERIAL_LAYER_H_INCLUDED__
|
||||||
|
|
||||||
#include "matrix4.h"
|
#include "matrix4.h"
|
||||||
#include "irrAllocator.h"
|
|
||||||
|
|
||||||
namespace irr
|
namespace irr
|
||||||
{
|
{
|
||||||
@ -69,8 +68,7 @@ namespace video
|
|||||||
{
|
{
|
||||||
if ( TextureMatrix )
|
if ( TextureMatrix )
|
||||||
{
|
{
|
||||||
MatrixAllocator.destruct(TextureMatrix);
|
delete TextureMatrix;
|
||||||
MatrixAllocator.deallocate(TextureMatrix);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -90,8 +88,7 @@ namespace video
|
|||||||
*TextureMatrix = *other.TextureMatrix;
|
*TextureMatrix = *other.TextureMatrix;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
MatrixAllocator.destruct(TextureMatrix);
|
delete TextureMatrix;
|
||||||
MatrixAllocator.deallocate(TextureMatrix);
|
|
||||||
TextureMatrix = 0;
|
TextureMatrix = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -99,8 +96,7 @@ namespace video
|
|||||||
{
|
{
|
||||||
if (other.TextureMatrix)
|
if (other.TextureMatrix)
|
||||||
{
|
{
|
||||||
TextureMatrix = MatrixAllocator.allocate(1);
|
TextureMatrix = new core::matrix4(*other.TextureMatrix);
|
||||||
MatrixAllocator.construct(TextureMatrix,*other.TextureMatrix);
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
TextureMatrix = 0;
|
TextureMatrix = 0;
|
||||||
@ -122,8 +118,7 @@ namespace video
|
|||||||
{
|
{
|
||||||
if (!TextureMatrix)
|
if (!TextureMatrix)
|
||||||
{
|
{
|
||||||
TextureMatrix = MatrixAllocator.allocate(1);
|
TextureMatrix = new core::matrix4();
|
||||||
MatrixAllocator.construct(TextureMatrix,core::IdentityMatrix);
|
|
||||||
}
|
}
|
||||||
return *TextureMatrix;
|
return *TextureMatrix;
|
||||||
}
|
}
|
||||||
@ -146,8 +141,7 @@ namespace video
|
|||||||
{
|
{
|
||||||
if (!TextureMatrix)
|
if (!TextureMatrix)
|
||||||
{
|
{
|
||||||
TextureMatrix = MatrixAllocator.allocate(1);
|
TextureMatrix = new core::matrix4(mat);
|
||||||
MatrixAllocator.construct(TextureMatrix,mat);
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
*TextureMatrix = mat;
|
*TextureMatrix = mat;
|
||||||
@ -216,7 +210,6 @@ namespace video
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
friend class SMaterial;
|
friend class SMaterial;
|
||||||
irr::core::irrAllocator<irr::core::matrix4> MatrixAllocator;
|
|
||||||
|
|
||||||
//! Texture Matrix
|
//! Texture Matrix
|
||||||
/** Do not access this element directly as the internal
|
/** Do not access this element directly as the internal
|
||||||
|
@ -1,113 +0,0 @@
|
|||||||
// Copyright (C) 2002-2012 Nikolaus Gebhardt
|
|
||||||
// This file is part of the "Irrlicht Engine" and the "irrXML" project.
|
|
||||||
// For conditions of distribution and use, see copyright notice in irrlicht.h and irrXML.h
|
|
||||||
|
|
||||||
#ifndef __IRR_ALLOCATOR_H_INCLUDED__
|
|
||||||
#define __IRR_ALLOCATOR_H_INCLUDED__
|
|
||||||
|
|
||||||
#include "irrTypes.h"
|
|
||||||
#include <new>
|
|
||||||
// necessary for older compilers
|
|
||||||
#include <memory.h>
|
|
||||||
|
|
||||||
namespace irr
|
|
||||||
{
|
|
||||||
namespace core
|
|
||||||
{
|
|
||||||
|
|
||||||
//! Very simple allocator implementation, containers using it can be used across dll boundaries
|
|
||||||
template<typename T>
|
|
||||||
class irrAllocator
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
|
|
||||||
//! Destructor
|
|
||||||
virtual ~irrAllocator() {}
|
|
||||||
|
|
||||||
//! Allocate memory for an array of objects
|
|
||||||
T* allocate(size_t cnt)
|
|
||||||
{
|
|
||||||
return (T*)internal_new(cnt* sizeof(T));
|
|
||||||
}
|
|
||||||
|
|
||||||
//! Deallocate memory for an array of objects
|
|
||||||
void deallocate(T* ptr)
|
|
||||||
{
|
|
||||||
internal_delete(ptr);
|
|
||||||
}
|
|
||||||
|
|
||||||
//! Construct an element
|
|
||||||
void construct(T* ptr, const T&e)
|
|
||||||
{
|
|
||||||
new ((void*)ptr) T(e);
|
|
||||||
}
|
|
||||||
|
|
||||||
//! Destruct an element
|
|
||||||
void destruct(T* ptr)
|
|
||||||
{
|
|
||||||
ptr->~T();
|
|
||||||
}
|
|
||||||
|
|
||||||
protected:
|
|
||||||
|
|
||||||
virtual void* internal_new(size_t cnt)
|
|
||||||
{
|
|
||||||
return operator new(cnt);
|
|
||||||
}
|
|
||||||
|
|
||||||
virtual void internal_delete(void* ptr)
|
|
||||||
{
|
|
||||||
operator delete(ptr);
|
|
||||||
}
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
//! Fast allocator, only to be used in containers inside the same memory heap.
|
|
||||||
/** Containers using it are NOT able to be used it across dll boundaries. Use this
|
|
||||||
when using in an internal class or function or when compiled into a static lib */
|
|
||||||
template<typename T>
|
|
||||||
class irrAllocatorFast
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
|
|
||||||
//! Allocate memory for an array of objects
|
|
||||||
T* allocate(size_t cnt)
|
|
||||||
{
|
|
||||||
return (T*)operator new(cnt* sizeof(T));
|
|
||||||
}
|
|
||||||
|
|
||||||
//! Deallocate memory for an array of objects
|
|
||||||
void deallocate(T* ptr)
|
|
||||||
{
|
|
||||||
operator delete(ptr);
|
|
||||||
}
|
|
||||||
|
|
||||||
//! Construct an element
|
|
||||||
void construct(T* ptr, const T&e)
|
|
||||||
{
|
|
||||||
new ((void*)ptr) T(e);
|
|
||||||
}
|
|
||||||
|
|
||||||
//! Destruct an element
|
|
||||||
void destruct(T* ptr)
|
|
||||||
{
|
|
||||||
ptr->~T();
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
//! defines an allocation strategy (used only by irr::array so far)
|
|
||||||
enum eAllocStrategy
|
|
||||||
{
|
|
||||||
ALLOC_STRATEGY_SAFE = 0, // increase size by 1
|
|
||||||
ALLOC_STRATEGY_DOUBLE = 1, // double size when under 500 elements, beyond that increase by 1/4th size. Plus a small constant.
|
|
||||||
ALLOC_STRATEGY_SQRT = 2 // not implemented
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
} // end namespace core
|
|
||||||
} // end namespace irr
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
@ -82,7 +82,7 @@ public:
|
|||||||
{
|
{
|
||||||
if ( OriginalSize == Size && OriginalColorFormat == ColorFormat )
|
if ( OriginalSize == Size && OriginalColorFormat == ColorFormat )
|
||||||
{
|
{
|
||||||
Images[i]->setMipMapsData( images[i]->getMipMapsData(), false, true);
|
Images[i]->setMipMapsData( images[i]->getMipMapsData(), false);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user