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."