Verified Commit e48eb1ea authored by Recolic Keghart's avatar Recolic Keghart
Browse files

add option to disable async render

parent cbd90a84
Pipeline #816 passed with stages
in 11 minutes and 14 seconds
......@@ -41,11 +41,6 @@ static void timer_sig_handler(int signum) {
}
void device_update_impl() {
// async
if(device_update_flag)
device_update_flag = false;
else
return;
if (update_screen_flag) {
update_screen();
update_screen_flag = false;
......@@ -75,9 +70,16 @@ void device_update_impl() {
}
}
void device_update() {device_update_impl();}
void device_update() {
#ifdef ENABLE_ASYNC_RENDER
#else
if(device_update_flag.exchange(false)) {
device_update_impl();
}
#endif
}
static void device_update_thread_daemon() {
[[maybe_unused]] static void device_update_thread_daemon() {
while(true) {
if(device_update_flag.exchange(false)) {
device_update_impl();
......@@ -109,7 +111,9 @@ void init_device() {
ret = setitimer(ITIMER_VIRTUAL, &it, NULL);
Assert(ret == 0, "Can not set timer");
// std::thread(device_update_thread_daemon).detach();
#ifdef ENABLE_ASYNC_RENDER
std::thread(device_update_thread_daemon).detach();
#endif
}
#else
......
......@@ -40,7 +40,9 @@ static void init_vga_impl() {
void update_screen() {
#ifndef DISABLE_MMIO
// if(window == nullptr) init_vga_impl();
#ifdef ENABLE_ASYNC_RENDER
if(window == nullptr) init_vga_impl();
#endif
SDL_ErrorCheck(SDL_UpdateTexture(texture, NULL, vmem, SCREEN_W * sizeof(vmem[0][0])));
SDL_ErrorCheck(SDL_RenderClear(renderer));
SDL_ErrorCheck(SDL_RenderCopy(renderer, texture, NULL, NULL));
......@@ -49,9 +51,12 @@ void update_screen() {
}
void init_vga() {
#ifdef ENABLE_ASYNC_RENDER
// Because of fucking SDL design, vga_init should be done in updating thread.
// Do nothing in main thread.
#else
init_vga_impl();
#endif
}
#endif /* HAS_IOE */
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment