mirror of
https://github.com/MiyooCFW/buildroot.git
synced 2025-09-27 22:24:19 +03:00
BOARD: separate miyoo packages + concentrate RetroArch/libretro (#129)
MENU->Target packages ---> Miyoo Packages ---> ...
This commit is contained in:
@@ -0,0 +1,155 @@
|
||||
From a999470df6328f26b59f88e18396a3e6c8d3466d Mon Sep 17 00:00:00 2001
|
||||
From: Apaczer <94932128+Apaczer@users.noreply.github.com>
|
||||
Date: Fri, 26 Apr 2024 21:19:20 +0200
|
||||
Subject: [PATCH 6/7] define RENDER_ONEPAGE to omit following page buffering
|
||||
|
||||
- increases image swapping time with minimal RAM
|
||||
- use get_page_bottom() to differentiate page size height
|
||||
- change to start page with PAGEDOWN/UP keys
|
||||
---
|
||||
sdlbook.c | 64 +++++++++++++++++++++++++++++++++++++++++++++----------
|
||||
1 file changed, 53 insertions(+), 11 deletions(-)
|
||||
|
||||
diff --git a/sdlbook.c b/sdlbook.c
|
||||
index 535a194..5d939e8 100644
|
||||
--- a/sdlbook.c
|
||||
+++ b/sdlbook.c
|
||||
@@ -151,6 +151,14 @@ static void init_gfx() {
|
||||
if(!spritesheet_init(&ss_font, bmp_font, FONT_W, FONT_H)) dprintf(2, "oops\n");
|
||||
}
|
||||
|
||||
+static int get_page_bottom() {
|
||||
+#ifndef RENDER_ONEPAGE
|
||||
+ return page_dims.h;
|
||||
+#else
|
||||
+ return page_dims.h/2;
|
||||
+#endif
|
||||
+}
|
||||
+
|
||||
static int get_font_width(char letter) {
|
||||
return ss_font.sprite_w;
|
||||
}
|
||||
@@ -184,7 +192,8 @@ static void draw() {
|
||||
unsigned *ptr;
|
||||
unsigned pitch;
|
||||
int xoff = MAX((int)(ezsdl_get_width() - page_dims.w)/2, 0);
|
||||
- int xmax = page_dims.w, ymax = page_dims.h*2;
|
||||
+ int xmax = page_dims.w;
|
||||
+ int ymax = get_page_bottom()*2;
|
||||
if(scroll_line_v > ymax) return;
|
||||
ymax = MIN(ezsdl_get_height(), ymax-scroll_line_v),
|
||||
xmax = MIN(ezsdl_get_width(), xmax-scroll_line_h);
|
||||
@@ -221,7 +230,7 @@ static void draw_borders() {
|
||||
static void draw_bottom() {
|
||||
int x, y, yline;
|
||||
int xmax, ymax, ymin;
|
||||
- ymin = page_dims.h*2-scroll_line_v;
|
||||
+ ymin = get_page_bottom()*2-scroll_line_v;
|
||||
if(ymin < 0) return;
|
||||
void *pixels;
|
||||
unsigned *ptr;
|
||||
@@ -435,7 +444,10 @@ static void* prep_page(int pageno, ddjvu_rect_t *res_rect, ddjvu_rect_t *desired
|
||||
}
|
||||
|
||||
static void* prep_pages(int *need_redraw) {
|
||||
- ddjvu_rect_t p1rect, p2rect;
|
||||
+ ddjvu_rect_t p1rect;
|
||||
+#ifndef RENDER_ONEPAGE
|
||||
+ ddjvu_rect_t p2rect;
|
||||
+#endif
|
||||
static int last_page = -1, last_scale = -1;
|
||||
if(curr_page == last_page && last_scale == config_data.scale)
|
||||
return image_data;
|
||||
@@ -443,6 +455,7 @@ static void* prep_pages(int *need_redraw) {
|
||||
last_scale = config_data.scale;
|
||||
if(need_redraw) *need_redraw = 1;
|
||||
char *p1data = prep_page(curr_page, &p1rect, 0);
|
||||
+#ifndef RENDER_ONEPAGE
|
||||
char *p2data = prep_page(curr_page+1, &p2rect, 0);
|
||||
if(!p2data) {
|
||||
/* probably last page hit */
|
||||
@@ -457,15 +470,22 @@ static void* prep_pages(int *need_redraw) {
|
||||
}
|
||||
if(!(p1data && p2data)) return NULL;
|
||||
assert(p1rect.w == p2rect.w && p1rect.h == p2rect.h);
|
||||
+ int stored_images = 2;
|
||||
+#else
|
||||
+ if(!(p1data)) return NULL;
|
||||
+ int stored_images = 1;
|
||||
+#endif
|
||||
|
||||
size_t one_pic = p1rect.w*p1rect.h;
|
||||
- unsigned* imgbuf = malloc(4 * one_pic * 2);
|
||||
+ unsigned* imgbuf = malloc(4 * one_pic * stored_images);
|
||||
|
||||
convert_rgb24_to_rgba(p1data, p1rect.w, p1rect.h, imgbuf);
|
||||
- convert_rgb24_to_rgba(p2data, p2rect.w, p2rect.h, imgbuf+one_pic);
|
||||
page_dims = p1rect;
|
||||
free(p1data);
|
||||
+#ifndef RENDER_ONEPAGE
|
||||
+ convert_rgb24_to_rgba(p2data, p2rect.w, p2rect.h, imgbuf+one_pic);
|
||||
free(p2data);
|
||||
+#endif
|
||||
return imgbuf;
|
||||
}
|
||||
|
||||
@@ -531,17 +551,39 @@ static int change_scale(int incr) {
|
||||
|
||||
static int change_scroll_v(int incr) {
|
||||
int need_redraw = 1;
|
||||
+#ifndef RENDER_ONEPAGE
|
||||
+ int page_bottom_prv = scroll_line_v + incr + get_page_bottom();
|
||||
+#else
|
||||
+ int page_bottom_prv = scroll_line_v + get_page_bottom()*2 - ezsdl_get_height();
|
||||
+
|
||||
+ if(ezsdl_get_height() + incr >= page_dims.h || abs(incr) == get_page_bottom()) {
|
||||
+ scroll_line_v = 0;
|
||||
+ change_page(incr > 0 ? +1 : -1);
|
||||
+ return need_redraw;
|
||||
+ }
|
||||
+#endif
|
||||
if(scroll_line_v + incr < 0) {
|
||||
if(curr_page == 0) scroll_line_v = 0;
|
||||
else {
|
||||
need_redraw = change_page(-1);
|
||||
- scroll_line_v = MAX(scroll_line_v + incr + (int)page_dims.h, 0);
|
||||
+ scroll_line_v = MAX(page_bottom_prv, 0);
|
||||
}
|
||||
- } else if(scroll_line_v + incr > page_dims.h/2 && curr_page >= page_count-1) {
|
||||
+#ifndef RENDER_ONEPAGE
|
||||
+ } else if(scroll_line_v + incr > (int)page_dims.h/2 && curr_page >= page_count-1) {
|
||||
scroll_line_v = (int)page_dims.h/2;
|
||||
- } else if(scroll_line_v + incr > page_dims.h) {
|
||||
- scroll_line_v = scroll_line_v + incr - (int)page_dims.h;
|
||||
+ } else if(scroll_line_v + incr > get_page_bottom()) {
|
||||
+ scroll_line_v = scroll_line_v + incr - get_page_bottom();
|
||||
need_redraw = change_page(+1);
|
||||
+#else
|
||||
+ } else if(scroll_line_v + incr > page_dims.h - ezsdl_get_height() && curr_page >= page_count-1) {
|
||||
+ scroll_line_v = MAX((int)page_dims.h - ezsdl_get_height(),0);
|
||||
+ } else if(scroll_line_v + incr > get_page_bottom() && ezsdl_get_height() > get_page_bottom()) {
|
||||
+ scroll_line_v = scroll_line_v + incr - get_page_bottom();
|
||||
+ need_redraw = change_page(+1);
|
||||
+ } else if(scroll_line_v + incr > page_dims.h - ezsdl_get_height() && incr > 0) {
|
||||
+ scroll_line_v = scroll_line_v + incr + ezsdl_get_height() - (int)page_dims.h;
|
||||
+ need_redraw = change_page(+1);
|
||||
+#endif
|
||||
} else
|
||||
scroll_line_v += incr;
|
||||
return need_redraw;
|
||||
@@ -849,10 +891,10 @@ int main(int argc, char **argv) {
|
||||
need_redraw = change_scale(-10);
|
||||
break;
|
||||
case INPUT_PGDOWN:
|
||||
- scroll_dist_v += page_dims.h;
|
||||
+ scroll_dist_v += get_page_bottom();
|
||||
break;
|
||||
case INPUT_PGUP:
|
||||
- scroll_dist_v -= page_dims.h;
|
||||
+ scroll_dist_v -= get_page_bottom();
|
||||
break;
|
||||
case INPUT_UP:
|
||||
if((event.mod & KMOD_LCTRL) || (event.mod & KMOD_RCTRL))
|
||||
--
|
||||
2.34.1
|
||||
|
||||
Reference in New Issue
Block a user