mirror of
https://gitea.wildfiregames.com/0ad/0ad.git
synced 2026-07-23 03:12:55 +00:00
a859562ea7
- properly differentiate between buffer/offset alignment and length alignment (relevant since block size has been increased to 256k) - use VfsPath for most game paths instead of CStr - clean up timer interface and implementation - self-tests no longer crash - file_cache.cpp: fix for the case where allocation fails (prevent deleter from seeing a null pointer) - allocators: move all shared_ptr-related stuff to its own component; add DummySharedPtr - codec: disable checksums (important for performance at work) - File: made into an interface class to avoid export problems. not entirely sure about this.. - vfs_path.h, path.h, os_path.h: proper fix for using fs::change_extension and similar utility functions with derivatives of basic_path - lib_api: automatically link against import lib if building lib/ as a DLL - path_util: remove unused functions (this component is deprecated) - compiler.h: add INLINE - Xeromyces.cpp: pass PIVFS so that GetXMBPath works in self-test (should do this mostly everywhere rather than have one singleton g_VFS) This was SVN commit r5537.
51 lines
923 B
C++
51 lines
923 B
C++
#include "precompiled.h"
|
|
#include "wdlfcn.h"
|
|
|
|
#include "lib/os_path.h"
|
|
#include "wposix_internal.h"
|
|
|
|
|
|
static HMODULE HMODULE_from_void(void* handle)
|
|
{
|
|
return (HMODULE)handle;
|
|
}
|
|
|
|
static void* void_from_HMODULE(HMODULE hModule)
|
|
{
|
|
return (void*)hModule;
|
|
}
|
|
|
|
|
|
int dlclose(void* handle)
|
|
{
|
|
BOOL ok = FreeLibrary(HMODULE_from_void(handle));
|
|
WARN_RETURN_IF_FALSE(ok);
|
|
return 0;
|
|
}
|
|
|
|
|
|
char* dlerror(void)
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
|
|
void* dlopen(const char* so_name, int flags)
|
|
{
|
|
debug_assert(!(flags & RTLD_GLOBAL));
|
|
|
|
OsPath path = fs::change_extension(so_name, ".dll");
|
|
HMODULE hModule = LoadLibrary(path.external_directory_string().c_str());
|
|
debug_assert(hModule);
|
|
return void_from_HMODULE(hModule);
|
|
}
|
|
|
|
|
|
void* dlsym(void* handle, const char* sym_name)
|
|
{
|
|
HMODULE hModule = HMODULE_from_void(handle);
|
|
void* sym = GetProcAddress(hModule, sym_name);
|
|
debug_assert(sym);
|
|
return sym;
|
|
}
|