Module Name: src Committed By: macallan Date: Mon Apr 1 09:48:58 UTC 2024
Modified Files: src/sys/arch/hppa/dev: gftfb.c Log Message: make gftfb_restore_palette() grab the default colour map from rasops instead of just writing the driver's map into the hardware ( which may have been modified by the likes of wsfb ) With this we get a readable console even when exiting X in a less than graceful manner. To generate a diff of this commit: cvs rdiff -u -r1.12 -r1.13 src/sys/arch/hppa/dev/gftfb.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/arch/hppa/dev/gftfb.c diff -u src/sys/arch/hppa/dev/gftfb.c:1.12 src/sys/arch/hppa/dev/gftfb.c:1.13 --- src/sys/arch/hppa/dev/gftfb.c:1.12 Thu Mar 28 12:50:31 2024 +++ src/sys/arch/hppa/dev/gftfb.c Mon Apr 1 09:48:58 2024 @@ -1,4 +1,4 @@ -/* $NetBSD: gftfb.c,v 1.12 2024/03/28 12:50:31 macallan Exp $ */ +/* $NetBSD: gftfb.c,v 1.13 2024/04/01 09:48:58 macallan Exp $ */ /* $OpenBSD: sti_pci.c,v 1.7 2009/02/06 22:51:04 miod Exp $ */ @@ -212,8 +212,7 @@ gftfb_attach(device_t parent, device_t s struct rasops_info *ri; struct wsemuldisplaydev_attach_args aa; unsigned long defattr = 0; - int ret, is_console = 0, i, j; - uint8_t cmap[768]; + int ret, is_console = 0; sc->sc_dev = self; @@ -329,15 +328,7 @@ gftfb_attach(device_t parent, device_t s defattr); } - j = 0; - rasops_get_cmap(ri, cmap, sizeof(cmap)); - for (i = 0; i < 256; i++) { - sc->sc_cmap_red[i] = cmap[j]; - sc->sc_cmap_green[i] = cmap[j + 1]; - sc->sc_cmap_blue[i] = cmap[j + 2]; - gftfb_putpalreg(sc, i, cmap[j], cmap[j + 1], cmap[j + 2]); - j += 3; - } + gftfb_restore_palette(sc); /* no suspend/resume support yet */ if (!pmf_device_register(sc->sc_dev, NULL, NULL)) @@ -1008,11 +999,17 @@ gftfb_getcmap(struct gftfb_softc *sc, st static void gftfb_restore_palette(struct gftfb_softc *sc) { - int i; + uint8_t cmap[768]; + int i, j; + j = 0; + rasops_get_cmap(&sc->sc_console_screen.scr_ri, cmap, sizeof(cmap)); for (i = 0; i < 256; i++) { - gftfb_putpalreg(sc, i, sc->sc_cmap_red[i], - sc->sc_cmap_green[i], sc->sc_cmap_blue[i]); + sc->sc_cmap_red[i] = cmap[j]; + sc->sc_cmap_green[i] = cmap[j + 1]; + sc->sc_cmap_blue[i] = cmap[j + 2]; + gftfb_putpalreg(sc, i, cmap[j], cmap[j + 1], cmap[j + 2]); + j += 3; } }