Mercurial > sdl-ios-xcode
annotate test/testsem.c @ 1768:814f9f2c7a33
Fixed bug #80
Date: 21 Apr 2003 17:20:20 +0100
From: Alan Swanson <swanson@uklinux.net>
Subject: [SDL] New XFree 4.3 Video Mode Patch
If you look at the unsorted list of modes returned by X, here's mine;
1280 x 1024 @ 85.0 >
1024 x 768 @ 100.3 > USER
800 x 600 @ 125.5 > SET
640 x 480 @ 124.9 >
1280 x 1024 @ 75.0 ]
1280 x 1024 @ 60.0 ]
1280 x 960 @ 85.0 ] X11
1280 x 960 @ 60.0 ] AUTO
1152 x 864 @ 75.0 ]=20
1152 x 768 @ 54.8 ]
960 x 720 @ 120.0 ]
...
640 x 400 @ 85.1 ] 256k
576 x 432 @ 150.0 ] 249k PIXEL
640 x 350 @ 85.1 ] 224k COUNT
576 x 384 @ 109.6 ] 221k
...
The user set modes come first followed by X set modes which are ordered
by decreasing number of pixels and refresh.
The reason why every other library or program not using SDL working is
due to SDL scanning the modes in reverse getting X11 provided modes
modes with the lowest refresh.
author | Sam Lantinga <slouken@libsdl.org> |
---|---|
date | Fri, 05 May 2006 05:50:26 +0000 |
parents | d5298e8f22b3 |
children | 14717b52abc0 |
rev | line source |
---|---|
0 | 1 |
2 /* Simple test of the SDL semaphore code */ | |
3 | |
4 #include <stdio.h> | |
5 #include <stdlib.h> | |
6 #include <signal.h> | |
7 | |
8 #include "SDL.h" | |
9 #include "SDL_thread.h" | |
10 | |
11 #define NUM_THREADS 10 | |
12 | |
13 static SDL_sem *sem; | |
14 int alive = 1; | |
15 | |
16 int ThreadFunc(void *data) | |
17 { | |
1615
d5298e8f22b3
Ugh, more 64-bit cleanup
Sam Lantinga <slouken@libsdl.org>
parents:
1495
diff
changeset
|
18 int threadnum = (int)(uintptr_t)data; |
0 | 19 while ( alive ) { |
20 SDL_SemWait(sem); | |
1495
1dd8bf30a109
Might have fixed 64-bit issues. :)
Sam Lantinga <slouken@libsdl.org>
parents:
1439
diff
changeset
|
21 fprintf(stderr, "Thread number %d has got the semaphore (value = %d)!\n", threadnum, SDL_SemValue(sem)); |
0 | 22 SDL_Delay(200); |
23 SDL_SemPost(sem); | |
1495
1dd8bf30a109
Might have fixed 64-bit issues. :)
Sam Lantinga <slouken@libsdl.org>
parents:
1439
diff
changeset
|
24 fprintf(stderr, "Thread number %d has released the semaphore (value = %d)!\n", threadnum, SDL_SemValue(sem)); |
0 | 25 SDL_Delay(1); /* For the scheduler */ |
26 } | |
1495
1dd8bf30a109
Might have fixed 64-bit issues. :)
Sam Lantinga <slouken@libsdl.org>
parents:
1439
diff
changeset
|
27 printf("Thread number %d exiting.\n", threadnum); |
0 | 28 return 0; |
29 } | |
30 | |
31 static void killed(int sig) | |
32 { | |
33 alive = 0; | |
34 } | |
35 | |
36 int main(int argc, char **argv) | |
37 { | |
38 SDL_Thread *threads[NUM_THREADS]; | |
1495
1dd8bf30a109
Might have fixed 64-bit issues. :)
Sam Lantinga <slouken@libsdl.org>
parents:
1439
diff
changeset
|
39 uintptr_t i; |
1dd8bf30a109
Might have fixed 64-bit issues. :)
Sam Lantinga <slouken@libsdl.org>
parents:
1439
diff
changeset
|
40 int init_sem; |
0 | 41 |
42 if(argc < 2) { | |
43 fprintf(stderr,"Usage: %s init_value\n", argv[0]); | |
1151
be9c9c8f6d53
Removed atexit() from most of the test programs; atexit(SDL_Quit) isn't safe
Ryan C. Gordon <icculus@icculus.org>
parents:
0
diff
changeset
|
44 return(1); |
0 | 45 } |
46 | |
47 /* Load the SDL library */ | |
48 if ( SDL_Init(0) < 0 ) { | |
49 fprintf(stderr, "Couldn't initialize SDL: %s\n",SDL_GetError()); | |
1151
be9c9c8f6d53
Removed atexit() from most of the test programs; atexit(SDL_Quit) isn't safe
Ryan C. Gordon <icculus@icculus.org>
parents:
0
diff
changeset
|
50 return(1); |
0 | 51 } |
52 signal(SIGTERM, killed); | |
53 signal(SIGINT, killed); | |
54 | |
55 init_sem = atoi(argv[1]); | |
56 sem = SDL_CreateSemaphore(init_sem); | |
57 | |
58 printf("Running %d threads, semaphore value = %d\n", NUM_THREADS, init_sem); | |
59 /* Create all the threads */ | |
60 for( i = 0; i < NUM_THREADS; ++i ) { | |
61 threads[i] = SDL_CreateThread(ThreadFunc, (void*)i); | |
62 } | |
63 | |
64 /* Wait 10 seconds */ | |
65 SDL_Delay(10 * 1000); | |
66 | |
67 /* Wait for all threads to finish */ | |
68 printf("Waiting for threads to finish\n"); | |
69 alive = 0; | |
70 for( i = 0; i < NUM_THREADS; ++i ) { | |
71 SDL_WaitThread(threads[i], NULL); | |
72 } | |
73 printf("Finished waiting for threads\n"); | |
74 | |
75 SDL_DestroySemaphore(sem); | |
1151
be9c9c8f6d53
Removed atexit() from most of the test programs; atexit(SDL_Quit) isn't safe
Ryan C. Gordon <icculus@icculus.org>
parents:
0
diff
changeset
|
76 SDL_Quit(); |
0 | 77 return(0); |
78 } |