#ifndef SDLUTIL_H #define SDLUTIL_H #include #include #include struct AtomicFlag { AtomicFlag() { clear(); } void set() { SDL_AtomicSet(&atom, 1); } void clear() { SDL_AtomicSet(&atom, 0); } operator bool() const { return SDL_AtomicGet(&atom); } private: mutable SDL_atomic_t atom; }; template int __sdlThreadFun(void *obj) { (static_cast(obj)->*func)(); return 0; } template SDL_Thread *createSDLThread(C *obj, const std::string &name = std::string()) { return SDL_CreateThread(__sdlThreadFun, name.c_str(), obj); } #endif // SDLUTIL_H