[comp.windows.x] multibuffering problems

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