Merge branch '12.0' into metal

This commit is contained in:
Alex Szpakowski
2020-02-01 17:56:41 -04:00
30 changed files with 4400 additions and 2208 deletions
+9 -6
View File
@@ -113,15 +113,18 @@ void Module::registerInstance(Module *instance)
registry.insert(make_pair(name, instance));
ModuleType moduletype = instance->getModuleType();
ModuleType mtype = instance->getModuleType();
if (instances[moduletype] != nullptr)
if (mtype != M_UNKNOWN)
{
printf("Warning: overwriting module instance %s with new instance %s\n",
instances[moduletype]->getName(), instance->getName());
}
if (instances[mtype] != nullptr)
{
printf("Warning: overwriting module instance %s with new instance %s\n",
instances[mtype]->getName(), instance->getName());
}
instances[moduletype] = instance;
instances[mtype] = instance;
}
}
Module *Module::getInstance(const std::string &name)
+2 -1
View File
@@ -38,6 +38,7 @@ public:
enum ModuleType
{
M_UNKNOWN = -1, // Use this for modules outside of LOVE's source code.
M_AUDIO,
M_DATA,
M_EVENT,
@@ -99,7 +100,7 @@ public:
template <typename T>
static T *getInstance(ModuleType type)
{
return (T *) instances[type];
return type != M_UNKNOWN ? (T *) instances[type] : nullptr;
}
private:
+11 -2
View File
@@ -24,7 +24,9 @@
#include <stdlib.h>
#ifdef LOVE_WINDOWS
#define WIN32_LEAN_AND_MEAN
#include <malloc.h>
#include <Windows.h>
#else
#include <unistd.h> // Assume POSIX support.
#endif
@@ -54,8 +56,15 @@ void alignedFree(void *mem)
size_t getPageSize()
{
#ifdef LOVE_WINDOWS
// TODO: Do an actual query.
return 4096;
static DWORD size = 0;
if (size == 0)
{
SYSTEM_INFO si;
GetSystemInfo(&si);
size = si.dwPageSize;
}
return (size_t) size;
#else
static const long size = sysconf(_SC_PAGESIZE);
return size > 0 ? (size_t) size : 4096;