[comp.sys.sgi] Problems encountered during migration to 3.3.1

lansd@dgp.toronto.edu (Robert Lansdale) (10/27/90)

	Since our machines were upgraded to 3.3.1 (from 3.2), I have
been experiencing a number of problems with several programs which I
have yet to find solutions for. I've read all the release notes and
compared the code against similar SGI programs in the current release
of the O/S, but nothing seems to have changed in terms of accessing the
graphics or multiprocessor library between the different releases. 

1) A multi-tasking problem:
	After allocating 7 tasks (4 using one arena, and 3 from a new one),
I get the message "New share group member pid ### could not join I/O
arena: No space left on device" for the last taskcreate() call. I checked
the currently set STACKSIZE with prctl(), which is 67Mb (we have 200Mb
of main ram), so why am I running out of vm? The program ran fine under
3.2, so did some system variable get reset in the process?

2) The interactive camera manipulator (using the SGI graphics engine)
of my 3D renderer now thinks the window is being moved (the red outline
appears) whenever the user presses the left mouse button. The camera
manipulator itself still functions properly. The polling code looks like:


		while (TRUE) {
			/* Auto-spin mode */
			while ((current_mode == SPIN) && !qtest() && !getbutton(LEFTMOUSE) && !getbutton(MIDDLEMOUSE)) {
				mode = SPIN;
				Update_Scene();
			}

			/* Holding left mouse down activates current mode */
			b1 = getbutton(LEFTMOUSE);
			b2 = getbutton(MIDDLEMOUSE);
			if (b1 || b2) {
				if (b1 && !b2)
					mode = current_mode;
				else if (!b1 && b2)
					mode = DOLLY;
				else 
					mode = TRACK;
				omx = getvaluator(MOUSEX);
				omy = getvaluator(MOUSEY);
				/* Poll rather than queue the mouse events so */
				/* we get smoother motion and better feedback */
				while ((b1 == getbutton(LEFTMOUSE)) && (b2 == getbutton(MIDDLEMOUSE))) {
					mx = getvaluator(MOUSEX);
					my = getvaluator(MOUSEY);
					if (mx != omx || my != omy) {
						Update_Scene();
						omx = mx;
						omy = my;
					}
				}
				mode = NOTHING;
			} 
		.......

3) For my equivalent to the 4DGifts 'movie' program (for our lab's
internal image format), I now get the error "winopen: no graphics"
when I run the program. This one has me stumped at the moment.

	Any comments or pointers would be appreciated. Thanks in advance.

--> Rob Lansdale

-- 
Robert Lansdale - (416) 978-6619       Dynamic Graphics Project	
Internet: lansd@dgp.toronto.edu        Computer Systems Research Institute
UUCP:   ..!uunet!dgp.toronto.edu!lansd University of Toronto
Bitnet:	  lansd@dgp.utoronto           Toronto, Ontario M5S 1A4, CANADA

msc@ramoth.esd.sgi.com (Mark Callow) (10/31/90)

In article <1990Oct26.230347.10855@jarvis.csri.toronto.edu>, lansd@dgp.toronto.edu (Robert Lansdale) writes:
|> 
|> 2) The interactive camera manipulator (using the SGI graphics engine)
|> of my 3D renderer now thinks the window is being moved (the red outline
|> appears) whenever the user presses the left mouse button. The camera
|> manipulator itself still functions properly. The polling code looks like:
|> 
|> 		while (TRUE) {
|> 			/* Auto-spin mode */
|> 			while ((current_mode == SPIN) && !qtest() && !getbutton(LEFTMOUSE) && !getbutton(MIDDLEMOUSE)) {
|> 				mode = SPIN;
|> 				Update_Scene();
|> 			}
You need to qdevice buttons that you are interested in so that the window
manager knows to give up its own interest.  There was a bug in previous
releases such that the window manager didn't pay attention to left mouse
over the window's ClientCanvas (central portion).

-- 
From the TARDIS of Mark Callow
msc@ramoth.sgi.com, ...{ames,decwrl}!sgi!msc
"There is much virtue in a window.  It is to a human being as a frame is to
a painting, as a proscenium to a play.  It strongly defines its content."