working render

This commit is contained in:
2024-11-20 15:47:27 +01:00
parent e55606b9cf
commit e4835b9efa
5 changed files with 62 additions and 95 deletions
+5 -43
View File
@@ -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;
}