furr@mdavcr.UUCP (Steven Furr) (05/30/91)
I am trying to do animation in C++ on a SparcStation using the multibuffering extension and have run into two major problems so far. Is there anyone with a similar configuration who has any significant amount of experience with the multibuffering extension and can elaborate on areas in which the implementation may be flawed? So far I have found that the server can easily die by an attempt to free up buffers more than once, and that at least one function does not have a return statement (a definite no-no on a Sparc). A summary follows: ------------------------------------------------- Mulibuffering Extension appears to have several bugs: 1) No return value: EventSelectForMultibuffer (pMultibuffer, client, mask) MultibufferPtr pMultibuffer; ClientPtr client; Mask mask; { OtherClientsPtr other; if (mask & ~ValidEventMasks) { client->errorValue = mask; return BadValue; } if (bClient (pMultibuffer) == client) | { | This is the branch pMultibuffer->eventMask = mask; | taken. } | else { . . . } } 2) Freed resources (i.e. buffers) are not removed from the data structures -> hence X server tries to free buffers that were destroyed with XmbufDestroyBuffers when the client shuts down. -- Steve Furr ( furr@mda.ca ) Lesser artists borrow, great artists steal. - blatantly stolen from Igor Stravinsky