Module Name:    src
Committed By:   tsutsui
Date:           Sat May 21 12:00:18 UTC 2011

Modified Files:
        src/sys/arch/dreamcast/dev: pvr.c

Log Message:
Move several static wsdisplay variables into proper device specific structures
to resolve XXX comments.  Tested on GXemul.


To generate a diff of this commit:
cvs rdiff -u -r1.31 -r1.32 src/sys/arch/dreamcast/dev/pvr.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/dreamcast/dev/pvr.c
diff -u src/sys/arch/dreamcast/dev/pvr.c:1.31 src/sys/arch/dreamcast/dev/pvr.c:1.32
--- src/sys/arch/dreamcast/dev/pvr.c:1.31	Wed Jan 26 13:14:07 2011
+++ src/sys/arch/dreamcast/dev/pvr.c	Sat May 21 12:00:18 2011
@@ -1,4 +1,4 @@
-/*	$NetBSD: pvr.c,v 1.31 2011/01/26 13:14:07 tsutsui Exp $	*/
+/*	$NetBSD: pvr.c,v 1.32 2011/05/21 12:00:18 tsutsui Exp $	*/
 
 /*-
  * Copyright (c) 2001 Marcus Comstedt.
@@ -35,7 +35,7 @@
 
 #include <sys/cdefs.h>			/* RCS ID & Copyright macro defns */
 
-__KERNEL_RCSID(0, "$NetBSD: pvr.c,v 1.31 2011/01/26 13:14:07 tsutsui Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pvr.c,v 1.32 2011/05/21 12:00:18 tsutsui Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -144,6 +144,9 @@
 	int	dc_tvsystem;		/* TV broadcast system */
 
 	struct rasops_info dc_rinfo;
+
+	char dc_wsscrname[32];
+	struct wsscreen_descr dc_wsscrdescr;
 };
 
 #define	PVR_RGBMODE	0x01		/* RGB or composite */
@@ -153,6 +156,8 @@
 	device_t sc_dev;
 	struct fb_devconfig *sc_dc;	/* device configuration */
 	int sc_nscreens;
+	const struct wsscreen_descr *sc_scrdescs[1];
+	struct wsscreen_list sc_scrlist;
 };
 
 static int	pvr_match(device_t, cfdata_t, void *);
@@ -165,23 +170,6 @@
 
 static struct fb_devconfig pvr_console_dc;
 
-static char pvr_stdscreen_textgeom[32] = { "std" };	/* XXX yuck */
-
-static struct wsscreen_descr pvr_stdscreen = {
-	pvr_stdscreen_textgeom, 0, 0,
-	0, /* textops */
-	0, 0,
-	WSSCREEN_WSCOLORS,
-};
-
-static const struct wsscreen_descr *_pvr_scrlist[] = {
-	&pvr_stdscreen,
-};
-
-static const struct wsscreen_list pvr_screenlist = {
-	sizeof(_pvr_scrlist) / sizeof(struct wsscreen_descr *), _pvr_scrlist
-};
-
 static int	pvrioctl(void *, void *, u_long, void *, int, struct lwp *);
 static paddr_t	pvrmmap(void *, void *, off_t, int);
 
@@ -266,15 +254,14 @@
 
 	rasops_init(&dc->dc_rinfo, 500, 500);
 
-	/* XXX shouldn't be global */
-	pvr_stdscreen.nrows = dc->dc_rinfo.ri_rows;
-	pvr_stdscreen.ncols = dc->dc_rinfo.ri_cols;
-	pvr_stdscreen.textops = &dc->dc_rinfo.ri_ops;
-	pvr_stdscreen.capabilities = dc->dc_rinfo.ri_caps;
-
-	/* XXX yuck */
-	sprintf(pvr_stdscreen_textgeom, "%dx%d", pvr_stdscreen.ncols,
-	    pvr_stdscreen.nrows);
+	dc->dc_wsscrdescr.name = dc->dc_wsscrname;
+	dc->dc_wsscrdescr.ncols = dc->dc_rinfo.ri_cols;
+	dc->dc_wsscrdescr.nrows = dc->dc_rinfo.ri_rows;
+	dc->dc_wsscrdescr.textops = &dc->dc_rinfo.ri_ops;
+	dc->dc_wsscrdescr.capabilities = dc->dc_rinfo.ri_caps;
+
+	sprintf(dc->dc_wsscrname, "%dx%d",
+	    dc->dc_wsscrdescr.ncols, dc->dc_wsscrdescr.nrows);
 }
 
 void
@@ -305,8 +292,12 @@
 
 	/* XXX Colormap initialization? */
 
+	sc->sc_scrdescs[0] = &sc->sc_dc->dc_wsscrdescr;
+	sc->sc_scrlist.nscreens = 1;
+	sc->sc_scrlist.screens = sc->sc_scrdescs;
+
 	waa.console = console;
-	waa.scrdata = &pvr_screenlist;
+	waa.scrdata = &sc->sc_scrlist;
 	waa.accessops = &pvr_accessops;
 	waa.accesscookie = sc;
 
@@ -588,7 +579,7 @@
 
 	pvr_getdevconfig(dcp);
 	(*dcp->dc_rinfo.ri_ops.allocattr)(&dcp->dc_rinfo, 0, 0, 0, &defattr);
-	wsdisplay_cnattach(&pvr_stdscreen, &dcp->dc_rinfo, 0, 0, defattr);
+	wsdisplay_cnattach(&dcp->dc_wsscrdescr, &dcp->dc_rinfo, 0, 0, defattr);
 
 	pvr_is_console = 1;
 

Reply via email to