// // Copyright (c) 2014 The ANGLE Project Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // // Win32_system_utils.cpp: Implementation of OS-specific functions for Win32 (Windows) #include "system_utils.h" #include #include namespace angle { void SetLowPriorityProcess() { SetPriorityClass(GetCurrentProcess(), BELOW_NORMAL_PRIORITY_CLASS); } class Win32Library : public Library { public: Win32Library(const std::string &libraryName); ~Win32Library() override; void *getSymbol(const std::string &symbolName) override; private: HMODULE mModule; }; Win32Library::Win32Library(const std::string &libraryName) : mModule(nullptr) { const auto &fullName = libraryName + "." + GetSharedLibraryExtension(); mModule = LoadLibraryA(fullName.c_str()); } Win32Library::~Win32Library() { if (mModule) { FreeLibrary(mModule); } } void *Win32Library::getSymbol(const std::string &symbolName) { if (!mModule) { return nullptr; } return GetProcAddress(mModule, symbolName.c_str()); } Library *loadLibrary(const std::string &libraryName) { return new Win32Library(libraryName); } } // namespace angle