93 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			C
		
	
	
	
			
		
		
	
	
			93 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			C
		
	
	
	
| /* SPDX-License-Identifier: MIT OR X11
 | |
|  *
 | |
|  * Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
 | |
|  * Copyright © 2024 Enrico Weigelt, metux IT consult <info@metux.net>
 | |
|  */
 | |
| #ifndef _XSERVER_DIXSTRUCT_PRIV_H
 | |
| #define _XSERVER_DIXSTRUCT_PRIV_H
 | |
| 
 | |
| #include "client.h"
 | |
| #include "dix.h"
 | |
| #include "resource.h"
 | |
| #include "cursor.h"
 | |
| #include "gc.h"
 | |
| #include "pixmap.h"
 | |
| #include "privates.h"
 | |
| #include "dixstruct.h"
 | |
| #include <X11/Xmd.h>
 | |
| 
 | |
| static inline void
 | |
| SetReqFds(ClientPtr client, int req_fds) {
 | |
|     if (client->req_fds != 0 && req_fds != client->req_fds)
 | |
|         LogMessage(X_ERROR, "Mismatching number of request fds %d != %d\n", req_fds, client->req_fds);
 | |
|     client->req_fds = req_fds;
 | |
| }
 | |
| 
 | |
| /*
 | |
|  * Scheduling interface
 | |
|  */
 | |
| extern long SmartScheduleTime;
 | |
| extern long SmartScheduleInterval;
 | |
| extern long SmartScheduleSlice;
 | |
| extern long SmartScheduleMaxSlice;
 | |
| #ifdef HAVE_SETITIMER
 | |
| extern Bool SmartScheduleSignalEnable;
 | |
| #else
 | |
| #define SmartScheduleSignalEnable FALSE
 | |
| #endif
 | |
| void SmartScheduleStartTimer(void);
 | |
| void SmartScheduleStopTimer(void);
 | |
| 
 | |
| /* Client has requests queued or data on the network */
 | |
| void mark_client_ready(ClientPtr client);
 | |
| 
 | |
| /*
 | |
|  * Client has requests queued or data on the network, but awaits a
 | |
|  * server grab release
 | |
|  */
 | |
| void mark_client_saved_ready(ClientPtr client);
 | |
| 
 | |
| /* Client has no requests queued and no data on network */
 | |
| void mark_client_not_ready(ClientPtr client);
 | |
| 
 | |
| static inline Bool client_is_ready(ClientPtr client)
 | |
| {
 | |
|     return !xorg_list_is_empty(&client->ready);
 | |
| }
 | |
| 
 | |
| Bool
 | |
| clients_are_ready(void);
 | |
| 
 | |
| extern struct xorg_list output_pending_clients;
 | |
| 
 | |
| static inline void
 | |
| output_pending_mark(ClientPtr client)
 | |
| {
 | |
|     if (!client->clientGone && xorg_list_is_empty(&client->output_pending))
 | |
|         xorg_list_append(&client->output_pending, &output_pending_clients);
 | |
| }
 | |
| 
 | |
| static inline void
 | |
| output_pending_clear(ClientPtr client)
 | |
| {
 | |
|     xorg_list_del(&client->output_pending);
 | |
| }
 | |
| 
 | |
| static inline Bool any_output_pending(void) {
 | |
|     return !xorg_list_is_empty(&output_pending_clients);
 | |
| }
 | |
| 
 | |
| #define SMART_MAX_PRIORITY  (20)
 | |
| #define SMART_MIN_PRIORITY  (-20)
 | |
| 
 | |
| void SmartScheduleInit(void);
 | |
| 
 | |
| /* This prototype is used pervasively in Xext, dix */
 | |
| #define DISPATCH_PROC(func) int func(ClientPtr /* client */)
 | |
| 
 | |
| /* proc vectors */
 | |
| 
 | |
| extern int (*InitialVector[3]) (ClientPtr /*client */ );
 | |
| 
 | |
| #endif /* _XSERVER_DIXSTRUCT_PRIV_H */
 |