sdl3-bindgen-sys
Safe HaskellNone
LanguageGHC2021

SDL3.Sys.Bindgen.Main.Safe

Synopsis

Documentation

sDL_SetMainReady :: IO () Source #

Circumvent failure of SDL_Init() when not using SDL_main() as an entry point.

This function is defined in SDL_main.h, along with the preprocessor rule to redefine main() as SDL_main(). Thus to ensure that your main() function will not be changed it is necessary to define SDL_MAIN_HANDLED before including SDL.h.

Thread safety
This function is not thread safe.
See also
SDL_Init
C declaration
SDL_SetMainReady, defined at SDL3/SDL_main.h 549:34

Since: 3.2.0

sDL_RunApp Source #

Arguments

:: CInt
argc
the argc parameter from the application's main() function, or 0 if the platform's main-equivalent has no argc.
-> Ptr (Elem (IncompleteArray (Ptr CChar)))
argv
the argv parameter from the application's main() function, or NULL if the platform's main-equivalent has no argv.
-> SDL_main_func
mainFunction
your SDL app's C-style main(). NOT the function you're calling this from! Its name doesn't matter; it doesn't literally have to be main.
-> Ptr Void
reserved
should be NULL (reserved for future use, will probably be platform-specific then).
-> IO CInt 

Initializes and launches an SDL application, by doing platform-specific initialization before calling your mainFunction and cleanups after it returns, if that is needed for a specific platform, otherwise it just calls mainFunction.

You can use this if you want to use your own main() implementation without using SDL_main (like when using SDL_MAIN_HANDLED). When using this, you do not need SDL_SetMainReady().

If argv is NULL, SDL will provide command line arguments, either by querying the OS for them if possible, or supplying a filler array if not.

Returns
the return value from mainFunction: 0 on success, otherwise failure; SDL_GetError() might have more information on the failure.
Thread safety
Generally this is called once, near startup, from the process's initial thread.
C declaration
SDL_RunApp, defined at SDL3/SDL_main.h 582:33

Since: 3.2.0

sDL_EnterAppMainCallbacks Source #

Arguments

:: CInt
argc
standard Unix main argc.
-> Ptr (Elem (IncompleteArray (Ptr CChar)))
argv
standard Unix main argv.
-> SDL_AppInit_func
appinit
the application's SDL_AppInit function.
-> SDL_AppIterate_func
appiter
the application's SDL_AppIterate function.
-> SDL_AppEvent_func
appevent
the application's SDL_AppEvent function.
-> SDL_AppQuit_func
appquit
the application's SDL_AppQuit function.
-> IO CInt 

An entry point for SDL's use in SDL_MAIN_USE_CALLBACKS.

Generally, you should not call this function directly. This only exists to hand off work into SDL as soon as possible, where it has a lot more control and functionality available, and make the inline code in SDL_main.h as small as possible.

Not all platforms use this, it's actual use is hidden in a magic header-only library, and you should not call this directly unless you really know what you're doing.

Returns
standard Unix main return value.
Thread safety
It is not safe to call this anywhere except as the only function call in SDL_main.
C declaration
SDL_EnterAppMainCallbacks, defined at SDL3/SDL_main.h 609:33

Since: 3.2.0

sDL_GDKSuspendComplete :: IO () Source #

Callback from the application to let the suspend continue.

This should be called from an event watch in response to an SDL_EVENT_DID_ENTER_BACKGROUND event.

When using SDL_Render, your event watch should be added after creating the SDL_Renderer; this allows the timing of the D3D12 command queue suspension to execute in the correct order.

When using SDL_GPU, this should be called after calling SDL_GDKSuspendGPU.

If you're writing your own D3D12 renderer, this should be called after calling ID3D12CommandQueue::SuspendX.

This function is only needed for Xbox GDK support; all other platforms will do nothing and set an "unsupported" error message.

Thread safety
This function is not thread safe.
See also
SDL_AddEventWatch
C declaration
SDL_GDKSuspendComplete, defined at SDL3/SDL_main.h 688:34

Since: 3.2.0