--- deliantra/Deliantra-Client/Client.xs 2011/12/29 07:13:44 1.312 +++ deliantra/Deliantra-Client/Client.xs 2012/01/18 23:34:44 1.315 @@ -579,13 +579,17 @@ } static void -deliantra_main () +deliantra_main (SV *real_main) { - char *argv[] = { 0 }; - call_argv ("DC::Main::main", G_DISCARD | G_VOID, argv); + dSP; + + PUSHMARK (SP); + call_sv (real_main, G_DISCARD | G_VOID); } #ifdef __MACOSX__ + static SV *real_main; + /* to due surprising braindamage on the side of SDL design, we * do some mind-boggling hack here: SDL requires a custom main() * on OS X, so... we provide one and call the original main(), which, @@ -595,7 +599,7 @@ extern C_LINKAGE int main (int argc, char *argv[]) { - deliantra_main (); + deliantra_main (real_main); } #undef main @@ -603,16 +607,18 @@ extern C_LINKAGE int main (int argc, char *argv[]); static void - SDL_braino (void) + SDL_main_hack (SV *real_main_) { + real_main = real_main_; + char *argv[] = { "deliantra client", 0 }; (main) (1, argv); } #else static void - SDL_braino (void) + SDL_main_hack (SV *real_main) { - deliantra_main (); + deliantra_main (real_main); } #endif @@ -873,7 +879,8 @@ char *SDL_GetError () -void SDL_braino () +void SDL_main_hack (SV *real_main) + PROTOTYPE: & int SDL_Init (U32 flags) @@ -952,12 +959,9 @@ if (RETVAL) { av_clear (texture_av); - - SDL_WM_SetCaption ("Deliantra MORPG Client " VERSION, "Deliantra"); #define GL_FUNC(ptr,name) gl.name = (ptr)SDL_GL_GetProcAddress ("gl" # name); #include "glfunc.h" #undef GL_FUNC - if (!gl.ActiveTexture ) gl.ActiveTexture = gl.ActiveTextureARB; if (!gl.MultiTexCoord2f) gl.MultiTexCoord2f = gl.MultiTexCoord2fARB; } @@ -966,6 +970,9 @@ RETVAL void +SDL_WM_SetCaption (const char *title, const char *icon) + +void SDL_GL_SwapBuffers () char *