1From fc58fcee33d9466952756ab4ca063c499543d6c7 Mon Sep 17 00:00:00 2001 2From: Jeffy Chen <jeffy.chen@rock-chips.com> 3Date: Wed, 17 May 2023 10:42:01 +0800 4Subject: [PATCH 9/9] Support FB rotating and scaling with environment 5 6Tested with: 7FRECON_FB_ROTATE=90 FRECON_FB_SCALE=2 frecon 8 9Signed-off-by: Jeffy Chen <jeffy.chen@rock-chips.com> 10--- 11 fb.c | 28 ++++++++++++++++++++++++++++ 12 term.c | 2 +- 13 2 files changed, 29 insertions(+), 1 deletion(-) 14 15diff --git a/fb.c b/fb.c 16index 9bb2599..44d9e00 100644 17--- a/fb.c 18+++ b/fb.c 19@@ -168,6 +168,7 @@ int fb_buffer_init(fb_t* fb) 20 { 21 int32_t width, height, pitch = 0; 22 int32_t hsize_mm, vsize_mm; 23+ const char *buf; 24 int r; 25 26 /* reuse the buffer_properties if it was set before */ 27@@ -208,6 +209,7 @@ int fb_buffer_init(fb_t* fb) 28 DRM_MODE_PANEL_ORIENTATION_LEFT_UP, 29 DRM_MODE_PANEL_ORIENTATION_RIGHT_UP, 30 */ 31+ 32 switch (fb->drm->panel_orientation) { 33 case 1: 34 fb->buffer_properties.rotation = DRM_MODE_ROTATE_180; 35@@ -237,6 +239,32 @@ int fb_buffer_init(fb_t* fb) 36 fb->buffer_properties.scaling = 2; 37 } 38 39+ 40+ buf = getenv("FRECON_FB_ROTATE"); 41+ if (buf) { 42+ switch (atoi(buf)) { 43+ case 90: 44+ fb->buffer_properties.rotation = DRM_MODE_ROTATE_90; 45+ break; 46+ case 180: 47+ fb->buffer_properties.rotation = DRM_MODE_ROTATE_180; 48+ break; 49+ case 270: 50+ fb->buffer_properties.rotation = DRM_MODE_ROTATE_270; 51+ break; 52+ default: 53+ fb->buffer_properties.rotation = DRM_MODE_ROTATE_0; 54+ break; 55+ } 56+ } 57+ 58+ buf = getenv("FRECON_FB_SCALE"); 59+ if (buf) { 60+ fb->buffer_properties.scaling = atoi(buf); 61+ if (fb->buffer_properties.scaling < 1) 62+ fb->buffer_properties.scaling = 1; 63+ } 64+ 65 return 0; 66 } 67 68diff --git a/term.c b/term.c 69index bde1130..9015818 100644 70--- a/term.c 71+++ b/term.c 72@@ -983,7 +983,7 @@ void term_clear(terminal_t* terminal) 73 void term_zoom(bool zoom_in) 74 { 75 int scaling = font_get_scaling(); 76- if (zoom_in && scaling < 4) 77+ if (zoom_in) 78 scaling++; 79 else if (!zoom_in && scaling > 1) 80 scaling--; 81-- 822.20.1 83 84