SDL-mirror/src/main/psp/SDL_psp_main.c

81 lines
2.3 KiB
C
Raw Normal View History

2013-03-17 20:07:02 +08:00
/*
Simple DirectMedia Layer
Copyright (C) 1997-2014 Sam Lantinga <slouken@libsdl.org>
2013-03-17 20:07:02 +08:00
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
arising from the use of this software.
Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute it
freely, subject to the following restrictions:
1. The origin of this software must not be misrepresented; you must not
claim that you wrote the original software. If you use this software
in a product, an acknowledgment in the product documentation would be
appreciated but is not required.
2. Altered source versions must be plainly marked as such, and must not be
misrepresented as being the original software.
3. This notice may not be removed or altered from any source distribution.
*/
#include "SDL_main.h"
#include <pspkernel.h>
#include <pspdebug.h>
#include <pspsdk.h>
#include <pspthreadman.h>
#include <stdlib.h>
#include <stdio.h>
/* If application's main() is redefined as SDL_main, and libSDLmain is
linked, then this file will create the standard exit callback,
define the PSP_MODULE_INFO macro, and exit back to the browser when
the program is finished.
2013-03-17 20:07:02 +08:00
You can still override other parameters in your own code if you
desire, such as PSP_HEAP_SIZE_KB, PSP_MAIN_THREAD_ATTR,
PSP_MAIN_THREAD_STACK_SIZE, etc.
*/
PSP_MODULE_INFO("SDL App", 0, 1, 1);
int sdl_psp_exit_callback(int arg1, int arg2, void *common)
{
exit(0);
return 0;
2013-03-17 20:07:02 +08:00
}
int sdl_psp_callback_thread(SceSize args, void *argp)
{
int cbid;
cbid = sceKernelCreateCallback("Exit Callback",
sdl_psp_exit_callback, NULL);
sceKernelRegisterExitCallback(cbid);
sceKernelSleepThreadCB();
return 0;
2013-03-17 20:07:02 +08:00
}
int sdl_psp_setup_callbacks(void)
{
int thid = 0;
thid = sceKernelCreateThread("update_thread",
sdl_psp_callback_thread, 0x11, 0xFA0, 0, 0);
if(thid >= 0)
sceKernelStartThread(thid, 0, 0);
return thid;
2013-03-17 20:07:02 +08:00
}
int main(int argc, char *argv[])
{
pspDebugScreenInit();
sdl_psp_setup_callbacks();
2013-03-17 20:07:02 +08:00
/* Register sceKernelExitGame() to be called when we exit */
atexit(sceKernelExitGame);
2013-03-17 20:07:02 +08:00
Added some extra protection to notify the developer if they haven't initialized the application properly. This will help reduce issues like that reported in bug 1819: Wouter van Oortmerssen 2013-04-23 20:12:07 EDT #0 0x01d1e881 in __HALT () #1 0x01c58971 in _CFRuntimeCreateInstance () #2 0x02e4acc1 in GSFontCreateWithName () #3 0x00adc0e1 in UINewFont () #4 0x00adc24c in +[UIFont systemFontOfSize:traits:] () #5 0x00adc298 in +[UIFont systemFontOfSize:] () #6 0x009fb5d9 in +[UITextFieldLabel defaultFont] () #7 0x00a8ccd5 in -[UILabel _commonInit] () #8 0x00a8ce14 in -[UILabel initWithFrame:] () #9 0x00a052eb in -[UITextField createTextLabelWithTextColor:] () #10 0x009fbede in -[UITextField initWithFrame:] () #11 0x00152ead in -[SDL_uikitview initializeKeyboard] at /Users/aardappel/lobster/external/SDL-2.0.0-7046/Xcode-iOS/SDL/../../src/video/uikit/SDL_uikitview.m:208 #12 0x0015290c in -[SDL_uikitview initWithFrame:] at /Users/aardappel/lobster/external/SDL-2.0.0-7046/Xcode-iOS/SDL/../../src/video/uikit/SDL_uikitview.m:50 #13 0x00153b5b in -[SDL_uikitopenglview initWithFrame:scale:retainBacking:rBits:gBits:bBits:aBits:depthBits:stencilBits:majorVersion:] at /Users/aardappel/lobster/external/SDL-2.0.0-7046/Xcode-iOS/SDL/../../src/video/uikit/SDL_uikitopenglview.m:53 #14 0x001524ff in UIKit_GL_CreateContext at /Users/aardappel/lobster/external/SDL-2.0.0-7046/Xcode-iOS/SDL/../../src/video/uikit/SDL_uikitopengles.m:114 #15 0x0015078f in SDL_GL_CreateContext at /Users/aardappel/lobster/external/SDL-2.0.0-7046/Xcode-iOS/SDL/../../src/video/SDL_video.c:2666 #16 0x000d8c5c in SDLInit(char const*, vec<int, 2>&) at /Users/aardappel/lobster/dev/xcode/lobster/../../src/sdlsystem.cpp:193
2013-06-05 21:23:59 -07:00
SDL_SetMainReady();
(void)SDL_main(argc, argv);
return 0;
2013-03-17 20:07:02 +08:00
}