// SPDX-License-Identifier: MIT // // EmulationStation Desktop Edition // Platform.h // // Platform utility functions. // #ifndef ES_CORE_UTILS_PLATFORM_UTIL_H #define ES_CORE_UTILS_PLATFORM_UTIL_H #include #if defined(_WIN64) #include #endif #if defined(__ANDROID__) #include #endif namespace Utils { namespace Platform { enum QuitMode { QUIT = 0, REBOOT = 1, POWEROFF = 2 }; int runRebootCommand(); int runPoweroffCommand(); // Uses UTF-8 for Unix and does a UTF-16/wstring conversion for Windows. int runSystemCommand(const std::string& cmd_utf8); // Windows specific UTF-16/wstring function. (FOR FUTURE USE) int runSystemCommand(const std::wstring& cmd_utf16); int launchGameUnix(const std::string& cmd_utf8, const std::string& startDirectory, bool runInBackground); int launchGameWindows(const std::wstring& cmd_utf16, const std::wstring& startDirectory, bool runInBackground, bool hideWindow); unsigned int getTaskbarState(); void hideTaskbar(); void revertTaskbarState(unsigned int& state); // Clean, normal shutdown. int quitES(QuitMode mode = QuitMode::QUIT); void processQuitMode(); // Immediately shut down the application as cleanly as possible. void emergencyShutdown(); #if defined(__ANDROID__) namespace Android { bool requestStoragePermission(); bool checkEmulatorInstalled(const std::string& packageName, const std::string& component); int launchGame(const std::string& packageName, const std::string& component, std::vector>& extras); } // namespace Android #endif static QuitMode sQuitMode = QuitMode::QUIT; // This is simply to get rid of a GCC false positive -Wunused-variable compiler warning. static QuitMode sQuitModeDummy = sQuitMode; } // namespace Platform } // namespace Utils #endif // ES_CORE_UTILS_PLATFORM_UTIL_H