SDL  2.0
testtimer.c File Reference
#include <stdlib.h>
#include <stdio.h>
#include "SDL.h"
+ Include dependency graph for testtimer.c:

Go to the source code of this file.

Macros

#define DEFAULT_RESOLUTION   1
 

Functions

static Uint32 ticktock (Uint32 interval, void *param)
 
static Uint32 callback (Uint32 interval, void *param)
 
int main (int argc, char *argv[])
 

Variables

static int ticks = 0
 

Macro Definition Documentation

◆ DEFAULT_RESOLUTION

#define DEFAULT_RESOLUTION   1

Definition at line 22 of file testtimer.c.

Referenced by main().

Function Documentation

◆ callback()

static Uint32 callback ( Uint32  interval,
void param 
)
static

Definition at line 34 of file testtimer.c.

References SDL_Log.

Referenced by main(), SDL_AddTimer(), SDL_CaptureAudio(), SDL_LogSetOutputFunction(), SDL_RunAudio(), SDL_SetWindowHitTest(), SDLTest_SetTestTimeout(), wl_display_sync(), and wl_surface_frame().

35 {
36  SDL_Log("Timer %d : param = %d\n", interval, (int) (uintptr_t) param);
37  return interval;
38 }
#define SDL_Log
unsigned int uintptr_t
GLfloat param

◆ main()

int main ( int  argc,
char *  argv[] 
)

Definition at line 41 of file testtimer.c.

References callback(), DEFAULT_RESOLUTION, i, NULL, SDL_AddTimer, SDL_Delay, SDL_GetError, SDL_GetPerformanceCounter, SDL_GetPerformanceFrequency(), SDL_GetTicks(), SDL_Init, SDL_INIT_TIMER, SDL_Log, SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_INFO, SDL_LogError, SDL_LogSetPriority, SDL_PRIu64, SDL_Quit, SDL_RemoveTimer, ticks, and ticktock().

42 {
43  int i, desired;
44  SDL_TimerID t1, t2, t3;
45  Uint32 start32, now32;
46  Uint64 start, now;
47 
48  /* Enable standard application logging */
50 
51  if (SDL_Init(SDL_INIT_TIMER) < 0) {
52  SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Couldn't initialize SDL: %s\n", SDL_GetError());
53  return (1);
54  }
55 
56  /* Start the timer */
57  desired = 0;
58  if (argv[1]) {
59  desired = atoi(argv[1]);
60  }
61  if (desired == 0) {
62  desired = DEFAULT_RESOLUTION;
63  }
64  t1 = SDL_AddTimer(desired, ticktock, NULL);
65 
66  /* Wait 10 seconds */
67  SDL_Log("Waiting 10 seconds\n");
68  SDL_Delay(10 * 1000);
69 
70  /* Stop the timer */
71  SDL_RemoveTimer(t1);
72 
73  /* Print the results */
74  if (ticks) {
75  SDL_Log("Timer resolution: desired = %d ms, actual = %f ms\n",
76  desired, (double) (10 * 1000) / ticks);
77  }
78 
79  /* Test multiple timers */
80  SDL_Log("Testing multiple timers...\n");
81  t1 = SDL_AddTimer(100, callback, (void *) 1);
82  if (!t1)
83  SDL_LogError(SDL_LOG_CATEGORY_APPLICATION,"Could not create timer 1: %s\n", SDL_GetError());
84  t2 = SDL_AddTimer(50, callback, (void *) 2);
85  if (!t2)
86  SDL_LogError(SDL_LOG_CATEGORY_APPLICATION,"Could not create timer 2: %s\n", SDL_GetError());
87  t3 = SDL_AddTimer(233, callback, (void *) 3);
88  if (!t3)
89  SDL_LogError(SDL_LOG_CATEGORY_APPLICATION,"Could not create timer 3: %s\n", SDL_GetError());
90 
91  /* Wait 10 seconds */
92  SDL_Log("Waiting 10 seconds\n");
93  SDL_Delay(10 * 1000);
94 
95  SDL_Log("Removing timer 1 and waiting 5 more seconds\n");
96  SDL_RemoveTimer(t1);
97 
98  SDL_Delay(5 * 1000);
99 
100  SDL_RemoveTimer(t2);
101  SDL_RemoveTimer(t3);
102 
103  start = SDL_GetPerformanceCounter();
104  for (i = 0; i < 1000000; ++i) {
105  ticktock(0, NULL);
106  }
108  SDL_Log("1 million iterations of ticktock took %f ms\n", (double)((now - start)*1000) / SDL_GetPerformanceFrequency());
109 
110  SDL_Log("Performance counter frequency: %"SDL_PRIu64"\n", (unsigned long long) SDL_GetPerformanceFrequency());
111  start32 = SDL_GetTicks();
112  start = SDL_GetPerformanceCounter();
113  SDL_Delay(1000);
115  now32 = SDL_GetTicks();
116  SDL_Log("Delay 1 second = %d ms in ticks, %f ms according to performance counter\n", (now32-start32), (double)((now - start)*1000) / SDL_GetPerformanceFrequency());
117 
118  SDL_Quit();
119  return (0);
120 }
#define SDL_GetError
static int ticks
Definition: testtimer.c:24
Uint64 SDL_GetPerformanceFrequency(void)
Get the count per second of the high resolution counter.
#define DEFAULT_RESOLUTION
Definition: testtimer.c:22
GLuint start
Definition: SDL_opengl.h:1571
uint32_t Uint32
Definition: SDL_stdinc.h:181
uint64_t Uint64
Definition: SDL_stdinc.h:194
GLuint GLfloat GLfloat GLfloat GLfloat GLfloat GLfloat GLfloat GLfloat GLfloat t1
#define SDL_AddTimer
#define SDL_LogError
#define SDL_Log
Uint32 SDL_GetTicks(void)
Get the number of milliseconds since the SDL library initialization.
#define SDL_Quit
static Uint32 ticktock(Uint32 interval, void *param)
Definition: testtimer.c:27
static Uint32 callback(Uint32 interval, void *param)
Definition: testtimer.c:34
#define SDL_GetPerformanceCounter
#define SDL_Delay
return Display return Display Bool Bool int int int return Display XEvent Bool(*) XPointer return Display return Display Drawable _Xconst char unsigned int unsigned int return Display Pixmap Pixmap XColor XColor unsigned int unsigned int return Display _Xconst char char int char return Display Visual unsigned int int int char unsigned int unsigned int in i)
Definition: SDL_x11sym.h:50
#define SDL_LogSetPriority
#define NULL
Definition: begin_code.h:164
#define SDL_INIT_TIMER
Definition: SDL.h:76
#define SDL_PRIu64
Definition: SDL_stdinc.h:216
#define SDL_Init
#define SDL_RemoveTimer
int SDL_TimerID
Definition: SDL_timer.h:86

◆ ticktock()

static Uint32 ticktock ( Uint32  interval,
void param 
)
static

Definition at line 27 of file testtimer.c.

References SDLCALL, and ticks.

Referenced by main().

28 {
29  ++ticks;
30  return (interval);
31 }
static int ticks
Definition: testtimer.c:24

Variable Documentation

◆ ticks

int ticks = 0
static

Definition at line 24 of file testtimer.c.

Referenced by main(), and ticktock().