Use perfect forwarding in createT of SkSmallAllocator.
This allows createT statements to be written in a clearer style. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2482683002 Review-Url: https://codereview.chromium.org/2482683002
This commit is contained in:
parent
f98b730af0
commit
ad512797c9
@ -12,6 +12,7 @@
|
|||||||
#include "SkTypes.h"
|
#include "SkTypes.h"
|
||||||
|
|
||||||
#include <new>
|
#include <new>
|
||||||
|
#include <utility>
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Template class for allocating small objects without additional heap memory
|
* Template class for allocating small objects without additional heap memory
|
||||||
@ -56,12 +57,12 @@ public:
|
|||||||
* will be returned.
|
* will be returned.
|
||||||
*/
|
*/
|
||||||
template<typename T, typename... Args>
|
template<typename T, typename... Args>
|
||||||
T* createT(const Args&... args) {
|
T* createT(Args&&... args) {
|
||||||
void* buf = this->reserveT<T>();
|
void* buf = this->reserveT<T>();
|
||||||
if (nullptr == buf) {
|
if (nullptr == buf) {
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
return new (buf) T(args...);
|
return new (buf) T(std::forward<Args>(args)...);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -130,8 +131,7 @@ private:
|
|||||||
}
|
}
|
||||||
|
|
||||||
alignas(16) char fStorage[kTotalBytes];
|
alignas(16) char fStorage[kTotalBytes];
|
||||||
// Number of bytes used so far.
|
size_t fStorageUsed; // Number of bytes used so far.
|
||||||
size_t fStorageUsed;
|
|
||||||
uint32_t fNumObjects;
|
uint32_t fNumObjects;
|
||||||
Rec fRecs[kMaxObjects];
|
Rec fRecs[kMaxObjects];
|
||||||
};
|
};
|
||||||
|
@ -2073,8 +2073,7 @@ SkBlitter* CreateASTCBlitter(int width, int height, void* outputBuffer,
|
|||||||
}
|
}
|
||||||
|
|
||||||
return allocator->createT<
|
return allocator->createT<
|
||||||
SkTCompressedAlphaBlitter<12, 16, CompressorASTC>, int, int, void* >
|
SkTCompressedAlphaBlitter<12, 16, CompressorASTC>>(width, height, outputBuffer);
|
||||||
(width, height, outputBuffer);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void DecompressASTC(uint8_t* dst, int dstRowBytes, const uint8_t* src,
|
void DecompressASTC(uint8_t* dst, int dstRowBytes, const uint8_t* src,
|
||||||
|
@ -498,8 +498,7 @@ SkBlitter* CreateLATCBlitter(int width, int height, void* outputBuffer,
|
|||||||
sk_bzero(outputBuffer, width * height / 2);
|
sk_bzero(outputBuffer, width * height / 2);
|
||||||
|
|
||||||
return allocator->createT<
|
return allocator->createT<
|
||||||
SkTCompressedAlphaBlitter<4, 8, CompressorLATC>, int, int, void* >
|
SkTCompressedAlphaBlitter<4, 8, CompressorLATC>>(width, height, outputBuffer);
|
||||||
(width, height, outputBuffer);
|
|
||||||
#elif COMPRESS_LATC_SLOW
|
#elif COMPRESS_LATC_SLOW
|
||||||
// TODO (krajcevski)
|
// TODO (krajcevski)
|
||||||
return nullptr;
|
return nullptr;
|
||||||
|
@ -653,8 +653,7 @@ SkBlitter* CreateR11EACBlitter(int width, int height, void* outputBuffer,
|
|||||||
}
|
}
|
||||||
|
|
||||||
return allocator->createT<
|
return allocator->createT<
|
||||||
SkTCompressedAlphaBlitter<4, 8, CompressorR11EAC>, int, int, void*>
|
SkTCompressedAlphaBlitter<4, 8, CompressorR11EAC>>(width, height, outputBuffer);
|
||||||
(width, height, outputBuffer);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void DecompressR11EAC(uint8_t* dst, int dstRowBytes, const uint8_t* src, int width, int height) {
|
void DecompressR11EAC(uint8_t* dst, int dstRowBytes, const uint8_t* src, int width, int height) {
|
||||||
|
Loading…
Reference in New Issue
Block a user