nanogui: A couple of patches and a couple of other notes


Previous by date: 4 Apr 2000 21:10:07 -0000 Re: Break on `GdJPEG' in devimage.c, Greg Haerr
Next by date: 4 Apr 2000 21:10:07 -0000 VNC viewer for nano-X, George Harvey
Previous in thread:
Next in thread: 4 Apr 2000 21:10:07 -0000 Re: A couple of patches and a couple of other notes, Greg Haerr

Subject: A couple of patches and a couple of other notes
From: Steven Stadnicki ####@####.####
Date: 4 Apr 2000 21:10:07 -0000
Message-Id: <38EA57C3.66422D6D@equator.com>

Hey!  I suppose I should introduce myself to the list first.  I'm
working on porting Microwindows to our hardware (NTSC
display output) and I've run into a few minor issues.  Some of
them are fairly hardware-specific, but there are a couple that
seem to be just bugs in the mwin engine/build process:

--The null mouse and keyboard drivers need to have function
pointers to a 'Null_Poll' function in their driver structures rather
than just pointing to NULL (which breaks the code that calls
through them)

-- the 'debug path' in drivers/Makefile needs to include both
genfont.o and genmem.o

-- the MSDOS version of the GsSelect function in winmain.c
should still call MwHandleTimers after polling the mouse and
keyboard drivers

-- not everyone has perror() or printf() available to them,
especially on embedded devices; we changed all uses of perror()
to PRINT_ERROR and set up a config option HAVE_PERROR
which defines PRINT_ERROR as 'perror' if it's Y and otherwise
defines PRINT_ERROR as 'printf'.  (We _do_ have a printf, so
didn't try doing the same thing there; but strictly speaking that
should probably be extracted too)

-- PF_TRUECOLOR* wasn't quite redefined to
MWPF_TRUECOLOR* everywhere in device.h

I've included a couple of patches that should fix all of the above:
'patch -p1 < microwin_fixes.diff' and then
'patch -p1 < microwin_morefixes.diff', starting from the top-level
microwindows directory, should handle that stuff.  There are a
couple of other things that we haven't tried to patch yet that also need
to be fixed, though; the most notable is that FLOAT is defined to be
float in windef.h (which is good; this is preferrable to defining it as
double), but the floating-point constants in graph3d.h (pi and epsilon)
will default to being doubles (they should be suffixed with an 'f' to make
it clear that they're float constants) and cos(), sin(), etc. take double
arguments, not float, so they should be changed to cosf(), sinf(), sqrtf()
and atanf().  (Also, the 'atan' call in angle() should probably be an 'atan2',

which obviates most of the need for that entire function).  I can try and
put together a patch for that if it would be helpful, but it'd be a bit more
effort.

Steven Stadnicki
####@####.####
Another satisfied microwindows 'customer'...


diff -u -r microwin/src/drivers/Makefile microwindows-0.88pre6/src/drivers/Makefile
--- microwin/src/drivers/Makefile	Thu Mar 23 20:46:25 2000
+++ microwindows-0.88pre6/src/drivers/Makefile	Mon Apr  3 19:20:55 2000
@@ -166,7 +166,7 @@
 endif
 
 ifeq ($(DBGDRIVER), Y)
-OBJS += scr_debug.o
+OBJS += scr_debug.o genfont.o genmem.o
 endif
 
 ifeq ($(SERMOUSE), Y)
diff -u -r microwin/src/drivers/kbd_null.c microwindows-0.88pre6/src/drivers/kbd_null.c
--- microwin/src/drivers/kbd_null.c	Sun Apr  2 11:43:15 2000
+++ microwindows-0.88pre6/src/drivers/kbd_null.c	Mon Apr  3 19:15:09 2000
@@ -10,14 +10,24 @@
 static void NUL_Close(void);
 static void NUL_GetModifierInfo(int *modifiers);
 static int  NUL_Read(MWUCHAR *buf, int *modifiers);
+static int  NUL_Poll(void);
 
 KBDDEVICE kbddev = {
 	NUL_Open,
 	NUL_Close,
 	NUL_GetModifierInfo,
 	NUL_Read,
-	NULL
+	NUL_Poll
 };
+
+/*
+ * Poll for keyboard events
+ */
+static int
+NUL_Poll(void)
+{
+  return 0;
+}
 
 /*
  * Open the keyboard.
diff -u -r microwin/src/drivers/mou_null.c microwindows-0.88pre6/src/drivers/mou_null.c
--- microwin/src/drivers/mou_null.c	Sun Apr  2 12:31:13 2000
+++ microwindows-0.88pre6/src/drivers/mou_null.c	Mon Apr  3 19:25:30 2000
@@ -14,6 +14,7 @@
 static int  	NUL_GetButtonInfo(void);
 static void	NUL_GetDefaultAccel(int *pscale,int *pthresh);
 static int  	NUL_Read(MWCOORD *dx, MWCOORD *dy, MWCOORD *dz, int *bp);
+static int  	NUL_Poll(void);
 
 MOUSEDEVICE mousedev = {
 	NUL_Open,
@@ -21,8 +22,18 @@
 	NUL_GetButtonInfo,
 	NUL_GetDefaultAccel,
 	NUL_Read,
-	NULL
+	NUL_Poll
 };
+
+/*
+ * Poll for events
+ */
+
+static int
+NUL_Poll(void)
+{
+  return 0;
+}
 
 /*
  * Open up the mouse device.
diff -u -r microwin/src/mwin/winmain.c microwindows-0.88pre6/src/mwin/winmain.c
--- microwin/src/mwin/winmain.c	Sun Apr  2 18:05:08 2000
+++ microwindows-0.88pre6/src/mwin/winmain.c	Mon Apr  3 19:17:05 2000
@@ -228,6 +228,7 @@
 	if(kbddev.Poll())
 		MwCheckKeyboardEvent();
 
+	MwHandleTimers();
 }
 #endif
 

diff -u -r microwindows-0.88pre6/src/Makefile.rules microwin/src/Makefile.rules
--- microwindows-0.88pre6/src/Makefile.rules	Sun Apr  2 16:25:53 2000
+++ microwin/src/Makefile.rules	Mon Apr  3 20:51:08 2000
@@ -37,6 +37,12 @@
 LDFLAGS += -lvga
 endif
 
+ifeq ($(HAVE_PERROR), Y)
+DEFINES += -DPRINT_ERROR=perror
+else
+DEFINES += -DPRINT_ERROR=printf
+endif
+
 ifeq ($(HAVE_FILEIO), Y)
 
 DEFINES += -DHAVE_FILEIO
diff -u -r microwindows-0.88pre6/src/config microwin/src/config
--- microwindows-0.88pre6/src/config	Sun Apr  2 19:34:39 2000
+++ microwin/src/config	Mon Apr  3 20:07:23 2000
@@ -99,6 +100,16 @@
 HAVE_FILEIO              = Y
 
 ####################################################################
+#
+# perror() support
+# Some embedded platforms don't support perror() so we may not want
+# to define it for now.  (Currently translates to PRINT_ERROR being
+# a mere 'printf'.)
+#
+####################################################################
+HAVE_PERROR              = Y
+
+####################################################################
 # BMP reading support
 ####################################################################
 HAVE_BMP_SUPPORT         = Y
diff -u -r microwindows-0.88pre6/src/demos/nanox/npanel.c microwin/src/demos/nanox/npanel.c
--- microwindows-0.88pre6/src/demos/nanox/npanel.c	Sun Apr  2 13:09:39 2000
+++ microwin/src/demos/nanox/npanel.c	Mon Apr  3 19:58:27 2000
@@ -200,7 +200,7 @@
 		if (ep->utype != GR_UPDATE_MAP) return;
 		printf("Decorating the new window\n");
 		if ((mwp = NewWindow(ep->wid)) == NULL) {
-			perror("malloc");
+			PRINT_ERROR("malloc");
 			return;
 		}
 		mwp->x = ep->x;
diff -u -r microwindows-0.88pre6/src/demos/test/test.c microwin/src/demos/test/test.c
--- microwindows-0.88pre6/src/demos/test/test.c	Tue Feb  8 11:07:04 2000
+++ microwin/src/demos/test/test.c	Mon Apr  3 19:58:27 2000
@@ -29,12 +29,12 @@
 main(int ac,char **av)
 {
 	if ((keyb_fd = GdOpenKeyboard()) < 0) {
-		perror("Cannot initialise keyboard");
+		PRINT_ERROR("Cannot initialise keyboard");
 		return -1;
 	}
 
 	if ((mouse_fd = GdOpenMouse()) < 0) {
-		perror("Cannot initialise mouse");
+		PRINT_ERROR("Cannot initialise mouse");
 		GdCloseKeyboard();
 		return -1;
 	}
@@ -111,7 +111,7 @@
 		printf("select() timeout\n");
 	} else
 		if(errno != EINTR)
-			perror("Select() call in main failed");
+			PRINT_ERROR("Select() call in main failed");
 }
 #endif
 
diff -u -r microwindows-0.88pre6/src/include/device.h microwin/src/include/device.h
--- microwindows-0.88pre6/src/include/device.h	Sun Apr  2 19:08:09 2000
+++ microwin/src/include/device.h	Mon Apr  3 20:14:21 2000
@@ -301,21 +301,21 @@
 #define PIXELVAL332TOCOLORVAL(c)	\
 	((((c) & 0xe0) >> 5) | (((c) & 0x18) << 5) | (((c) & 0x03) << 16))
 
-#if (MWPIXEL_FORMAT == PF_TRUECOLOR888) || (MWPIXEL_FORMAT == PF_TRUECOLOR0888)
+#if (MWPIXEL_FORMAT == MWPF_TRUECOLOR888) || (MWPIXEL_FORMAT == MWPF_TRUECOLOR0888)
 #define RGB2PIXEL(r,g,b)	RGB2PIXEL888(r,g,b)
 #define PIXEL2RED(p)		PIXEL888RED(p)
 #define PIXEL2GREEN(p)		PIXEL888GREEN(p)
 #define PIXEL2BLUE(p)		PIXEL888BLUE(p)
 #endif
 
-#if MWPIXEL_FORMAT == PF_TRUECOLOR565
+#if MWPIXEL_FORMAT == MWPF_TRUECOLOR565
 #define RGB2PIXEL(r,g,b)	RGB2PIXEL565(r,g,b)
 #define PIXEL2RED(p)		PIXEL565RED(p)
 #define PIXEL2GREEN(p)		PIXEL565GREEN(p)
 #define PIXEL2BLUE(p)		PIXEL565BLUE(p)
 #endif
 
-#if MWPIXEL_FORMAT == PF_TRUECOLOR332
+#if MWPIXEL_FORMAT == MWPF_TRUECOLOR332
 #define RGB2PIXEL(r,g,b)	RGB2PIXEL332(r,g,b)
 #define PIXEL2RED(p)		PIXEL332RED(p)
 #define PIXEL2GREEN(p)		PIXEL332GREEN(p)
diff -u -r microwindows-0.88pre6/src/mwin/winmain.c microwin/src/mwin/winmain.c
--- microwindows-0.88pre6/src/mwin/winmain.c	Mon Apr  3 19:17:05 2000
+++ microwin/src/mwin/winmain.c	Mon Apr  3 19:58:27 2000
@@ -341,7 +341,7 @@
 		MwHandleTimers();
 	} else
 		if(errno != EINTR)
-			perror("Select() call in main failed");
+			PRINT_ERROR("Select() call in main failed");
 }
 #endif
 
@@ -384,18 +384,18 @@
 	startTicks = GetTickCount();
 	
 	if ((keyb_fd = GdOpenKeyboard()) == -1) {
-		perror("Cannot initialise keyboard");
+		PRINT_ERROR("Cannot initialise keyboard");
 		return -1;
 	}
 
 	if ((psd = GdOpenScreen()) == NULL) {
-		perror("Cannot initialise screen");
+		PRINT_ERROR("Cannot initialise screen");
 		GdCloseKeyboard();
 		return -1;
 	}
 
 	if ((mouse_fd = GdOpenMouse()) == -1) {
-		perror("Cannot initialise mouse");
+		PRINT_ERROR("Cannot initialise mouse");
 		GdCloseScreen(psd);
 		GdCloseKeyboard();
 		return -1;
@@ -425,7 +425,7 @@
 	
 	wp = GdItemNew(struct hwnd);
 	if (!wp) {
-		perror("No memory for root window");
+		PRINT_ERROR("No memory for root window");
 		GdCloseMouse();
 		GdCloseScreen(psd);
 		GdCloseKeyboard();
diff -u -r microwindows-0.88pre6/src/nanox/srvevent.c microwin/src/nanox/srvevent.c
--- microwindows-0.88pre6/src/nanox/srvevent.c	Sun Apr  2 12:14:19 2000
+++ microwin/src/nanox/srvevent.c	Mon Apr  3 19:58:27 2000
@@ -23,7 +23,7 @@
 {
 	GR_EVENT_ERROR	*ep;		/* event to describe error */
 
-printf("GsError %d, %d\r\n", code, id);
+	printf("GsError %d, %d\n", code, id);
 	/*
 	 * If there is already an outstanding error, then forget this one.
 	 */
diff -u -r microwindows-0.88pre6/src/nanox/srvmain.c microwin/src/nanox/srvmain.c
--- microwindows-0.88pre6/src/nanox/srvmain.c	Sun Apr  2 18:05:56 2000
+++ microwin/src/nanox/srvmain.c	Mon Apr  3 19:58:27 2000
@@ -321,7 +320,7 @@
 #endif
 	} else
 		if(errno != EINTR)
-			perror("Select() call in main failed");
+			PRINT_ERROR("Select() call in main failed");
 }
 #endif
 
@@ -358,21 +357,21 @@
 	signal(SIGPIPE, SIG_IGN);
 
 	if (GsOpenSocket() < 0) {
-		perror("Cannot bind to named socket");
+		PRINT_ERROR("Cannot bind to named socket");
 		free(wp);
 		return -1;
 	}
 #endif
 
 	if ((keyb_fd = GdOpenKeyboard()) == -1) {
-		perror("Cannot initialise keyboard");
+		PRINT_ERROR("Cannot initialise keyboard");
 		/*GsCloseSocket();*/
 		free(wp);
 		return -1;
 	}
 
 	if ((psd = GdOpenScreen()) == NULL) {
-		perror("Cannot initialise screen");
+		PRINT_ERROR("Cannot initialise screen");
 		/*GsCloseSocket();*/
 		GdCloseKeyboard();
 		free(wp);
@@ -380,7 +379,7 @@
 	}
 
 	if ((mouse_fd = GdOpenMouse()) == -1) {
-		perror("Cannot initialise mouse");
+		PRINT_ERROR("Cannot initialise mouse");
 		/*GsCloseSocket();*/
 		GdCloseScreen(psd);
 		GdCloseKeyboard();

Previous by date: 4 Apr 2000 21:10:07 -0000 Re: Break on `GdJPEG' in devimage.c, Greg Haerr
Next by date: 4 Apr 2000 21:10:07 -0000 VNC viewer for nano-X, George Harvey
Previous in thread:
Next in thread: 4 Apr 2000 21:10:07 -0000 Re: A couple of patches and a couple of other notes, Greg Haerr


Powered by ezmlm-browse 0.20.