minecraft-pi-docker/media-layer/core/src/base.cpp

44 lines
883 B
C++
Raw Normal View History

2021-06-17 21:32:24 +00:00
#include <cstdlib>
2021-02-21 19:53:17 +00:00
#include <pthread.h>
#include <vector>
#include <SDL/SDL.h>
2021-06-17 21:32:24 +00:00
#include <libreborn/media-layer/internal.h>
2021-02-21 19:53:17 +00:00
// SDL Is Replaced With GLFW
int SDL_Init(__attribute__((unused)) uint32_t flags) {
return 0;
}
// Event Queue
static pthread_mutex_t queue_mutex = PTHREAD_MUTEX_INITIALIZER;
static std::vector<SDL_Event> queue;
int SDL_PollEvent(SDL_Event *event) {
2021-06-17 21:32:24 +00:00
// Handle External Events
_media_handle_SDL_PollEvent();
// Poll Event
2021-02-21 19:53:17 +00:00
pthread_mutex_lock(&queue_mutex);
int ret;
if (queue.size() > 0) {
*event = queue[0];
queue.erase(queue.begin());
ret = 1;
} else {
ret = 0;
}
pthread_mutex_unlock(&queue_mutex);
return ret;
}
int SDL_PushEvent(SDL_Event *event) {
pthread_mutex_lock(&queue_mutex);
queue.push_back(*event);
pthread_mutex_unlock(&queue_mutex);
return 1;
}