blob: 5deeb86ab7924aa96b96c163f111138722e525bb [file] [log] [blame]
Alexandre Julliard75a839a1993-07-15 11:13:45 +00001/*
2 * X events handling functions
Alexandre Julliard2787be81995-05-22 18:23:01 +00003 *
Alexandre Julliard75a839a1993-07-15 11:13:45 +00004 * Copyright 1993 Alexandre Julliard
Alexandre Julliard2787be81995-05-22 18:23:01 +00005 *
6 */
Alexandre Julliard75a839a1993-07-15 11:13:45 +00007
Alexandre Julliard8b915631996-06-16 16:16:05 +00008#include "message.h"
Alexandre Julliard75d86e11996-11-17 18:59:11 +00009
Patrik Stridvallb87fe2e1999-04-01 08:16:08 +000010/**********************************************************************/
Ulrich Weigand72dcd5c1998-10-11 18:58:01 +000011
Patrik Stridvallb87fe2e1999-04-01 08:16:08 +000012EVENT_DRIVER *EVENT_Driver = NULL;
Patrik Stridvalle35d6361998-12-07 09:13:40 +000013
14/***********************************************************************
15 * EVENT_Init
Alexandre Julliard670cdc41997-08-24 16:00:30 +000016 *
17 * Initialize network IO.
18 */
Alexandre Julliarda3960291999-02-26 11:11:13 +000019BOOL EVENT_Init(void)
Alexandre Julliard670cdc41997-08-24 16:00:30 +000020{
Patrik Stridvallb87fe2e1999-04-01 08:16:08 +000021 return EVENT_Driver->pInit();
Alexandre Julliard670cdc41997-08-24 16:00:30 +000022}
23
24/***********************************************************************
Patrik Stridvalle35d6361998-12-07 09:13:40 +000025 * EVENT_AddIO
Alexandre Julliard670cdc41997-08-24 16:00:30 +000026 */
Patrik Stridvalle35d6361998-12-07 09:13:40 +000027void EVENT_AddIO(int fd, unsigned io_type)
Alexandre Julliard670cdc41997-08-24 16:00:30 +000028{
Patrik Stridvallb87fe2e1999-04-01 08:16:08 +000029 EVENT_Driver->pAddIO(fd, io_type);
Alexandre Julliard670cdc41997-08-24 16:00:30 +000030}
Alexandre Julliard75d86e11996-11-17 18:59:11 +000031
Alexandre Julliard5f721f81994-01-04 20:14:34 +000032/***********************************************************************
Patrik Stridvalle35d6361998-12-07 09:13:40 +000033 * EVENT_DeleteIO
Alexandre Julliard5f721f81994-01-04 20:14:34 +000034 */
Patrik Stridvalle35d6361998-12-07 09:13:40 +000035void EVENT_DeleteIO(int fd, unsigned io_type)
Alexandre Julliard5f721f81994-01-04 20:14:34 +000036{
Patrik Stridvallb87fe2e1999-04-01 08:16:08 +000037 EVENT_Driver->pDeleteIO(fd, io_type);
Alexandre Julliard75a839a1993-07-15 11:13:45 +000038}
39
Alexandre Julliard7ebe1a41996-12-22 18:27:48 +000040/***********************************************************************
Patrik Stridvalle35d6361998-12-07 09:13:40 +000041 * EVENT_WaitNetEvent
Alexandre Julliardef702d81996-05-28 18:54:58 +000042 *
Alexandre Julliard670cdc41997-08-24 16:00:30 +000043 * Wait for a network event, optionally sleeping until one arrives.
Alexandre Julliardef702d81996-05-28 18:54:58 +000044 * Return TRUE if an event is pending, FALSE on timeout or error
45 * (for instance lost connection with the server).
46 */
Alexandre Julliarda3960291999-02-26 11:11:13 +000047BOOL EVENT_WaitNetEvent(BOOL sleep, BOOL peek)
Alexandre Julliardef702d81996-05-28 18:54:58 +000048{
Patrik Stridvallb87fe2e1999-04-01 08:16:08 +000049 return EVENT_Driver->pWaitNetEvent(sleep, peek);
Alexandre Julliardef702d81996-05-28 18:54:58 +000050}
51
Alexandre Julliardef702d81996-05-28 18:54:58 +000052/***********************************************************************
Patrik Stridvalle35d6361998-12-07 09:13:40 +000053 * EVENT_Synchronize
Alexandre Julliardef702d81996-05-28 18:54:58 +000054 *
55 * Synchronize with the X server. Should not be used too often.
56 */
Patrik Stridvalle35d6361998-12-07 09:13:40 +000057void EVENT_Synchronize(void)
Alexandre Julliardef702d81996-05-28 18:54:58 +000058{
Patrik Stridvallb87fe2e1999-04-01 08:16:08 +000059 EVENT_Driver->pSynchronize();
Alexandre Julliardef702d81996-05-28 18:54:58 +000060}
61
Patrik Stridvalle35d6361998-12-07 09:13:40 +000062/**********************************************************************
63 * EVENT_CheckFocus
Alexandre Julliard84c70f51997-05-09 08:40:27 +000064 */
Alexandre Julliarda3960291999-02-26 11:11:13 +000065BOOL EVENT_CheckFocus(void)
Alexandre Julliard84c70f51997-05-09 08:40:27 +000066{
Patrik Stridvallb87fe2e1999-04-01 08:16:08 +000067 return EVENT_Driver->pCheckFocus();
Alexandre Julliard84c70f51997-05-09 08:40:27 +000068}
69
Alexandre Julliardef702d81996-05-28 18:54:58 +000070/***********************************************************************
Patrik Stridvalle35d6361998-12-07 09:13:40 +000071 * EVENT_QueryPointer
Alexandre Julliard75a839a1993-07-15 11:13:45 +000072 */
Alexandre Julliarda3960291999-02-26 11:11:13 +000073BOOL EVENT_QueryPointer(DWORD *posX, DWORD *posY, DWORD *state)
Alexandre Julliard75a839a1993-07-15 11:13:45 +000074{
Patrik Stridvallb87fe2e1999-04-01 08:16:08 +000075 return EVENT_Driver->pQueryPointer(posX, posY, state);
Alexandre Julliarde2bfa4c1996-05-16 18:21:06 +000076}
77
78
79/***********************************************************************
Patrik Stridvalle35d6361998-12-07 09:13:40 +000080 * EVENT_DummyMotionNotify
Alexandre Julliardaf0bae51995-10-03 17:06:08 +000081 *
82 * Generate a dummy MotionNotify event. Used to force a WM_SETCURSOR message.
83 */
84void EVENT_DummyMotionNotify(void)
85{
Patrik Stridvallb87fe2e1999-04-01 08:16:08 +000086 EVENT_Driver->pDummyMotionNotify();
Alexandre Julliardaf0bae51995-10-03 17:06:08 +000087}
88
Patrik Stridvalle35d6361998-12-07 09:13:40 +000089/**********************************************************************
Patrik Stridvallb87fe2e1999-04-01 08:16:08 +000090 * EVENT_Pending
Patrik Stridvalle35d6361998-12-07 09:13:40 +000091 */
Alexandre Julliarda3960291999-02-26 11:11:13 +000092BOOL EVENT_Pending()
Patrik Stridvalle35d6361998-12-07 09:13:40 +000093{
Patrik Stridvallb87fe2e1999-04-01 08:16:08 +000094 return EVENT_Driver->pPending();
Patrik Stridvalle35d6361998-12-07 09:13:40 +000095}
Alexandre Julliardaf0bae51995-10-03 17:06:08 +000096
97/***********************************************************************
Patrik Stridvalle35d6361998-12-07 09:13:40 +000098 * IsUserIdle (USER.333)
Alexandre Julliard8d24ae61994-04-05 21:42:43 +000099 *
Patrik Stridvalle35d6361998-12-07 09:13:40 +0000100 * Check if we have pending X events.
Alexandre Julliard5f721f81994-01-04 20:14:34 +0000101 */
Alexandre Julliarda3960291999-02-26 11:11:13 +0000102BOOL16 WINAPI IsUserIdle16(void)
Alexandre Julliardcdd09231994-01-12 11:12:51 +0000103{
Patrik Stridvallb87fe2e1999-04-01 08:16:08 +0000104 return EVENT_Driver->pIsUserIdle();
Alexandre Julliardcdd09231994-01-12 11:12:51 +0000105}
Stephane Lussierb50272b1999-02-21 18:15:26 +0000106
107/***********************************************************************
108 * EVENT_WakeUp
109 *
110 * Wake up the scheduler (EVENT_WaitNetEvent). Use by 32 bit thread
111 * when thew want signaled an event to a 16 bit task. This function
112 * will become obsolete when an Asynchronous thread will be implemented
113 */
114void EVENT_WakeUp(void)
115{
Patrik Stridvallb87fe2e1999-04-01 08:16:08 +0000116 EVENT_Driver->pWakeUp();
Stephane Lussierb50272b1999-02-21 18:15:26 +0000117}