Mercurial > sdl-ios-xcode
annotate test/testsem.c @ 1558:b46bb79cc197
Fixed bug #113:
Date: Sat, 16 Apr 2005 08:39:22 +1000
From: "Eric Mangold"
Subject: [SDL] Window manager does not show SDL window titles
Hello,
I have an issue with SDL-using applications and the sawfish window manager.
The problem is that SDL windows do not show the window caption. My gnome
panel *does* show the window name, but the actual sawfish window frame
shows no caption at all. All other non-SDL applications that I use work
fine.
I tried a couple other window managers, and they *were* able to show the
SDL window captions correctly. Though there many be other WMs that can't.
I believe the problem is that SDL is using the UTF8_STRING type for the
window's WM_NAME and WM_ICON properties. In fact, WM_NAME and WM_ICON are
supposed to set to a TEXT type, usually STRING (ISO 8859-1).
The property names _NET_WM_NAME and _NET_WM_ICON_NAME should be used to
store the UTF8_STRING versions of the window title and icon name.
You can see the properties I refer to with a command like this:
xprop|grep -e "WM.*NAME"
Please note the freedesktop.org standard:
http://standards.freedesktop.org/wm-spec/wm-spec-1.3.html#id2506954
This page talks a little bit about the history of these properties. Just
search down the page for "WM_NAME".
http://www.cl.cam.ac.uk/~mgk25/unicode.html
Please let me know if I can be of any assistance in resolving this issue.
Thanks,
Eric Mangold
author | Sam Lantinga <slouken@libsdl.org> |
---|---|
date | Mon, 20 Mar 2006 07:31:36 +0000 |
parents | 1dd8bf30a109 |
children | d5298e8f22b3 |
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 { | |
1495
1dd8bf30a109
Might have fixed 64-bit issues. :)
Sam Lantinga <slouken@libsdl.org>
parents:
1439
diff
changeset
|
18 uintptr_t threadnum = (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 } |