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 */
|