diff options
author | Jef <jef@targetspot.com> | 2024-09-24 08:54:57 -0400 |
---|---|---|
committer | Jef <jef@targetspot.com> | 2024-09-24 08:54:57 -0400 |
commit | 20d28e80a5c861a9d5f449ea911ab75b4f37ad0d (patch) | |
tree | 12f17f78986871dd2cfb0a56e5e93b545c1ae0d0 /Src/Wasabi/api/application/api_applicationi.cpp | |
parent | 537bcbc86291b32fc04ae4133ce4d7cac8ebe9a7 (diff) | |
download | winamp-20d28e80a5c861a9d5f449ea911ab75b4f37ad0d.tar.gz |
Initial community commit
Diffstat (limited to 'Src/Wasabi/api/application/api_applicationi.cpp')
-rw-r--r-- | Src/Wasabi/api/application/api_applicationi.cpp | 204 |
1 files changed, 204 insertions, 0 deletions
diff --git a/Src/Wasabi/api/application/api_applicationi.cpp b/Src/Wasabi/api/application/api_applicationi.cpp new file mode 100644 index 00000000..694bc865 --- /dev/null +++ b/Src/Wasabi/api/application/api_applicationi.cpp @@ -0,0 +1,204 @@ +#include <precomp.h> +//<?#include "<class data="implementationheader"/>" +#include "api_applicationi.h" +//?> + +#include <wasabicfg.h> +#include <api/application/pathmgr.h> +#include <api/application/version.h> +#include <api/apiinit.h> + +#ifdef WA3COMPATIBILITY +#include <runtime/main.h> // CUT! +#include <wndmgr/layout.h> // CUT! +#include <skin/skinparse.h> +#endif + +StringW g_resourcepath; + +// {3CBD4483-DC44-11d3-B608-000086340885} +static const GUID _baseGUID = + { 0x3cbd4483, 0xdc44, 0x11d3, { 0xb6, 0x8, 0x0, 0x0, 0x86, 0x34, 0x8, 0x85 } }; + +api_application *applicationApi = NULL; +api_applicationI::api_applicationI(HINSTANCE instance, const wchar_t *_userPath) +: appInstance(instance), mainthread(0), shuttingdown(0) +{ + userPath = _userPath; +#ifndef _WASABIRUNTIME + +#ifdef WASABI_DIRS_FROMEXEPATH + HINSTANCE hInst = GetModuleHandle(0); +#else + HINSTANCE hInst = appInstance; +#endif + + StringW path; + { + wchar_t g[WA_MAX_PATH]; + GetModuleFileNameW(hInst, g, WA_MAX_PATH - 1); + wchar_t *p = wcsrchr(g, '\\'); + if (p) *p = 0; + path = g; + } +#ifdef WIN32 + g_resourcepath = path; +#elif defined(LINUX) + g_resourcepath = "/usr/local/share/"; + g_resourcepath += WasabiVersion::getAppName(); +#endif + +#ifdef LINUX + //char *file = getenv( "WASABI_LOG_FILE" ); + //if (!ACCESS(file, 0)) UNLINK(file); +#endif + + apppath = path; + + g_resourcepath.AddBackslash(); + +#if defined(WASABI_COMPILE_SKIN) || defined(WASABI_COMPILE_IMGLDR) + g_resourcepath.AppendPath(WASABI_RESOURCES_SUBDIRECTORY); +#endif + +#endif + +#ifdef WIN32 + HANDLE h = NULL; + DuplicateHandle(GetCurrentProcess(), GetCurrentThread(), GetCurrentProcess(), &h, 0, FALSE, DUPLICATE_SAME_ACCESS); + mainthread = h; // 32-bit writes assumed atomic +#endif +#ifdef LINUX + DebugString("portme: api main thread handle dup\n"); +#endif +} + +api_applicationI::~api_applicationI() +{ + g_resourcepath.purge(); +} + +const wchar_t *api_applicationI::main_getAppName() +{ + return WasabiVersion::getAppName(); +} + +const wchar_t *api_applicationI::main_getVersionString() +{ + return WasabiVersion::getVersionString(); +} + +unsigned int api_applicationI::main_getBuildNumber() +{ + return WasabiVersion::getBuildNumber(); +} + +GUID api_applicationI::main_getGUID() +{ + return guid; +} + +HANDLE api_applicationI::main_getMainThreadHandle() +{ + if (mainthread == 0) return (HANDLE)0; + HANDLE h = (HANDLE)0; +#ifdef WIN32 + DuplicateHandle(GetCurrentProcess(), mainthread, GetCurrentProcess(), &h, 0, FALSE, DUPLICATE_SAME_ACCESS); +#endif +#ifdef LINUX + DebugString("portme: dup handle\n"); +#endif + return h; +} + +HINSTANCE api_applicationI::main_gethInstance() +{ + return appInstance; +} + +const wchar_t *api_applicationI::main_getCommandLine() +{ + return cmdLine; +} + +void api_applicationI::main_shutdown(int deferred) +{ + int x = 1; +#ifdef WASABI_CHECK_CAN_EXIT + WASABI_CHECK_CAN_EXIT(x) +#endif + if (!x) return ; + shuttingdown = 1; +#ifdef _WASABIRUNTIME + Main::doAction(ACTION_CLOSE, deferred); +#endif +#ifdef WASABI_CUSTOM_QUIT + WASABI_CUSTOM_QUITFN +#endif + +} + +void api_applicationI::main_cancelShutdown() +{ +#ifdef _WASABIRUNTIME + Main::cancelShutdown(); +#endif + shuttingdown = 0; +} + +int api_applicationI::main_isShuttingDown() +{ + return shuttingdown; +} + +const wchar_t *api_applicationI::path_getAppPath() +{ +#ifdef _WASABIRUNTIME + return Main::getMainAppPath(); +#endif + return apppath; +} + +const wchar_t *api_applicationI::path_getUserSettingsPath() +{ + return userPath; + //return PathMgr::getUserSettingsPath(); +} + +void api_applicationI::setHInstance(HINSTANCE instance) +{ + appInstance = instance; +}; + +void api_applicationI::setCommandLine(const wchar_t *cmdline) +{ + cmdLine = cmdline; +} + +void api_applicationI::setGUID(GUID g) +{ + guid = g; +} + +int api_applicationI::app_getInitCount() +{ + return ApiInit::getInitCount(); +} + + +int api_applicationI::app_messageLoopStep() +{ +#if defined(WASABI_COMPILE_TIMERS) || defined(WASABI_COMPILE_WND) + MSG msg; + if (PeekMessage(&msg, NULL, 0, 0, PM_NOREMOVE)) + { + if (!GetMessage( &msg, NULL, 0, 0 )) return 0; +#ifdef WASABI_COMPILE_WND + TranslateMessage( &msg ); +#endif + DispatchMessage( &msg ); + } +#endif + return 1; +} + |