sdlCreateThread function

extern DECLSPEC SDL_Thread *SDLCALL SDL_CreateThread(SDL_ThreadFunction fn, const char *name, void *data, pfnSDL_CurrentBeginThread pfnBeginThread, pfnSDL_CurrentEndThread pfnEndThread)

Implementation

Pointer<SdlThread> sdlCreateThread(
    Pointer<NativeFunction<SdlThreadFunction>> fn,
    String? name,
    Pointer<NativeType> data,
    Pointer<NativeFunction<PfnSdlCurrentBeginThread>> pfnBeginThread,
    Pointer<NativeFunction<PfnSdlCurrentEndThread>> pfnEndThread) {
  final sdlCreateThreadLookupFunction = libSdl2.lookupFunction<
          Pointer<SdlThread> Function(
              Pointer<NativeFunction<SdlThreadFunction>> fn,
              Pointer<Utf8> name,
              Pointer<NativeType> data,
              Pointer<NativeFunction<PfnSdlCurrentBeginThread>> pfnBeginThread,
              Pointer<NativeFunction<PfnSdlCurrentEndThread>> pfnEndThread),
          Pointer<SdlThread> Function(
              Pointer<NativeFunction<SdlThreadFunction>> fn,
              Pointer<Utf8> name,
              Pointer<NativeType> data,
              Pointer<NativeFunction<PfnSdlCurrentBeginThread>> pfnBeginThread,
              Pointer<NativeFunction<PfnSdlCurrentEndThread>> pfnEndThread)>(
      'SDL_CreateThread');
  final namePointer = name != null ? name.toNativeUtf8() : nullptr;
  final result = sdlCreateThreadLookupFunction(
      fn, namePointer, data, pfnBeginThread, pfnEndThread);
  calloc.free(namePointer);
  return result;
}