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