1 module allegro5.system; 2 3 import allegro5.internal.da5; 4 import allegro5.config; 5 import allegro5.path; 6 import allegro5.base; 7 8 import core.thread; 9 import core.stdc.stdlib : atexit; 10 11 extern (C) void rt_moduleTlsCtor(); 12 extern (C) void rt_moduleTlsDtor(); 13 14 int al_run_allegro(scope int delegate() user_main) 15 { 16 extern(C) static int main_runner(int argc, char** argv) 17 { 18 version(OSX) 19 { 20 thread_attachThis(); 21 rt_moduleTlsCtor(); 22 } 23 24 auto main_ret = (*cast(int delegate()*)argv[0])(); 25 26 version(OSX) 27 { 28 thread_detachThis(); 29 rt_moduleTlsDtor(); 30 } 31 32 return main_ret; 33 } 34 35 char* fake_arg = cast(char*)&user_main; 36 return al_run_main(0, &fake_arg, &main_runner); 37 } 38 39 nothrow @nogc extern (C) 40 { 41 struct ALLEGRO_SYSTEM {}; 42 43 bool al_install_system(int vers, int function(void function()) atexit_ptr); 44 void al_uninstall_system(); 45 bool al_is_system_installed(); 46 ALLEGRO_SYSTEM* al_get_system_driver(); 47 ALLEGRO_CONFIG* al_get_system_config(); 48 49 bool al_init() 50 { 51 return al_install_system(ALLEGRO_VERSION_INT, &atexit); 52 } 53 54 enum 55 { 56 ALLEGRO_RESOURCES_PATH = 0, 57 ALLEGRO_TEMP_PATH, 58 ALLEGRO_USER_DATA_PATH, 59 ALLEGRO_USER_HOME_PATH, 60 ALLEGRO_USER_SETTINGS_PATH, 61 ALLEGRO_USER_DOCUMENTS_PATH, 62 ALLEGRO_EXENAME_PATH, 63 ALLEGRO_LAST_PATH // must be last 64 } 65 66 ALLEGRO_PATH* al_get_standard_path(int id); 67 void al_set_exe_name(in char* path); 68 69 void al_set_org_name(in char* orgname); 70 void al_set_app_name(in char* appname); 71 const(char)* al_get_org_name(); 72 const(char)* al_get_app_name(); 73 74 bool al_inhibit_screensaver(bool inhibit); 75 }