###############################################################################
# #
# Copyright © 1989-1991 by Artificial Horizons®, Inc. All rights reserved. #
# #
# This material constitutes the trade secrets and confidential, #
# proprietary information of Bruce Factor and Curtis Priem, and is #
# under license to Artificial Horizons, Inc. The material is not #
# to be disclosed, reproduced, copied, or used in any manner not #
# permitted under license from Artificial Horizons, Inc. For more #
# information email "ahi-interest@ahi.com". #
# #
###############################################################################
DOUBLE_BUFFER(3GC) AVIATOR GRAPHICS INTERFACE CLASSES DOUBLE_BUFFER(3GC)
NAME
FB_CLASS__DOUBLE_BUFFER - double buffer class
SYNOPSIS
#include <agi.h>
register Fbuffer fbp;
fbstart(fbp, FB_CLASS__DOUBLE_BUFFER) {
} fbend(fbp);
DESCRIPTION
The class FB_CLASS__DOUBLE_BUFFER is used for controlling double
buffering.
Class FB_CLASS__DOUBLE_BUFFER must only be used between a fblock(3G)
and fbunlock(3G). Double buffering is automatically enable for the
locked window when FB_MEMBER__WRITE_HIDDEN__LOGICAL is set to TRUE
or FB_MEMBER__READ_VISIBLE__LOGICAL is set to FALSE.
MEMBERS
The following public members can be accessed by using routines
fbput(3G) and fbget(3G):
FB_MEMBER__WRITE_VISIBLE__LOGICAL
If WRITE_VISIBLE is true, the frame buffer should write into
the visible buffer. The default value is TRUE.
FB_MEMBER__WRITE_HIDDEN__LOGICAL
If WRITE_HIDDEN is true, the frame buffer should write into
the hidden buffer. The default value is FALSE.
FB_MEMBER__READ_VISIBLE__LOGICAL
If READ_VISIBLE is true, the frame buffer reads the source of
blits from the visible buffer. If it is false, the source is
read from the hidden buffer. This read is not the read of a
read-modify-write raster operation, which always uses the
destination frame buffer. The default value is TRUE.
The following public members can be accessed by using the routine
fbget(3G):
FB_MEMBER__AVAILABLE__LOGICAL
If AVAILABLE is true, the frame buffer is capable of doing
hardware double buffering. If false, the frame buffer is
IEEE single buffer and some other form of double buffering
(eg. color map double buffering) must be used.
FUNCTIONS
The following public functions can be called by using the fbcall(3G)
routine:
FB_FUNCTION__STORE
STORE stores the WRITE_VISIBLE, WRITE_HIDDEN, and READ_VISIBLE
into the frame buffer.
FB_FUNCTION__SCHEDULE_FLIP
The SCHEDULE_FLIP function tells the frame buffer that the
hidden buffer should become visible at the earliest possible
time.
FB_FUNCTION__WAIT_FOR_FLIP
The WAIT_FOR_FLIP function does not return until the buffer
has been completely flipped. This function must be called
after the SCHEDULE_FLIP function and before any other graphics
code (AGI, other APIs, or windowing system) is executed. The
hidden buffer will have garbage in it after the flip.
SEE ALSO
fbcall(3G), fbend(3G), fbget(3G), fbput(3G), fbstart(3G)
PERFORMANCE
As much non-graphics code should be put after the SCHEDULE_FLIP
function call. It normally takes a long time before the flip is done.
AGI Release 1.8 Last change: 25 December 1991