sdl2dll
Loading...
Searching...
No Matches
sdl_thread.h
1/*
2 * Clases para manejar hilos
3 */
4
5#ifndef _SDL_THREAD
6#define _SDL_THREAD
7
8#define EXPORT __declspec(dllexport)
9
10#include <SDL.h>
11#include <cstdio>
12
13namespace sdl {
14
19class Thread {
20protected:
21 SDL_ThreadFunction tfunction;
22 void* data;
23 SDL_Thread *handle;
24 int retval;
25 bool detach;
26public:
30 EXPORT Thread() : tfunction(NULL), data(NULL), handle(NULL), detach(false) {}
39 EXPORT Thread(SDL_ThreadFunction funct, const char* name, void* dat, const size_t stack=0) : tfunction(funct), data(dat), detach(false) {
40 handle = SDL_CreateThreadWithStackSize(tfunction, name, stack, data);
41 }
47 EXPORT ~Thread() {
48 if(!detach) SDL_WaitThread(handle, &retval);
49 }
55 EXPORT void SetFunction(SDL_ThreadFunction funct) { tfunction=funct; }
61 EXPORT void SetData(void *dat) { data = dat; }
68 EXPORT void Init(const char* name, const size_t stack=0) {
69 if(tfunction != NULL) handle = SDL_CreateThreadWithStackSize(tfunction, name, stack, data);
70 }
76 EXPORT int Wait() {
77 if(!detach) {
78 SDL_WaitThread(handle, &retval);
79 } else {
80 retval=-1;
81 }
82 return retval;
83 }
87 EXPORT void Detach() {
88 SDL_DetachThread(handle);
89 detach = true;
90 }
96 EXPORT const char* GetName() const {
97 if(!detach) return SDL_GetThreadName(handle);
98 return NULL;
99 }
105 EXPORT SDL_threadID GetId() {
106 if(!detach) return SDL_GetThreadID(handle);
107 return 0;
108 }
109};
110
111} // namespace
112
113#endif // _SDL_THREAD
114
Clase que encapsula un hilo.
Definition sdl_thread.h:19
EXPORT void SetFunction(SDL_ThreadFunction funct)
Asigna una nueva función al hilo.
Definition sdl_thread.h:55
EXPORT int Wait()
Espera a que la función asociada al hilo termine,.
Definition sdl_thread.h:76
int retval
Definition sdl_thread.h:24
EXPORT void Detach()
Deja que un hilo se limpie al salir sin intervención.
Definition sdl_thread.h:87
EXPORT SDL_threadID GetId()
Obtiene el identificador del hilo.
Definition sdl_thread.h:105
EXPORT void SetData(void *dat)
Asigna un bloque de datos para pasar a la función del hilo.
Definition sdl_thread.h:61
EXPORT Thread(SDL_ThreadFunction funct, const char *name, void *dat, const size_t stack=0)
Constructor.
Definition sdl_thread.h:39
bool detach
Definition sdl_thread.h:25
SDL_ThreadFunction tfunction
Definition sdl_thread.h:21
EXPORT Thread()
Constructor por defecto.
Definition sdl_thread.h:30
EXPORT const char * GetName() const
Obtiene el nombre asociado al hilo.
Definition sdl_thread.h:96
SDL_Thread * handle
Definition sdl_thread.h:23
EXPORT void Init(const char *name, const size_t stack=0)
Inicia el hilo.
Definition sdl_thread.h:68
void * data
Definition sdl_thread.h:22
EXPORT ~Thread()
Destructor.
Definition sdl_thread.h:47
Espacio con nombre para el wrapper de SDL2.
Definition sdl_music.h:14