diff options
-rw-r--r-- | sys/dev/vesa/vesafb.c | 20 |
1 files changed, 11 insertions, 9 deletions
diff --git a/sys/dev/vesa/vesafb.c b/sys/dev/vesa/vesafb.c index 476b533f004..0524e6deff3 100644 --- a/sys/dev/vesa/vesafb.c +++ b/sys/dev/vesa/vesafb.c @@ -1,4 +1,4 @@ -/* $OpenBSD: vesafb.c,v 1.6 2008/04/28 19:28:37 miod Exp $ */ +/* $OpenBSD: vesafb.c,v 1.7 2009/11/11 00:01:34 fgsch Exp $ */ /*- * Copyright (c) 2006 Jared D. McNeill <jmcneill@invisible.ca> @@ -81,7 +81,7 @@ void vesafb_set_mode(struct vga_pci_softc *, int); int vesafb_get_mode(struct vga_pci_softc *); void vesafb_get_mode_info(struct vga_pci_softc *, int, struct modeinfoblock *); -void vesafb_set_palette(struct vga_pci_softc *, int, struct paletteentry); +void vesafb_set_palette(struct vga_pci_softc *, int, struct paletteentry *); int vesafb_putcmap(struct vga_pci_softc *, struct wsdisplay_cmap *); int vesafb_getcmap(struct vga_pci_softc *, struct wsdisplay_cmap *); int vesafb_get_ddc_version(struct vga_pci_softc *); @@ -184,7 +184,7 @@ vesafb_get_mode_info(struct vga_pci_softc *sc, int mode, } void -vesafb_set_palette(struct vga_pci_softc *sc, int reg, struct paletteentry pe) +vesafb_set_palette(struct vga_pci_softc *sc, int reg, struct paletteentry *pe) { struct trapframe tf; int res; @@ -195,15 +195,17 @@ vesafb_set_palette(struct vga_pci_softc *sc, int reg, struct paletteentry pe) sc->sc_dev.dv_xname); return; } + + memcpy(buf, pe, sizeof(struct paletteentry)); + /* * this function takes 8 bit per palette as input, but we're * working in 6 bit mode here */ - pe.Red >>= 2; - pe.Green >>= 2; - pe.Blue >>= 2; - - memcpy(buf, &pe, sizeof(struct paletteentry)); + pe = (struct paletteentry *)buf; + pe->Red >>= 2; + pe->Green >>= 2; + pe->Blue >>= 2; /* set palette */ memset(&tf, 0, sizeof(struct trapframe)); @@ -310,7 +312,7 @@ vesafb_putcmap(struct vga_pci_softc *sc, struct wsdisplay_cmap *cm) pe.Green = *gp; pe.Red = *rp; pe.Alignment = 0; - vesafb_set_palette(sc, idx, pe); + vesafb_set_palette(sc, idx, &pe); idx++; rp++, gp++, bp++; } |