code.witches.io/go/sdl2@v0.1.1/init.go (about)

     1  package sdl
     2  
     3  // #include <SDL2/SDL.h>
     4  import "C"
     5  import (
     6  	"time"
     7  
     8  	"code.witches.io/go/sdl2/internal"
     9  )
    10  
    11  type InitFlag uint32
    12  
    13  const (
    14  	InitTimer          InitFlag = 0x00000001
    15  	InitAudio          InitFlag = 0x00000010
    16  	InitVideo          InitFlag = 0x00000020
    17  	InitJoystick       InitFlag = 0x00000200
    18  	InitHaptic         InitFlag = 0x00001000
    19  	InitGameController InitFlag = 0x00002000
    20  	InitEvents         InitFlag = 0x00004000
    21  	InitNoParachute    InitFlag = 0x00100000
    22  	InitEverything     InitFlag = InitTimer | InitAudio | InitVideo | InitJoystick | InitHaptic | InitGameController | InitEvents
    23  )
    24  
    25  var timeInit time.Time
    26  
    27  func Init(flags InitFlag) error {
    28  	if C.SDL_Init(C.Uint32(flags)) != 0 {
    29  		return GetError()
    30  	}
    31  	ClearError()
    32  	timeInit = time.Now()
    33  	return nil
    34  }
    35  
    36  func InitSubSystem(flags InitFlag) error {
    37  	if C.SDL_InitSubSystem(C.Uint32(flags)) != 0 {
    38  		return GetError()
    39  	}
    40  	return nil
    41  }
    42  
    43  func Quit() {
    44  	close(quit)
    45  	internal.Cleanup.Wait()
    46  
    47  	C.SDL_Quit()
    48  }
    49  
    50  func QuitSubSystem(flags InitFlag) {
    51  	C.SDL_QuitSubSystem(C.Uint32(flags))
    52  }