summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorrin <rin@pkgsrc.org>2022-07-07 00:04:42 +0000
committerrin <rin@pkgsrc.org>2022-07-07 00:04:42 +0000
commita7b795391ade25e4775461e41b0cd723693d6443 (patch)
tree13927f6daf0d30b968f1f4cd9ed26af5ae9e75a8
parent555bb68ae786fd01e151b3e9d7566960bf0ed112 (diff)
downloadpkgsrc-a7b795391ade25e4775461e41b0cd723693d6443.tar.gz
x11/mlterm: Add support for 8-/4-bpp planar fb found on NetBSD/amiga.
Requires amidisplaycc(4) driver from NetBSD-current. With older drivers, automatically falls back to monochrome mode. Bump revision.
-rw-r--r--x11/mlterm/Makefile4
-rw-r--r--x11/mlterm/distinfo3
-rw-r--r--x11/mlterm/patches/patch-uitoolkit_fb_ui__display__wscons.c68
3 files changed, 72 insertions, 3 deletions
diff --git a/x11/mlterm/Makefile b/x11/mlterm/Makefile
index f6856dde06e..5c117a656cb 100644
--- a/x11/mlterm/Makefile
+++ b/x11/mlterm/Makefile
@@ -1,8 +1,8 @@
-# $NetBSD: Makefile,v 1.171 2022/07/02 03:17:04 rin Exp $
+# $NetBSD: Makefile,v 1.172 2022/07/07 00:04:42 rin Exp $
DISTNAME= mlterm-3.9.2
DIST_SUBDIR= ${PKGNAME_NOREV} # for re-tagged 3.9.2
-PKGREVISION= 2
+PKGREVISION= 3
CATEGORIES= x11
MASTER_SITES= ${MASTER_SITE_GITHUB:=arakiken/}
GITHUB_PROJECT= ${PKGBASE}
diff --git a/x11/mlterm/distinfo b/x11/mlterm/distinfo
index cd882445718..61e18c92761 100644
--- a/x11/mlterm/distinfo
+++ b/x11/mlterm/distinfo
@@ -1,9 +1,10 @@
-$NetBSD: distinfo,v 1.91 2022/07/02 03:17:04 rin Exp $
+$NetBSD: distinfo,v 1.92 2022/07/07 00:04:42 rin Exp $
BLAKE2s (mlterm-3.9.2/mlterm-3.9.2.tar.gz) = 3bd490eb661bc802cb05ebbb17a73956f5a62ca3838dcf5cb7baad0c01c3ebdb
SHA512 (mlterm-3.9.2/mlterm-3.9.2.tar.gz) = 3076dafbc98a01738d88acf0e0f52e15d33862b3e9b7a851a4496f1be07ee9e51103daf7842954bcae1f1ba62bd6645b0bd60af7f66ee98721bdf3786b9fcbaf
Size (mlterm-3.9.2/mlterm-3.9.2.tar.gz) = 4259208 bytes
SHA1 (patch-configure) = 266b3e8383c425c7ef8cd180f07e1199890521ba
SHA1 (patch-etc_font-fb) = 52c18f512c67ff530c0c326394fdf43956d71cb0
+SHA1 (patch-uitoolkit_fb_ui__display__wscons.c) = 56916dbbd9ab9a4eef7eeaff15fe23f2b8b96843
SHA1 (patch-uitoolkit_xlib_ui__imagelib.c) = 310558eb0796486aa1d2acab2c9e9a2d204ce0f0
SHA1 (patch-vtemu_Makefile.in) = 172f12f73408489f782d63c8b0b7915af441d368
diff --git a/x11/mlterm/patches/patch-uitoolkit_fb_ui__display__wscons.c b/x11/mlterm/patches/patch-uitoolkit_fb_ui__display__wscons.c
new file mode 100644
index 00000000000..594303a01fa
--- /dev/null
+++ b/x11/mlterm/patches/patch-uitoolkit_fb_ui__display__wscons.c
@@ -0,0 +1,68 @@
+$NetBSD: patch-uitoolkit_fb_ui__display__wscons.c,v 1.5 2022/07/07 00:04:42 rin Exp $
+
+Add support for 8- and 4-bpp planar fb found on NetBSD/amiga.
+
+Requires amidisplaycc(4) driver from NetBSD-current. With older
+drivers, automatically falls back to monochrome mode.
+
+XXX
+Only tested for 8-bpp mode. As 4-bpp mode requires ancient
+analogue monitors.
+
+XXX
+Logic to detect planar fb is not very elegant...
+
+This has been pull-requested to upstream:
+https://github.com/arakiken/mlterm/pull/46
+
+--- uitoolkit/fb/ui_display_wscons.c.orig 2022-01-17 00:20:31.000000000 +0900
++++ uitoolkit/fb/ui_display_wscons.c 2022-07-07 05:22:09.475716704 +0900
+@@ -380,8 +380,17 @@ static int open_display(u_int depth /* u
+ _display.height = _disp.height = vinfo.height;
+ _disp.depth = vinfo.depth;
+
+-#ifdef WSDISPLAY_TYPE_LUNA
+- if (wstype == WSDISPLAY_TYPE_LUNA) {
++#if defined(WSDISPLAY_TYPE_LUNA) && defined(WSDISPLAY_TYPE_AMIGACC)
++#define WSTYPE_PLANAR(wstype) \
++ ((wstype) == WSDISPLAY_TYPE_LUNA || (wstype) == WSDISPLAY_TYPE_AMIGACC)
++#elif defined(WSDISPLAY_TYPE_LUNA)
++#define WSTYPE_PLANAR(wstype) ((wstype) == WSDISPLAY_TYPE_LUNA)
++#elif defined(WSDISPLAY_TYPE_AMIGACC)
++#define WSTYPE_PLANAR(wstype) ((wstype) == WSDISPLAY_TYPE_AMIGACC)
++#endif
++
++#ifdef WSTYPE_PLANAR
++ if (WSTYPE_PLANAR(wstype)) {
+ /* always 8 or less bpp */
+
+ if (_disp.depth > 8) {
+@@ -394,7 +403,7 @@ static int open_display(u_int depth /* u
+ _display.shift_0 = 7;
+ _display.mask = 1;
+ } else
+-#endif
++#endif
+ if (_disp.depth < 8) {
+ #ifdef ENABLE_2_4_PPB
+ _display.pixels_per_byte = 8 / _disp.depth;
+@@ -444,6 +453,19 @@ static int open_display(u_int depth /* u
+ }
+ } else
+ #endif
++#ifdef WSDISPLAY_TYPE_AMIGACC
++ if (wstype == WSDISPLAY_TYPE_AMIGACC &&
++ (_disp.depth == 4 || _disp.depth == 8)) {
++ u_int len_per_plane, plane;
++
++ len_per_plane = _display.line_length * _display.height;
++ _display.smem_len = fboffset + len_per_plane * _disp.depth;
++
++ for (plane = 0; plane < _disp.depth; plane++) {
++ _display.plane_offset[plane] = len_per_plane * plane;
++ }
++ } else
++#endif
+ {
+ _display.smem_len = fboffset + _display.line_length * _display.height;
+ }