Mercurial > sdl-ios-xcode
view 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 |
line wrap: on
line source
/* Simple test of the SDL semaphore code */ #include <stdio.h> #include <stdlib.h> #include <signal.h> #include "SDL.h" #include "SDL_thread.h" #define NUM_THREADS 10 static SDL_sem *sem; int alive = 1; int ThreadFunc(void *data) { int threadnum = (int)(uintptr_t)data; while ( alive ) { SDL_SemWait(sem); fprintf(stderr, "Thread number %d has got the semaphore (value = %d)!\n", threadnum, SDL_SemValue(sem)); SDL_Delay(200); SDL_SemPost(sem); fprintf(stderr, "Thread number %d has released the semaphore (value = %d)!\n", threadnum, SDL_SemValue(sem)); SDL_Delay(1); /* For the scheduler */ } printf("Thread number %d exiting.\n", threadnum); return 0; } static void killed(int sig) { alive = 0; } int main(int argc, char **argv) { SDL_Thread *threads[NUM_THREADS]; uintptr_t i; int init_sem; if(argc < 2) { fprintf(stderr,"Usage: %s init_value\n", argv[0]); return(1); } /* Load the SDL library */ if ( SDL_Init(0) < 0 ) { fprintf(stderr, "Couldn't initialize SDL: %s\n",SDL_GetError()); return(1); } signal(SIGTERM, killed); signal(SIGINT, killed); init_sem = atoi(argv[1]); sem = SDL_CreateSemaphore(init_sem); printf("Running %d threads, semaphore value = %d\n", NUM_THREADS, init_sem); /* Create all the threads */ for( i = 0; i < NUM_THREADS; ++i ) { threads[i] = SDL_CreateThread(ThreadFunc, (void*)i); } /* Wait 10 seconds */ SDL_Delay(10 * 1000); /* Wait for all threads to finish */ printf("Waiting for threads to finish\n"); alive = 0; for( i = 0; i < NUM_THREADS; ++i ) { SDL_WaitThread(threads[i], NULL); } printf("Finished waiting for threads\n"); SDL_DestroySemaphore(sem); SDL_Quit(); return(0); }