diff options
author | rin <rin@pkgsrc.org> | 2022-07-07 00:04:42 +0000 |
---|---|---|
committer | rin <rin@pkgsrc.org> | 2022-07-07 00:04:42 +0000 |
commit | a7b795391ade25e4775461e41b0cd723693d6443 (patch) | |
tree | 13927f6daf0d30b968f1f4cd9ed26af5ae9e75a8 | |
parent | 555bb68ae786fd01e151b3e9d7566960bf0ed112 (diff) | |
download | pkgsrc-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/Makefile | 4 | ||||
-rw-r--r-- | x11/mlterm/distinfo | 3 | ||||
-rw-r--r-- | x11/mlterm/patches/patch-uitoolkit_fb_ui__display__wscons.c | 68 |
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; + } |