mirror of
https://github.com/minetest/irrlicht.git
synced 2024-11-09 17:23:50 +01:00
Completely remove irrAllocator
This commit is contained in:
parent
07fd32da50
commit
05a00a8d91
@ -9,7 +9,6 @@
|
||||
#include "position2d.h"
|
||||
#include "rect.h"
|
||||
#include "SColor.h"
|
||||
#include "irrAllocator.h"
|
||||
#include <string.h>
|
||||
|
||||
namespace irr
|
||||
@ -44,7 +43,7 @@ public:
|
||||
delete[] Data;
|
||||
|
||||
if (DeleteMipMapsMemory)
|
||||
Allocator.deallocate(MipMapsData);
|
||||
delete[] MipMapsData;
|
||||
}
|
||||
|
||||
//! Returns the color format
|
||||
@ -275,13 +274,13 @@ public:
|
||||
will by copied internally.
|
||||
\param deleteMemory Whether the memory is deallocated upon
|
||||
destruction. */
|
||||
void setMipMapsData(void* data, bool ownForeignMemory, bool deleteMemory)
|
||||
void setMipMapsData(void* data, bool ownForeignMemory)
|
||||
{
|
||||
if (data != MipMapsData)
|
||||
{
|
||||
if (DeleteMipMapsMemory)
|
||||
{
|
||||
Allocator.deallocate(MipMapsData);
|
||||
delete[] MipMapsData;
|
||||
|
||||
DeleteMipMapsMemory = false;
|
||||
}
|
||||
@ -292,7 +291,7 @@ public:
|
||||
{
|
||||
MipMapsData = static_cast<u8*>(data);
|
||||
|
||||
DeleteMipMapsMemory = deleteMemory;
|
||||
DeleteMipMapsMemory = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -311,7 +310,7 @@ public:
|
||||
dataSize += getDataSizeFromFormat(Format, width, height);
|
||||
} while (width != 1 || height != 1);
|
||||
|
||||
MipMapsData = Allocator.allocate(dataSize);
|
||||
MipMapsData = new u8[dataSize];
|
||||
memcpy(MipMapsData, data, dataSize);
|
||||
|
||||
DeleteMipMapsMemory = true;
|
||||
@ -578,7 +577,6 @@ protected:
|
||||
bool DeleteMemory;
|
||||
bool DeleteMipMapsMemory;
|
||||
|
||||
core::irrAllocator<u8> Allocator;
|
||||
#if defined(IRRLICHT_sRGB)
|
||||
int Format_sRGB;
|
||||
#endif
|
||||
|
@ -331,7 +331,7 @@ namespace video
|
||||
_IRR_DEPRECATED_ ITexture* addTexture(const io::path& name, IImage* image, void* mipmapData)
|
||||
{
|
||||
if (image)
|
||||
image->setMipMapsData(mipmapData, false, true);
|
||||
image->setMipMapsData(mipmapData, false);
|
||||
|
||||
return addTexture(name, image);
|
||||
}
|
||||
|
@ -6,7 +6,6 @@
|
||||
#define __S_MATERIAL_LAYER_H_INCLUDED__
|
||||
|
||||
#include "matrix4.h"
|
||||
#include "irrAllocator.h"
|
||||
|
||||
namespace irr
|
||||
{
|
||||
@ -69,8 +68,7 @@ namespace video
|
||||
{
|
||||
if ( TextureMatrix )
|
||||
{
|
||||
MatrixAllocator.destruct(TextureMatrix);
|
||||
MatrixAllocator.deallocate(TextureMatrix);
|
||||
delete TextureMatrix;
|
||||
}
|
||||
}
|
||||
|
||||
@ -90,8 +88,7 @@ namespace video
|
||||
*TextureMatrix = *other.TextureMatrix;
|
||||
else
|
||||
{
|
||||
MatrixAllocator.destruct(TextureMatrix);
|
||||
MatrixAllocator.deallocate(TextureMatrix);
|
||||
delete TextureMatrix;
|
||||
TextureMatrix = 0;
|
||||
}
|
||||
}
|
||||
@ -99,8 +96,7 @@ namespace video
|
||||
{
|
||||
if (other.TextureMatrix)
|
||||
{
|
||||
TextureMatrix = MatrixAllocator.allocate(1);
|
||||
MatrixAllocator.construct(TextureMatrix,*other.TextureMatrix);
|
||||
TextureMatrix = new core::matrix4(*other.TextureMatrix);
|
||||
}
|
||||
else
|
||||
TextureMatrix = 0;
|
||||
@ -122,8 +118,7 @@ namespace video
|
||||
{
|
||||
if (!TextureMatrix)
|
||||
{
|
||||
TextureMatrix = MatrixAllocator.allocate(1);
|
||||
MatrixAllocator.construct(TextureMatrix,core::IdentityMatrix);
|
||||
TextureMatrix = new core::matrix4();
|
||||
}
|
||||
return *TextureMatrix;
|
||||
}
|
||||
@ -146,8 +141,7 @@ namespace video
|
||||
{
|
||||
if (!TextureMatrix)
|
||||
{
|
||||
TextureMatrix = MatrixAllocator.allocate(1);
|
||||
MatrixAllocator.construct(TextureMatrix,mat);
|
||||
TextureMatrix = new core::matrix4(mat);
|
||||
}
|
||||
else
|
||||
*TextureMatrix = mat;
|
||||
@ -216,7 +210,6 @@ namespace video
|
||||
|
||||
private:
|
||||
friend class SMaterial;
|
||||
irr::core::irrAllocator<irr::core::matrix4> MatrixAllocator;
|
||||
|
||||
//! Texture Matrix
|
||||
/** 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 )
|
||||
{
|
||||
Images[i]->setMipMapsData( images[i]->getMipMapsData(), false, true);
|
||||
Images[i]->setMipMapsData( images[i]->getMipMapsData(), false);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user