123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363 |
- (*
- Copyright 1991, 1993, 1994, 1998 The Open Group
- Permission to use, copy, modify, distribute, and sell this software and its
- documentation for any purpose is hereby granted without fee, provided that
- the above copyright notice appear in all copies and that both that
- copyright notice and this permission notice appear in supporting
- documentation.
- The above copyright notice and this permission notice shall be included in
- all copies or substantial portions of the Software.
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
- AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- Except as contained in this notice, the name of The Open Group shall not be
- used in advertising or otherwise to promote the sale, use or other dealings
- in this Software without prior written authorization from The Open Group.
- *)
- (***********************************************************
- Copyright 1991,1993 by Digital Equipment Corporation, Maynard, Massachusetts,
- and Olivetti Research Limited, Cambridge, England.
- All Rights Reserved
- Permission to use, copy, modify, and distribute this software and its
- documentation for any purpose and without fee is hereby granted,
- provided that the above copyright notice appear in all copies and that
- both that copyright notice and this permission notice appear in
- supporting documentation, and that the names of Digital or Olivetti
- not be used in advertising or publicity pertaining to distribution of the
- software without specific, written prior permission.
- DIGITAL AND OLIVETTI DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
- SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
- FITNESS, IN NO EVENT SHALL THEY BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
- USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
- OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- PERFORMANCE OF THIS SOFTWARE.
- ******************************************************************)
- {$IFNDEF FPC_DOTTEDUNITS}
- unit sync;
- {$ENDIF FPC_DOTTEDUNITS}
- {$PACKRECORDS c}
- interface
- {$IFDEF FPC_DOTTEDUNITS}
- uses
- System.CTypes, Api.X11.X, Api.X11.Xlib;
- {$ELSE FPC_DOTTEDUNITS}
- uses
- ctypes, x, xlib;
- {$ENDIF FPC_DOTTEDUNITS}
- const
- libXext = 'Xext';
- {$I syncconst.inc}
- type
- PXSyncSystemCounter = ^TXSyncSystemCounter;
- TXSyncSystemCounter = record
- name: PAnsiChar; { null-terminated name of system counter }
- counter: TXSyncCounter; { counter id of this system counter }
- resolution: TXSyncValue; { resolution of this system counter }
- end;
- PXSyncTrigger = ^TXSyncTrigger;
- TXSyncTrigger = record
- counter: TXSyncCounter; { counter to trigger on }
- value_type: TXSyncValueType; { absolute/relative }
- wait_value: TXSyncValue; { value to compare counter to }
- test_type: TXSyncTestType; { pos/neg comparison/transtion }
- end;
- PXSyncWaitCondition = ^TXSyncWaitCondition;
- TXSyncWaitCondition = record
- trigger: TXSyncTrigger; { trigger for await }
- event_threshold: TXSyncValue; { send event if past threshold }
- end;
- PXSyncAlarmAttributes = ^TXSyncAlarmAttributes;
- TXSyncAlarmAttributes = record
- trigger: TXSyncTrigger;
- delta: TXSyncValue;
- events: TBool;
- state: TXSyncAlarmState;
- end;
- (*
- * Events
- *)
- PXSyncCounterNotifyEvent = ^TXSyncCounterNotifyEvent;
- TXSyncCounterNotifyEvent = record
- _type: cint; { event base + XSyncCounterNotify }
- serial: culong; { # of last request processed by server }
- send_event: TBool; { true if this came from a SendEvent request }
- display: PDisplay; { Display the event was read from }
- counter: TXSyncCounter; { counter involved in await }
- wait_value: TXSyncValue; { value being waited for }
- counter_value: TXSyncValue; { counter value when this event was sent }
- time: TTime; { milliseconds }
- count: cint; { how many more events to come }
- destroyed: TBool; { True if counter was destroyed }
- end;
- PXSyncAlarmNotifyEvent = ^TXSyncAlarmNotifyEvent;
- TXSyncAlarmNotifyEvent = record
- _type: cint; { event base + XSyncAlarmNotify }
- serial: culong; { # of last request processed by server }
- send_event: TBool; { true if this came from a SendEvent request }
- display: PDisplay; { Display the event was read from }
- alarm: TXSyncAlarm; { alarm that triggered }
- counter_value: TXSyncValue; { value that triggered the alarm }
- alarm_value: TXSyncValue; { test value of trigger in alarm }
- time: TTime; { milliseconds }
- state: TXSyncAlarmState; { new state of alarm }
- end;
- (*
- * Errors
- *)
- PXSyncAlarmError = ^TXSyncAlarmError;
- TXSyncAlarmError = record
- _type: cint;
- display: PDisplay; { Display the event was read from }
- alarm: TXSyncAlarm; { resource id }
- serial: culong; { serial number of failed request }
- error_code: cuchar; { error base + XSyncBadAlarm }
- request_code: cuchar; { Major op-code of failed request }
- minor_code: cuchar; { Minor op-code of failed request }
- end;
- PXSyncCounterError = ^TXSyncCounterError;
- TXSyncCounterError = record
- _type: cint;
- display: PDisplay; { Display the event was read from }
- counter: TXSyncCounter; { resource id }
- serial: culong; { serial number of failed request }
- error_code: cuchar; { error base + XSyncBadCounter }
- request_code: cuchar; { Major op-code of failed request }
- minor_code: cuchar; { Minor op-code of failed request }
- end;
- procedure XSyncIntToValue(
- pv: PXSyncValue;
- i: cint
- ); cdecl; external libXext;
- procedure XSyncIntsToValue(
- pv: PXSyncValue;
- l: cuint;
- h: cint
- ); cdecl; external libXext;
- function XSyncValueGreaterThan(
- a: TXSyncValue;
- b: TXSyncValue
- ): TBoolResult; cdecl; external libXext;
- function XSyncValueLessThan(
- a: TXSyncValue;
- b: TXSyncValue
- ): TBoolResult; cdecl; external libXext;
- function XSyncValueGreaterOrEqual(
- a: TXSyncValue;
- b: TXSyncValue
- ): TBoolResult; cdecl; external libXext;
- function XSyncValueLessOrEqual(
- a: TXSyncValue;
- b: TXSyncValue
- ): TBoolResult; cdecl; external libXext;
- function XSyncValueEqual(
- a: TXSyncValue;
- b: TXSyncValue
- ): TBoolResult; cdecl; external libXext;
- function XSyncValueIsNegative(
- v: TXSyncValue
- ): TBoolResult; cdecl; external libXext;
- function XSyncValueIsZero(
- a: TXSyncValue
- ): TBoolResult; cdecl; external libXext;
- function XSyncValueIsPositive(
- v: TXSyncValue
- ): TBoolResult; cdecl; external libXext;
- function XSyncValueLow32(
- v: TXSyncValue
- ): cuint; cdecl; external libXext;
- function XSyncValueHigh32(
- v: TXSyncValue
- ): cint; cdecl; external libXext;
- procedure XSyncValueAdd(
- presult: PXSyncValue;
- a: TXSyncValue;
- b: TXSyncValue;
- poverflow: Pcint
- ); cdecl; external libXext;
- procedure XSyncValueSubtract(
- presult: PXSyncValue;
- a: TXSyncValue;
- b: TXSyncValue;
- poverflow: Pcint
- ); cdecl; external libXext;
- procedure XSyncMaxValue(
- pv: PXSyncValue
- ); cdecl; external libXext;
- procedure XSyncMinValue(
- pv: PXSyncValue
- ); cdecl; external libXext;
- function XSyncQueryExtension(
- dpy: PDisplay;
- event_base_return,
- error_base_return: Pcint
- ): TStatus; cdecl; external libXext;
- function XSyncInitialize(
- dpy: PDisplay;
- major_version_return,
- minor_version_return: Pcint
- ): TStatus; cdecl; external libXext;
- function XSyncListSystemCounters(
- dpy: PDisplay;
- n_counters_return: Pcint
- ): PXSyncSystemCounter; cdecl; external libXext;
- procedure XSyncFreeSystemCounterList(
- list: PXSyncSystemCounter
- ); cdecl; external libXext;
- function XSyncCreateCounter(
- dpy: PDisplay;
- initial_value: TXSyncValue
- ): TXSyncCounter; cdecl; external libXext;
- function XSyncSetCounter(
- dpy: PDisplay;
- counter: TXSyncCounter;
- value: TXSyncValue
- ): TStatus; cdecl; external libXext;
- function XSyncChangeCounter(
- dpy: PDisplay;
- counter: TXSyncCounter;
- value: TXSyncValue
- ): TStatus; cdecl; external libXext;
- function XSyncDestroyCounter(
- dpy: PDisplay;
- counter: TXSyncCounter
- ): TStatus; cdecl; external libXext;
- function XSyncQueryCounter(
- dpy: PDisplay;
- counter: TXSyncCounter;
- value_return: PXSyncValue
- ): TStatus; cdecl; external libXext;
- function XSyncAwait(
- dpy: PDisplay;
- wait_list: PXSyncWaitCondition;
- n_conditions: cint
- ): TStatus; cdecl; external libXext;
- function XSyncCreateAlarm(
- dpy: PDisplay;
- values_mask: culong;
- values: PXSyncAlarmAttributes
- ): TXSyncAlarm; cdecl; external libXext;
- function XSyncDestroyAlarm(
- dpy: PDisplay;
- alarm: TXSyncAlarm
- ): TStatus; cdecl; external libXext;
- function XSyncQueryAlarm(
- dpy: PDisplay;
- alarm: TXSyncAlarm;
- values_return: PXSyncAlarmAttributes
- ): TStatus; cdecl; external libXext;
- function XSyncChangeAlarm(
- dpy: PDisplay;
- alarm: TXSyncAlarm;
- values_mask: culong;
- values: PXSyncAlarmAttributes
- ): TStatus; cdecl; external libXext;
- function XSyncSetPriority(
- dpy: PDisplay;
- client_resource_id: TXID;
- priority: cint
- ): TStatus; cdecl; external libXext;
- function XSyncGetPriority(
- dpy: PDisplay;
- client_resource_id: TXID;
- return_priority: Pcint
- ): TStatus; cdecl; external libXext;
- function XSyncCreateFence(
- dpy: PDisplay;
- d: TDrawable;
- initially_triggered: TBool
- ): TXSyncFence; cdecl; external libXext;
- function XSyncTriggerFence(
- dpy: PDisplay;
- fence: TXSyncFence
- ): TBoolResult; cdecl; external libXext;
- function XSyncResetFence(
- dpy: PDisplay;
- fence: TXSyncFence
- ): TBoolResult; cdecl; external libXext;
- function XSyncDestroyFence(
- dpy: PDisplay;
- fence: TXSyncFence
- ): TBoolResult; cdecl; external libXext;
- function XSyncQueryFence(
- dpy: PDisplay;
- fence: TXSyncFence;
- triggered: PBool
- ): TBoolResult; cdecl; external libXext;
- function XSyncAwaitFence(
- dpy: PDisplay;
- fence_list: PXSyncFence;
- n_fences: cint
- ): TBoolResult; cdecl; external libXext;
- implementation
- end.
|