Bonjour!

Dans la continuité de mon thread dans C++ > Language, je suis face a un programme qui ne bug pas, mais ne fait rien

Le but de ce programme:
J'essaye de faire en sorte que je puisse envoyer des SDL_Event à un thread qui se chargera uniquement de faire le travail graphique ^^

Voila l'envoi de l'event :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
void Window::prout()
{
	SDL_Event ue;
	int a;
	int b;
	for(int i=0; i < 20; ++i)
	{
	    a = i+99;
	    b = i*7;
	    ue = CreateSDLUserEvent(0x01, a, b);
	    Threads::getInstance()->doGFX(ue);
	}
}
La fonction CreateSDLUserEvent creer un SDL_Event, en mettant les valeurs code, data1 et data2 avec les 3 arguments et retourne le SDL_Event, simplement ^^

La fonction doGFX:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
void Threads::doGFX(SDL_Event ue)
{
 
    int val;
    SDL_LockMutex(_guiEventLock);
    _buf = &ue;
 
    while ((-1 == (val = SDL_PushEvent(_buf))))
    {
        SDL_CondWait(_guiEventWait, _guiEventLock);
    }
    SDL_UnlockMutex(_guiEventLock);
    SDL_CondSignal(_guiEventWait);
};

Et mon thread recupere le event ^^
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
 
static int GUIThread(void *nothing)
{
    SDL_Event ue;
    int order;
    int arg1, arg2;
    char *pp;
    while(WaitEvent(&ue, Threads::GUIEventWait(), Threads::GUIEventLock()))
    {
        if(ue.type == SDL_USEREVENT)
        {
            MessageBox(NULL, "trigger event", "ok", MB_OK);
            order = (int)ue.user.code;
            arg1 = (int)ue.user.data1;
            arg2 = (int)ue.user.data2;
 
            sprintf(pp, "order=%d; arg1=%d; arg2=%d", (int)order, (int)arg1, (int)arg2);
            if(order == T_ORDER_LOADMAP)
            {
                MessageBox(NULL, pp, "gfx thread (load MAP ORDER !)", MB_OK);
            }
            else if(order == T_ORDER_FADE)
            {
 
            }
            else if(order == T_ORDER_SCREEN)
            {
 
            }
 
        }
    }
    return 0;
}
J'avais fait un test sans la fonction doGFX, simplement apres la creation de mon SDL_Event, et ca marchait bien

Donc en effet, je compile genialement bien, mais le programme fait rien