working render
This commit is contained in:
@@ -4,15 +4,8 @@
|
||||
#include <pthread.h>
|
||||
#include <time.h>
|
||||
|
||||
typedef struct
|
||||
{
|
||||
uint32_t* state;
|
||||
void* element;
|
||||
} EventArgs;
|
||||
|
||||
extern void render(void* element, uint32_t state);
|
||||
extern void event(void* element, uint32_t* state);
|
||||
extern void init_event(void* element, uint32_t* state);
|
||||
extern boolean_t render(void* element);
|
||||
extern void *event_loop(void* element);
|
||||
|
||||
void sleep_ms(long milliseconds)
|
||||
{
|
||||
@@ -22,49 +15,18 @@ void sleep_ms(long milliseconds)
|
||||
nanosleep(&ts, NULL);
|
||||
}
|
||||
|
||||
void *event_checker(void *args)
|
||||
{
|
||||
EventArgs* event_args = (EventArgs*)args;
|
||||
init_event(event_args->element, event_args->state);
|
||||
while (1) {
|
||||
if (event_args->state == 0) { return NULL; }
|
||||
event(event_args->element, event_args->state);
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void *command_checker(void *args)
|
||||
{
|
||||
EventArgs* event_args = (EventArgs*)args;
|
||||
init_event(event_args->element, event_args->state);
|
||||
while (1) {
|
||||
if (event_args->state == 0) { return NULL; }
|
||||
event(event_args->element, event_args->state);
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
boolean_t c_run(void* element)
|
||||
{
|
||||
pthread_t thread;
|
||||
uint32_t state = 3;
|
||||
EventArgs event_args = { .element = element, .state = &state };
|
||||
|
||||
if (pthread_create(&thread, NULL, event_checker, &event_args) != 0)
|
||||
if (pthread_create(&thread, NULL, event_loop, element) != 0)
|
||||
{
|
||||
perror("Failed to create thread");
|
||||
}
|
||||
|
||||
while (1)
|
||||
while (render(element))
|
||||
{
|
||||
if (state == 0) {
|
||||
free(element);
|
||||
return 0;
|
||||
} else if (state == 1) {
|
||||
free(element);
|
||||
return 1;
|
||||
}
|
||||
render(element, state);
|
||||
sleep_ms(20);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
Reference in New Issue
Block a user