= SDL_atomic_t = A structure representing an atomic integer value. == Data Fields == {| |int |'''value''' |the atomic integer value |} == Code Examples == /* This is a simple fps counter program * * Timers in SDL are run in a separate thread * so effort is needed to avoid data races */ SDL_atomic_t frames; /* Calculate and display the average framerate over the set interval */ Uint32 fps_timer_callback(Uint32 interval, void *data) { const float f = SDL_AtomicGet(&frames); const float iv = interval * 0.001f; /* Note: the thread safety of printf is ambiguous across platforms */ printf("%.2f\tfps\n", f / iv); /* Reset frame counter */ SDL_AtomicSet(&frames, 0); return interval; } int main(int argc, char **argv) { SDL_Init(SDL_INIT_EVERYTHING); SDL_Window *win = SDL_CreateWindow("Counter", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 640, 480, 0 ); SDL_Surface *screen = SDL_GetWindowSurface(win); /* Our timer will be run every five seconds in a separate thread */ SDL_AddTimer(5000, fps_timer_callback, NULL); SDL_Event e; while(1) { while (SDL_PollEvent(&e)) { if (e.type == SDL_EVENT_QUIT) { goto quit; } } SDL_FillSurfaceRect(screen, NULL, 0xffffffff); SDL_UpdateWindowSurface(win); /* Add one frame */ SDL_AtomicAdd(&frames, 1); } quit: SDL_DestroyWindow(win); SDL_Quit(); return 0; } == Remarks == [[SDL_atomic_t]] is a structure so people don't accidentally use numeric operations on it. Instead, you should use the atomic operation functions to work with the integer value. == Related Functions == :[[SDL_AtomicAdd]] :[[SDL_AtomicCAS]] :[[SDL_AtomicDecRef]] :[[SDL_AtomicGet]] :[[SDL_AtomicIncRef]] :[[SDL_AtomicSet]] ---- [[CategoryStruct]], [[CategoryAtomic]]