blob: 6c1a3c29364a57e39380dcd2d2fcd626cc385de9 [file] [log] [blame] [edit]
class System {
public:
static const Uint32 timer_event;
static const Uint32 loop_event;
static const int width = 320;
static const int height = 240;
System();
~System();
void run();
void stop();
int update_thread();
int timer_thread();
void loop();
Uint32 mode();
void update_texture(SDL_Texture *);
void notify_redraw();
void set_joystick(int axis, float value);
void set_tilt(int axis, float value);
void set_button(int button, bool state);
private:
SDL_Thread *t_system_timer = nullptr;
SDL_Thread *t_system_loop = nullptr;
SDL_mutex *m_input = nullptr;
SDL_sem *s_timer_stop = nullptr;
SDL_sem *s_loop_update = nullptr;
SDL_sem *s_loop_redraw = nullptr;
SDL_sem *s_loop_ended = nullptr;
bool running = false;
// shadow input
Uint32 shadow_buttons = 0;
float shadow_joystick[2] = {0, 0};
float shadow_tilt[3] = {0, 0, 0};
};