Initial community commit
This commit is contained in:
parent
537bcbc862
commit
fc06254474
16440 changed files with 4239995 additions and 2 deletions
548
Src/Wasabi/api/apiinit.cpp
Normal file
548
Src/Wasabi/api/apiinit.cpp
Normal file
|
@ -0,0 +1,548 @@
|
|||
#include "./wndmgr/layout.h"
|
||||
|
||||
#include <tataki/export.h>
|
||||
//<?#include "<class data="implementationheader"/>"
|
||||
#include "apiinit.h"
|
||||
//?>
|
||||
|
||||
#include <api/memmgr/api_memmgr.h>
|
||||
|
||||
#define WASABI_SAYMYNAME
|
||||
#include <wasabicfg.h>
|
||||
#undef WASABI_SAYMYNAME
|
||||
|
||||
#include <api/service/servicei.h>
|
||||
#include <api/locales/api_localesi.h>
|
||||
#include <api/config/api_configi.h>
|
||||
#include <api/config/items/cfgitem.h>
|
||||
#ifdef WASABI_COMPILE_FONTS
|
||||
#include <api/font/FontCreator.h>
|
||||
#include <api/font/fontapi.h>
|
||||
#endif
|
||||
#include <api/skin/skinapi.h>
|
||||
#include <api/skin/groupwndcreate.h>
|
||||
#include <api/script/makiapi.h>
|
||||
#include <api/script/objecttable.h>
|
||||
#include <api/wnd/wndapi.h>
|
||||
#include <api/wnd/wndclass/foreignwnd.h>
|
||||
#include <api/wnd/wndclass/clickwnd.h>
|
||||
#include <api/imgldr/imgldrapi.h>
|
||||
|
||||
#ifdef WASABI_COMPILE_FONTS
|
||||
#ifdef WIN32
|
||||
# include <api/font/win32/truetypefont_win32.h>
|
||||
#elif defined(LINUX)
|
||||
# include <api/font/linux/truetypefont_linux.h>
|
||||
#else
|
||||
# error port me
|
||||
#endif // platform
|
||||
#endif // fonts
|
||||
|
||||
#include <api/wndmgr/wndmgrapi.h>
|
||||
|
||||
#ifdef WASABI_COMPILE_MAKIDEBUG
|
||||
#include <api/script/debugger/debugapi.h>
|
||||
#endif
|
||||
#ifdef WASABI_COMPILE_MAKIDEBUG
|
||||
#include <api/core/api_core.h>
|
||||
#endif
|
||||
#ifdef WASABI_COMPILE_FILEREADER
|
||||
#include <api/filereader/filereaderapi.h>
|
||||
#ifdef WASABI_COMPILE_ZIPREADER
|
||||
#include <api/filereader/zip/zipread.h>
|
||||
#endif
|
||||
#endif
|
||||
#ifdef WASABI_COMPILE_LINUX
|
||||
#include <api/linux/api_linuxi.h>
|
||||
#endif
|
||||
#ifdef WASABI_COMPILE_TEXTMODE
|
||||
#if defined(WIN32)
|
||||
#include <api/textmode/textmode_win32.h>
|
||||
#elif defined(LINUX)
|
||||
#include <api/textmode/textmode_ncurses.h>
|
||||
#else // dummy
|
||||
#include <api/textmode/api_textmodeI.h>
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
||||
#if defined(WASABI_COMPILE_COMPONENTS) | defined(GEN_FF) // MULTIAPI-FIXME
|
||||
#include <api/wac/compon.h>
|
||||
#endif
|
||||
|
||||
#include <api/wndmgr/gc.h>
|
||||
|
||||
#include <api/application/api_application.h>
|
||||
#ifndef WASABI_CUSTOM_MODULE_SVCMGR
|
||||
DECLARE_MODULE_SVCMGR;
|
||||
#endif
|
||||
|
||||
#ifdef _WIN32
|
||||
extern HINSTANCE hInstance;
|
||||
#endif
|
||||
|
||||
extern StringW g_resourcepath;
|
||||
api_application *applicationApi = NULL;
|
||||
timer_api *timerApi = NULL;
|
||||
|
||||
int ApiInit::init(OSMODULEHANDLE hinstance, OSWINDOWHANDLE mainwnd, api_service *wa5_svc)
|
||||
{
|
||||
Tataki::Init(wa5_svc);
|
||||
serviceApi = wa5_svc;
|
||||
initcount++;
|
||||
|
||||
#ifndef WA3COMPATIBILITY
|
||||
|
||||
// ------------------------------------------------------------------------
|
||||
// Init callback system
|
||||
// ------------------------------------------------------------------------
|
||||
|
||||
waServiceFactory *sf = WASABI_API_SVC->service_getServiceByGuid(syscbApiServiceGuid);
|
||||
if (sf) sysCallbackApi = reinterpret_cast<api_syscb *>(sf->getInterface());
|
||||
|
||||
// ------------------------------------------------------------------------
|
||||
// Init application API
|
||||
// ------------------------------------------------------------------------
|
||||
|
||||
sf = WASABI_API_SVC->service_getServiceByGuid(applicationApiServiceGuid);
|
||||
if (sf) applicationApi = reinterpret_cast<api_application *>(sf->getInterface());
|
||||
|
||||
g_resourcepath = StringPathCombine(WASABI_API_APP->path_getAppPath(), WASABI_RESOURCES_SUBDIRECTORY);
|
||||
|
||||
// ------------------------------------------------------------------------
|
||||
// Init centralized memory manager api
|
||||
// ------------------------------------------------------------------------
|
||||
|
||||
sf = WASABI_API_SVC->service_getServiceByGuid(memMgrApiServiceGuid);
|
||||
if (sf) WASABI_API_MEMMGR = reinterpret_cast<api_memmgr *>(sf->getInterface());
|
||||
|
||||
#ifdef WASABI_COMPILE_FILEREADER
|
||||
// ------------------------------------------------------------------------
|
||||
// Init file reader api and optional file readers
|
||||
// ------------------------------------------------------------------------
|
||||
fr = new FileReaderApi();
|
||||
fileApi = fr;
|
||||
WASABI_API_SVC->service_register(frapisvc = new FileReaderApiService());
|
||||
//WASABI_API_SVC->service_register(&diskReader);
|
||||
// set up custom file readers
|
||||
#ifdef WASABI_COMPILE_ZIPREADER
|
||||
zipRead = new waServiceTSingle<svc_fileReader, ZipRead>;
|
||||
#endif
|
||||
#ifdef WASABI_COMPILE_ZIPREADER
|
||||
WASABI_API_SVC->service_register(zipRead);
|
||||
#endif
|
||||
#endif // WASABI_COMPILE_FILEREADER
|
||||
|
||||
|
||||
// ------------------------------------------------------------------------
|
||||
// Init config api and register optional config items
|
||||
// ------------------------------------------------------------------------
|
||||
#ifdef WASABI_COMPILE_CONFIG
|
||||
cfg = new api_configI();
|
||||
configApi = cfg;
|
||||
WASABI_API_SVC->service_register(cfgapisvc = new ConfigApiService());
|
||||
#endif
|
||||
|
||||
// if no static service was ever declared, we need to init it so we don't hit null
|
||||
INIT_MODULE_SVCMGR();
|
||||
|
||||
DebugStringW(L"Auto-initializing %d services (system pass)\n", staticServiceMgr->__m_modules2.getNumItems());
|
||||
MODULE_SVCMGR_ONINIT2();
|
||||
|
||||
#ifdef WASABI_COMPILE_IMGLDR
|
||||
// ------------------------------------------------------------------------
|
||||
// Init image loading api and optional image formats
|
||||
// ------------------------------------------------------------------------
|
||||
img = new ImgLdrApi();
|
||||
imgLoaderApi = img;
|
||||
WASABI_API_SVC->service_register(imgldrapisvc = new ImgLdrApiService());
|
||||
|
||||
#endif
|
||||
|
||||
#ifdef WASABI_COMPILE_FONTS
|
||||
// ------------------------------------------------------------------------
|
||||
// Init font rendering api
|
||||
// ------------------------------------------------------------------------
|
||||
font = new FontApi();
|
||||
fontApi = font;
|
||||
win32Font = new FontCreator<TrueTypeFont_Win32>;
|
||||
WASABI_API_SVC->service_register(win32Font);
|
||||
WASABI_API_SVC->service_register(fontapisvc = new FontApiService());
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef WASABI_COMPILE_LOCALES
|
||||
// ------------------------------------------------------------------------
|
||||
// Init localization
|
||||
// ------------------------------------------------------------------------
|
||||
loc = new api_localesI();
|
||||
localesApi = loc;
|
||||
WASABI_API_SVC->service_register(localesapisvc = new LocalesApiService());
|
||||
#endif
|
||||
|
||||
// ------------------------------------------------------------------------
|
||||
// Init timer api
|
||||
// ------------------------------------------------------------------------
|
||||
sf = WASABI_API_SVC->service_getServiceByGuid(timerApiServiceGuid);
|
||||
if (sf) timerApi = reinterpret_cast<timer_api *>(sf->getInterface());
|
||||
|
||||
|
||||
#ifdef WASABI_COMPILE_WND
|
||||
// ------------------------------------------------------------------------
|
||||
// Init window api
|
||||
// ------------------------------------------------------------------------
|
||||
wnd = new WndApi();
|
||||
wndApi = wnd;
|
||||
#ifdef _WIN32
|
||||
if (mainwnd != NULL)
|
||||
{
|
||||
mainWnd = new ForeignWnd(mainwnd, hInstance);
|
||||
DebugStringW(L"main wnd handle is %x\n", mainWnd->gethWnd());
|
||||
wnd->main_setRootWnd(mainWnd);
|
||||
}
|
||||
else
|
||||
{
|
||||
default_mainWnd = new ClickWnd();
|
||||
default_mainWnd->init(hInstance, NULL, TRUE);
|
||||
wnd->main_setRootWnd(default_mainWnd);
|
||||
}
|
||||
#endif
|
||||
WASABI_API_SVC->service_register(wndapisvc = new WndApiService());
|
||||
#endif
|
||||
|
||||
// ------------------------------------------------------------------------
|
||||
// Init media core api
|
||||
// ------------------------------------------------------------------------
|
||||
#ifdef WASABI_COMPILE_MEDIACORE
|
||||
#ifndef WA3COMPATIBILITY
|
||||
#ifdef WASABI_CUSTOMIMPL_MEDIACORE
|
||||
coreApi = createCustomCoreApi();
|
||||
#else
|
||||
#error "not done yet"
|
||||
#endif
|
||||
#endif
|
||||
WASABI_API_SVC->service_register(coreapisvc = new CoreApiService());
|
||||
#endif
|
||||
|
||||
#ifdef WASABI_COMPILE_WNDMGR
|
||||
// ------------------------------------------------------------------------
|
||||
// Init window manager api
|
||||
// ------------------------------------------------------------------------
|
||||
wndmgr = new WndMgrApi ();
|
||||
wndManagerApi = wndmgr;
|
||||
WASABI_API_SVC->service_register(wndmgrapisvc = new WndMgrApiService());
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
#ifdef WASABI_COMPILE_SKIN
|
||||
// ------------------------------------------------------------------------
|
||||
// Init skin
|
||||
// ------------------------------------------------------------------------
|
||||
skin = new SkinApi();
|
||||
skinApi = skin;
|
||||
|
||||
#ifdef WASABI_COMPILE_COMPONENTS
|
||||
groupcreate = new waServiceTSingle<svc_windowCreate, GroupWndCreateSvc>;
|
||||
WASABI_API_SVC->service_register(groupcreate);
|
||||
#endif
|
||||
|
||||
WASABI_API_SVC->service_register(skinapisvc = new SkinApiService());
|
||||
|
||||
#endif
|
||||
|
||||
#ifdef WASABI_COMPILE_MAKIDEBUG
|
||||
// ------------------------------------------------------------------------
|
||||
// Init script debugger api
|
||||
// ------------------------------------------------------------------------
|
||||
debug = new MakiDebuggerApi();
|
||||
debugApi = debug;
|
||||
WASABI_API_SVC->service_register(makidebugapisvc = new MakiDebugApiService());
|
||||
#endif
|
||||
|
||||
#ifdef WASABI_COMPILE_SKIN
|
||||
widgets = new Widgets();
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
DebugStringW(L"Auto-initializing %d services (user pass)\n", staticServiceMgr->__m_modules.getNumItems());
|
||||
MODULE_SVCMGR_ONINIT();
|
||||
|
||||
#ifndef WA3COMPATIBILITY
|
||||
|
||||
#ifdef WASABI_COMPILE_SCRIPT
|
||||
// ------------------------------------------------------------------------
|
||||
// Init scripting api
|
||||
// ------------------------------------------------------------------------
|
||||
maki = new api_makiI();
|
||||
makiApi = maki;
|
||||
WASABI_API_SVC->service_register(makiapisvc = new MakiApiService());
|
||||
maki->init();
|
||||
|
||||
|
||||
|
||||
#ifdef WASABI_COMPILE_WNDMGR
|
||||
garbageCollector = new GarbageCollector();
|
||||
#endif
|
||||
|
||||
ObjectTable::start();
|
||||
#endif
|
||||
|
||||
#endif //wa3compat
|
||||
|
||||
return 1; // success
|
||||
}
|
||||
|
||||
int ApiInit::shutdown()
|
||||
{
|
||||
#ifndef WA3COMPATIBILITY
|
||||
|
||||
garbageCollector->gccb_onGarbageCollect();
|
||||
delete garbageCollector;
|
||||
|
||||
#ifdef WASABI_COMPILE_SKIN
|
||||
skin->preShutdown();
|
||||
#endif
|
||||
|
||||
MODULE_SVCMGR_ONSHUTDOWN();
|
||||
|
||||
#ifdef _WIN32
|
||||
ComponentManager::unloadAll();
|
||||
#else
|
||||
#warning port me?
|
||||
#endif
|
||||
|
||||
WASABI_API_SVC->service_deregister(skinapisvc);
|
||||
delete skin;
|
||||
skinApi = NULL;
|
||||
|
||||
delete skinapisvc;
|
||||
skinapisvc = 0;
|
||||
|
||||
#ifdef WASABI_COMPILE_SCRIPT
|
||||
ObjectTable::shutdown();
|
||||
#endif
|
||||
|
||||
#ifdef WASABI_COMPILE_SKIN
|
||||
delete widgets;
|
||||
widgets = NULL;
|
||||
#endif
|
||||
WASABI_API_SVC->service_deregister(makiapisvc);
|
||||
delete maki;
|
||||
makiApi = NULL;
|
||||
|
||||
delete makiapisvc;
|
||||
makiapisvc = 0;
|
||||
|
||||
#ifdef WASABI_COMPILE_COMPONENTS
|
||||
WASABI_API_SVC->service_deregister(groupcreate);
|
||||
delete groupcreate;
|
||||
groupcreate = 0;
|
||||
#endif
|
||||
|
||||
WASABI_API_SVC->service_deregister(win32Font);
|
||||
delete win32Font;
|
||||
win32Font = 0;
|
||||
|
||||
#ifdef WASABI_COMPILE_MEDIACORE
|
||||
#ifndef WA3COMPATIBILITY
|
||||
#ifdef WASABI_CUSTOMIMPL_MEDIACORE
|
||||
destroyCustomCoreApi(coreApi);
|
||||
#else
|
||||
#error "not done yet"
|
||||
#endif
|
||||
#endif
|
||||
|
||||
WASABI_API_SVC->service_deregister(coreapisvc);
|
||||
delete coreapisvc;
|
||||
coreapisvc = 0;
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
WASABI_API_SVC->service_deregister(wndmgrapisvc);
|
||||
delete wndmgr;
|
||||
wndManagerApi = NULL;
|
||||
|
||||
|
||||
delete wndmgrapisvc;
|
||||
wndmgrapisvc = 0;
|
||||
|
||||
|
||||
delete loc;
|
||||
localesApi = NULL;
|
||||
|
||||
WASABI_API_SVC->service_deregister(localesapisvc);
|
||||
delete localesapisvc;
|
||||
localesapisvc = 0;
|
||||
|
||||
|
||||
#ifdef WASABI_COMPILE_FILEREADER
|
||||
#ifdef WASABI_COMPILE_ZIPREADER
|
||||
WASABI_API_SVC->service_deregister(zipRead);
|
||||
delete zipRead;
|
||||
#endif
|
||||
|
||||
|
||||
delete fr;
|
||||
fileApi = NULL;
|
||||
|
||||
WASABI_API_SVC->service_deregister(frapisvc);
|
||||
delete frapisvc;
|
||||
frapisvc = 0;
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
delete mainWnd;
|
||||
mainWnd = NULL;
|
||||
delete default_mainWnd;
|
||||
default_mainWnd = NULL;
|
||||
WASABI_API_SVC->service_deregister(wndapisvc);
|
||||
delete wnd;
|
||||
wndApi = NULL;
|
||||
|
||||
delete wndapisvc;
|
||||
wndapisvc = 0;
|
||||
|
||||
#ifdef WASABI_COMPILE_FONTS
|
||||
WASABI_API_SVC->service_deregister(fontapisvc);
|
||||
delete font;
|
||||
fontApi = NULL;
|
||||
|
||||
delete fontapisvc;
|
||||
fontapisvc = 0;
|
||||
#endif
|
||||
|
||||
#ifndef WA3COMPATIBILITY
|
||||
|
||||
|
||||
delete img;
|
||||
imgLoaderApi = NULL;
|
||||
|
||||
WASABI_API_SVC->service_deregister(imgldrapisvc);
|
||||
delete imgldrapisvc;
|
||||
imgldrapisvc = 0;
|
||||
|
||||
#ifdef WASABI_COMPILE_CONFIG
|
||||
WASABI_API_SVC->service_deregister(cfgapisvc);
|
||||
delete cfg;
|
||||
configApi = NULL;
|
||||
|
||||
delete cfgapisvc;
|
||||
cfgapisvc = 0;
|
||||
#endif
|
||||
|
||||
MODULE_SVCMGR_ONSHUTDOWN2();
|
||||
|
||||
WASABI_API_MEMMGR = NULL;
|
||||
|
||||
applicationApi=NULL;
|
||||
#endif //wa3compatibility
|
||||
|
||||
#ifdef WASABI_COMPILE_MAKIDEBUG
|
||||
delete debug;
|
||||
debugApi = NULL;
|
||||
|
||||
WASABI_API_SVC->service_deregister(makidebugapisvc);
|
||||
delete makidebugapisvc;
|
||||
makidebugapisvc = 0;
|
||||
#endif
|
||||
|
||||
if (alphaMgr)
|
||||
delete alphaMgr;
|
||||
alphaMgr=0;
|
||||
|
||||
// TODO: releaseInterface
|
||||
timerApi = NULL;
|
||||
|
||||
Tataki::Quit();
|
||||
sysCallbackApi = NULL;
|
||||
|
||||
return 1; // success
|
||||
}
|
||||
|
||||
int ApiInit::getInitCount()
|
||||
{
|
||||
return initcount;
|
||||
}
|
||||
|
||||
#ifdef WASABI_COMPILE_SKIN
|
||||
#ifdef WASABI_COMPILE_COMPONENTS
|
||||
waServiceFactoryI * ApiInit::groupcreate = NULL;
|
||||
#endif
|
||||
#endif //WASABI_COMPILE_SKIN
|
||||
|
||||
#ifdef WASABI_COMPILE_FONTS
|
||||
waServiceFactoryI * ApiInit::win32Font = NULL;
|
||||
FontApiService *ApiInit::fontapisvc = NULL;
|
||||
#endif //WASABI_COMPILE_FONTS
|
||||
|
||||
#ifdef WASABI_COMPILE_SKIN
|
||||
Widgets * ApiInit::widgets = NULL;
|
||||
SkinApiService *ApiInit::skinapisvc = NULL;
|
||||
#endif
|
||||
|
||||
#ifdef WASABI_COMPILE_CONFIG
|
||||
api_configI * ApiInit::cfg = NULL;
|
||||
ConfigApiService *ApiInit::cfgapisvc = NULL;
|
||||
#endif
|
||||
|
||||
#ifdef WASABI_COMPILE_IMGLDR
|
||||
ImgLdrApi * ApiInit::img = NULL;
|
||||
ImgLdrApiService *ApiInit::imgldrapisvc = NULL;
|
||||
#endif
|
||||
|
||||
#ifdef WASABI_COMPILE_FONTS
|
||||
FontApi * ApiInit::font = NULL;
|
||||
#endif
|
||||
|
||||
#ifdef WASABI_COMPILE_FILEREADER
|
||||
FileReaderApi * ApiInit::fr = NULL;
|
||||
#ifdef WASABI_COMPILE_ZIPREADER
|
||||
waServiceFactoryI * ApiInit::zipRead = NULL;
|
||||
#endif
|
||||
FileReaderApiService *ApiInit::frapisvc = NULL;
|
||||
#endif
|
||||
|
||||
#ifdef WASABI_COMPILE_LOCALES
|
||||
api_localesI * ApiInit::loc = NULL;
|
||||
LocalesApiService *ApiInit::localesapisvc = NULL;
|
||||
#endif
|
||||
|
||||
#ifdef WASABI_COMPILE_WND
|
||||
WndApi * ApiInit::wnd = NULL;
|
||||
ForeignWnd * ApiInit::mainWnd = NULL;
|
||||
ClickWnd * ApiInit::default_mainWnd = NULL;
|
||||
WndApiService *ApiInit::wndapisvc = NULL;
|
||||
#endif
|
||||
|
||||
#ifdef WASABI_COMPILE_WNDMGR
|
||||
WndMgrApi * ApiInit::wndmgr = NULL;
|
||||
WndMgrApiService *ApiInit::wndmgrapisvc = NULL;
|
||||
#endif
|
||||
|
||||
#ifdef WASABI_COMPILE_SCRIPT
|
||||
api_makiI * ApiInit::maki = NULL;
|
||||
MakiApiService *ApiInit::makiapisvc = NULL;
|
||||
#endif
|
||||
|
||||
#ifdef WASABI_COMPILE_SKIN
|
||||
SkinApi * ApiInit::skin = NULL;
|
||||
#endif
|
||||
|
||||
#ifdef WASABI_COMPILE_MAKIDEBUG
|
||||
MakiDebuggerApi * ApiInit::debug = NULL;
|
||||
MakiDebugApiService *ApiInit::makidebugapisvc = NULL;
|
||||
#endif
|
||||
|
||||
#ifdef WASABI_COMPILE_MEDIACORE
|
||||
CoreApiService *ApiInit::coreapisvc = NULL;
|
||||
#endif
|
||||
|
||||
|
||||
int ApiInit::initcount = 0;
|
||||
|
||||
api_memmgr *memmgrApi = NULL;
|
Loading…
Add table
Add a link
Reference in a new issue