Merge pull request #20522

This commit is contained in:
Hielke Morsink 2023-06-30 16:34:52 +02:00 committed by GitHub
commit 2b6cfafc92
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 11 additions and 34 deletions

View File

@ -56,10 +56,6 @@ using colour_t = uint8_t;
#endif // defined(__unix__) || (defined(__APPLE__) && defined(__MACH__))
#ifdef _WIN32
char* strndup(const char* src, size_t size);
#endif
// BSD and macOS have MAP_ANON instead of MAP_ANONYMOUS
#ifndef MAP_ANONYMOUS
# define MAP_ANONYMOUS MAP_ANON

View File

@ -35,7 +35,7 @@ struct ttf_cache_entry
{
TTFSurface* surface;
TTF_Font* font;
utf8* text;
u8string text;
uint32_t lastUseTick;
};
@ -43,7 +43,7 @@ struct ttf_getwidth_cache_entry
{
uint32_t width;
TTF_Font* font;
utf8* text;
u8string text;
uint32_t lastUseTick;
};
@ -197,11 +197,9 @@ static void TTFSurfaceCacheDispose(ttf_cache_entry* entry)
if (entry->surface != nullptr)
{
TTFFreeSurface(entry->surface);
free(entry->text);
entry->text.clear();
entry->surface = nullptr;
entry->font = nullptr;
entry->text = nullptr;
}
}
@ -270,21 +268,19 @@ TTFSurface* TTFSurfaceCacheGetOrAdd(TTF_Font* font, std::string_view text)
_ttfSurfaceCacheCount++;
entry->surface = surface;
entry->font = font;
entry->text = strndup(text.data(), text.size());
entry->text = text;
entry->lastUseTick = gCurrentDrawCount;
return entry->surface;
}
static void TTFGetWidthCacheDispose(ttf_getwidth_cache_entry* entry)
{
if (entry->text != nullptr)
{
free(entry->text);
if (entry->text.empty())
return;
entry->width = 0;
entry->font = nullptr;
entry->text = nullptr;
}
entry->text.clear();
entry->width = 0;
entry->font = nullptr;
}
static void TTFGetWidthCacheDisposeAll()
@ -310,7 +306,7 @@ uint32_t TTFGetWidthCacheGetOrAdd(TTF_Font* font, std::string_view text)
entry = &_ttfGetWidthCache[index];
// Check if entry is a hit
if (entry->text == nullptr)
if (entry->text.empty())
break;
if (entry->font == font && String::Equals(entry->text, text))
{
@ -342,7 +338,7 @@ uint32_t TTFGetWidthCacheGetOrAdd(TTF_Font* font, std::string_view text)
_ttfGetWidthCacheCount++;
entry->width = width;
entry->font = font;
entry->text = strndup(text.data(), text.size());
entry->text = text;
entry->lastUseTick = gCurrentDrawCount;
return entry->width;
}

View File

@ -47,21 +47,6 @@ static constexpr wchar_t SINGLE_INSTANCE_MUTEX_NAME[] = L"RollerCoaster Tycoon 2
# define SOFTWARE_CLASSES L"Software\\Classes"
# define MUI_CACHE L"Local Settings\\Software\\Microsoft\\Windows\\Shell\\MuiCache"
char* strndup(const char* src, size_t size)
{
size_t len = strnlen(src, size);
char* dst = reinterpret_cast<char*>(malloc(len + 1));
if (dst == nullptr)
{
return nullptr;
}
dst = reinterpret_cast<char*>(std::memcpy(dst, src, len));
dst[len] = '\0';
return dst;
}
namespace Platform
{
static std::string WIN32_GetKnownFolderPath(REFKNOWNFOLDERID rfid);