include/SDL_main.h
author Sam Lantinga <slouken@libsdl.org>
Wed, 05 Jun 2013 21:23:59 -0700
changeset 7281 cd5516b9263d
parent 7191 75360622e65f
child 7335 13b67be8e3af
permissions -rw-r--r--
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
slouken@0
     1
/*
slouken@5535
     2
  Simple DirectMedia Layer
slouken@6885
     3
  Copyright (C) 1997-2013 Sam Lantinga <slouken@libsdl.org>
slouken@0
     4
slouken@5535
     5
  This software is provided 'as-is', without any express or implied
slouken@5535
     6
  warranty.  In no event will the authors be held liable for any damages
slouken@5535
     7
  arising from the use of this software.
slouken@0
     8
slouken@5535
     9
  Permission is granted to anyone to use this software for any purpose,
slouken@5535
    10
  including commercial applications, and to alter it and redistribute it
slouken@5535
    11
  freely, subject to the following restrictions:
slouken@0
    12
slouken@5535
    13
  1. The origin of this software must not be misrepresented; you must not
slouken@5535
    14
     claim that you wrote the original software. If you use this software
slouken@5535
    15
     in a product, an acknowledgment in the product documentation would be
slouken@5535
    16
     appreciated but is not required.
slouken@5535
    17
  2. Altered source versions must be plainly marked as such, and must not be
slouken@5535
    18
     misrepresented as being the original software.
slouken@5535
    19
  3. This notice may not be removed or altered from any source distribution.
slouken@0
    20
*/
slouken@0
    21
slouken@0
    22
#ifndef _SDL_main_h
slouken@0
    23
#define _SDL_main_h
slouken@0
    24
slouken@1356
    25
#include "SDL_stdinc.h"
slouken@1356
    26
slouken@3407
    27
/**
slouken@3407
    28
 *  \file SDL_main.h
slouken@7191
    29
 *
slouken@3407
    30
 *  Redefine main() on some platforms so that it is called by SDL.
slouken@3407
    31
 */
slouken@0
    32
slouken@5320
    33
#if defined(__WIN32__) || defined(__IPHONEOS__) || defined(__ANDROID__)
slouken@5320
    34
#ifndef SDL_MAIN_HANDLED
slouken@5320
    35
#define SDL_MAIN_NEEDED
slouken@5320
    36
#endif
slouken@5320
    37
#endif
slouken@0
    38
slouken@0
    39
#ifdef __cplusplus
slouken@7191
    40
#define C_LINKAGE   "C"
slouken@0
    41
#else
slouken@0
    42
#define C_LINKAGE
slouken@0
    43
#endif /* __cplusplus */
slouken@0
    44
slouken@3407
    45
/**
slouken@3407
    46
 *  \file SDL_main.h
slouken@3407
    47
 *
slouken@3407
    48
 *  The application's main() function must be called with C linkage,
slouken@3407
    49
 *  and should be declared like this:
slouken@3407
    50
 *  \code
slouken@3407
    51
 *  #ifdef __cplusplus
slouken@3407
    52
 *  extern "C"
slouken@3407
    53
 *  #endif
slouken@3407
    54
 *  int main(int argc, char *argv[])
slouken@3407
    55
 *  {
slouken@3407
    56
 *  }
slouken@3407
    57
 *  \endcode
slouken@0
    58
 */
slouken@3407
    59
slouken@5320
    60
#ifdef SDL_MAIN_NEEDED
slouken@7191
    61
#define main    SDL_main
slouken@5320
    62
#endif
slouken@0
    63
slouken@3407
    64
/**
slouken@3407
    65
 *  The prototype for the application's main() function
slouken@3407
    66
 */
slouken@0
    67
extern C_LINKAGE int SDL_main(int argc, char *argv[]);
slouken@0
    68
slouken@0
    69
slouken@0
    70
#include "begin_code.h"
slouken@0
    71
#ifdef __cplusplus
slouken@0
    72
extern "C" {
slouken@0
    73
#endif
slouken@0
    74
slouken@7281
    75
/*
slouken@7281
    76
 *  This is called by the real SDL main function to let the rest of the
slouken@7281
    77
 *  library know that initialization was done properly.
slouken@7281
    78
 *
slouken@7281
    79
 *  Calling this yourself without knowing what you're doing can cause
slouken@7281
    80
 *  crashes and hard to diagnose problems with your application.
slouken@7281
    81
 */
slouken@7281
    82
extern DECLSPEC void SDL_SetMainReady(void);
slouken@7281
    83
slouken@5320
    84
#ifdef __WIN32__
slouken@5320
    85
slouken@3407
    86
/**
slouken@3407
    87
 *  This can be called to set the application class at startup
slouken@3407
    88
 */
slouken@1895
    89
extern DECLSPEC int SDLCALL SDL_RegisterApp(char *name, Uint32 style,
slouken@1895
    90
                                            void *hInst);
slouken@1466
    91
extern DECLSPEC void SDLCALL SDL_UnregisterApp(void);
slouken@1895
    92
slouken@5320
    93
#endif /* __WIN32__ */
slouken@5320
    94
slouken@5320
    95
slouken@0
    96
#ifdef __cplusplus
slouken@0
    97
}
slouken@0
    98
#endif
slouken@0
    99
#include "close_code.h"
slouken@0
   100
slouken@0
   101
#endif /* _SDL_main_h */
slouken@1895
   102
slouken@1895
   103
/* vi: set ts=4 sw=4 expandtab: */