diff --git a/dispd/client/framebuffer.h b/dispd/client/framebuffer.h index f9273958..cfc26f4f 100644 --- a/dispd/client/framebuffer.h +++ b/dispd/client/framebuffer.h @@ -38,8 +38,6 @@ struct dispd_framebuffer int bpp; int width; int height; - bool is_vga; - bool is_rgba; }; #if defined(__cplusplus) diff --git a/dispd/client/session.cpp b/dispd/client/session.cpp index 31b564c6..53f4a303 100644 --- a/dispd/client/session.cpp +++ b/dispd/client/session.cpp @@ -67,31 +67,8 @@ bool dispd_detach_session(struct dispd_session* session) return true; } -bool dispd_session_setup_game_vga(struct dispd_session* session) -{ - if ( session->is_vga ) - return true; - if ( session->is_rgba ) - return false; - if ( session->current_window ) - return false; - struct dispmsg_get_crtc_mode msg; - msg.msgid = DISPMSG_GET_CRTC_MODE; - msg.device = session->device; - msg.connector = session->connector; - if ( dispmsg_issue(&msg, sizeof(msg)) != 0 ) - return false; - if ( (session->is_vga = !(msg.mode.control & 1)) ) - return true; - error(0, 0, "This program requires a VGA Text Mode buffer, but you are " - "currently using an incompatible (perhaps graphics) mode."); - return false; -} - bool dispd_session_setup_game_rgba(struct dispd_session* session) { - if ( session->is_vga ) - return false; if ( session->is_rgba ) return true; if ( session->current_window ) diff --git a/dispd/client/session.h b/dispd/client/session.h index d8c8e28d..2e395e91 100644 --- a/dispd/client/session.h +++ b/dispd/client/session.h @@ -35,7 +35,6 @@ struct dispd_session uint64_t device; uint64_t connector; struct dispd_window* current_window; - bool is_vga; bool is_rgba; }; diff --git a/dispd/client/window.cpp b/dispd/client/window.cpp index 89bcc84e..c86c47ea 100644 --- a/dispd/client/window.cpp +++ b/dispd/client/window.cpp @@ -39,23 +39,6 @@ #include "session.h" #include "window.h" -extern "C" -struct dispd_window* dispd_create_window_game_vga(struct dispd_session* session) -{ - if ( session->current_window ) - return NULL; - if ( !session->is_vga ) - return NULL; - size_t size = sizeof(struct dispd_window); - struct dispd_window* window = (struct dispd_window*) malloc(size); - if ( !window ) - return NULL; - memset(window, 0, sizeof(*window)); - window->session = session; - window->is_vga = true; - return session->current_window = window; -} - extern "C" struct dispd_window* dispd_create_window_game_rgba(struct dispd_session* session) { @@ -69,7 +52,6 @@ struct dispd_window* dispd_create_window_game_rgba(struct dispd_session* session return NULL; memset(window, 0, sizeof(*window)); window->session = session; - window->is_rgba = true; return session->current_window = window; } @@ -105,28 +87,7 @@ static void return_buffer(struct dispd_window* window, uint8_t* b, size_t size) window->cached_buffer_size = size; } -static -struct dispd_framebuffer* disp_begin_render_vga(struct dispd_window* window) -{ - size_t size = sizeof(struct dispd_framebuffer); - struct dispd_framebuffer* fb = (struct dispd_framebuffer*) malloc(size); - if ( !fb ) - return NULL; - memset(fb, 0, sizeof(*fb)); - fb->is_vga = true; - fb->window = window; - fb->width = 80; - fb->height = 25; - fb->bpp = 16; - fb->pitch = fb->width * fb->bpp / 8; - fb->datasize = fb->pitch * fb->height; - fb->data = (uint8_t*) request_buffer(window, fb->datasize); - if ( !fb->data ) { free(fb); return NULL; } - return fb; -} - -static -struct dispd_framebuffer* disp_begin_render_rgba(struct dispd_window* window) +struct dispd_framebuffer* dispd_begin_render(struct dispd_window* window) { struct dispmsg_get_crtc_mode msg; msg.msgid = DISPMSG_GET_CRTC_MODE; @@ -140,7 +101,6 @@ struct dispd_framebuffer* disp_begin_render_rgba(struct dispd_window* window) return NULL; memset(fb, 0, sizeof(*fb)); fb->window = window; - fb->is_rgba = true; fb->width = msg.mode.view_xres; fb->height = msg.mode.view_yres; fb->bpp = 32; @@ -151,41 +111,18 @@ struct dispd_framebuffer* disp_begin_render_rgba(struct dispd_window* window) return fb; } - -struct dispd_framebuffer* dispd_begin_render(struct dispd_window* window) -{ - if ( window->is_vga ) - return disp_begin_render_vga(window); - if ( window->is_rgba ) - return disp_begin_render_rgba(window); - return NULL; -} - bool dispd_finish_render(struct dispd_framebuffer* fb) { struct dispd_window* window = fb->window; bool ret = false; - if ( window->is_vga ) - { - int fd = open("/dev/vga", O_WRONLY); - if ( 0 <= fd ) - { - if ( writeall(fd, fb->data, fb->datasize) == fb->datasize ) - ret = true; - close(fd); - } - } - else if ( window->is_rgba ) - { - struct dispmsg_write_memory msg; - msg.msgid = DISPMSG_WRITE_MEMORY; - msg.device = window->session->device; - msg.offset = 0; - msg.size = fb->datasize; - msg.src = fb->data; - if ( dispmsg_issue(&msg, sizeof(msg)) == 0 ) - ret = true; - } + struct dispmsg_write_memory msg; + msg.msgid = DISPMSG_WRITE_MEMORY; + msg.device = window->session->device; + msg.offset = 0; + msg.size = fb->datasize; + msg.src = fb->data; + if ( dispmsg_issue(&msg, sizeof(msg)) == 0 ) + ret = true; return_buffer(window, fb->data, fb->datasize); free(fb); return ret; @@ -203,7 +140,7 @@ size_t dispd_get_framebuffer_pitch(struct dispd_framebuffer* fb) int dispd_get_framebuffer_format(struct dispd_framebuffer* fb) { - return fb->is_vga ? 0 : fb->bpp; + return fb->bpp; } int dispd_get_framebuffer_height(struct dispd_framebuffer* fb) diff --git a/dispd/client/window.h b/dispd/client/window.h index d0ec36a8..a90a962a 100644 --- a/dispd/client/window.h +++ b/dispd/client/window.h @@ -34,8 +34,6 @@ struct dispd_window struct dispd_session* session; uint8_t* cached_buffer; size_t cached_buffer_size; - bool is_vga; - bool is_rgba; }; #if defined(__cplusplus) diff --git a/dispd/include/dispd.h b/dispd/include/dispd.h index 3f42d563..9a7fecc7 100644 --- a/dispd/include/dispd.h +++ b/dispd/include/dispd.h @@ -44,10 +44,8 @@ bool dispd_initialize(int* argc, char*** argv); struct dispd_session* dispd_attach_default_session(); bool dispd_detach_session(struct dispd_session* session); -bool dispd_session_setup_game_vga(struct dispd_session* session); bool dispd_session_setup_game_rgba(struct dispd_session* session); -struct dispd_window* dispd_create_window_game_vga(struct dispd_session* session); struct dispd_window* dispd_create_window_game_rgba(struct dispd_session* session); bool dispd_destroy_window(struct dispd_window* window);