Finish deleting EVI
This commit is contained in:
parent
eafaf40fb3
commit
13adef8a17
200
Xext/EVI.c
200
Xext/EVI.c
|
@ -1,200 +0,0 @@
|
|||
/************************************************************
|
||||
Copyright (c) 1997 by Silicon Graphics Computer Systems, Inc.
|
||||
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 name of Silicon Graphics not be
|
||||
used in advertising or publicity pertaining to distribution
|
||||
of the software without specific prior written permission.
|
||||
Silicon Graphics makes no representation about the suitability
|
||||
of this software for any purpose. It is provided "as is"
|
||||
without any express or implied warranty.
|
||||
SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
|
||||
SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
||||
AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
|
||||
GRAPHICS 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.
|
||||
********************************************************/
|
||||
|
||||
#ifdef HAVE_DIX_CONFIG_H
|
||||
#include <dix-config.h>
|
||||
#endif
|
||||
|
||||
#include <X11/X.h>
|
||||
#include <X11/Xproto.h>
|
||||
#include "dixstruct.h"
|
||||
#include "extnsionst.h"
|
||||
#include "dix.h"
|
||||
#define _XEVI_SERVER_
|
||||
#include <X11/extensions/XEVIstr.h>
|
||||
#include "EVIstruct.h"
|
||||
#include "modinit.h"
|
||||
#include "scrnintstr.h"
|
||||
|
||||
static EviPrivPtr eviPriv;
|
||||
|
||||
static int
|
||||
ProcEVIQueryVersion(ClientPtr client)
|
||||
{
|
||||
/* REQUEST(xEVIQueryVersionReq); */
|
||||
xEVIQueryVersionReply rep;
|
||||
register int n;
|
||||
REQUEST_SIZE_MATCH (xEVIQueryVersionReq);
|
||||
rep.type = X_Reply;
|
||||
rep.length = 0;
|
||||
rep.sequenceNumber = client->sequence;
|
||||
rep.majorVersion = XEVI_MAJOR_VERSION;
|
||||
rep.minorVersion = XEVI_MAJOR_VERSION;
|
||||
if (client->swapped) {
|
||||
swaps(&rep.sequenceNumber, n);
|
||||
swapl(&rep.length, n);
|
||||
swaps(&rep.majorVersion, n);
|
||||
swaps(&rep.minorVersion, n);
|
||||
}
|
||||
WriteToClient(client, sizeof (xEVIQueryVersionReply), (char *)&rep);
|
||||
return (client->noClientException);
|
||||
}
|
||||
#define swapEviInfo(eviInfo, l) \
|
||||
{ \
|
||||
int l1 = l; \
|
||||
xExtendedVisualInfo *eviInfo1 = eviInfo; \
|
||||
while (l1-- > 0) { \
|
||||
swapl(&eviInfo1->core_visual_id, n); \
|
||||
swapl(&eviInfo1->transparency_value, n); \
|
||||
swaps(&eviInfo1->num_colormap_conflicts, n); \
|
||||
eviInfo1++; \
|
||||
} \
|
||||
}
|
||||
#define swapVisual(visual, l) \
|
||||
{ \
|
||||
int l1 = l; \
|
||||
VisualID32 *visual1 = visual; \
|
||||
while (l1-- > 0) { \
|
||||
swapl(visual1, n); \
|
||||
visual1++; \
|
||||
} \
|
||||
}
|
||||
|
||||
static int
|
||||
ProcEVIGetVisualInfo(ClientPtr client)
|
||||
{
|
||||
REQUEST(xEVIGetVisualInfoReq);
|
||||
xEVIGetVisualInfoReply rep;
|
||||
int i, n, n_conflict, n_info, sz_info, sz_conflict;
|
||||
VisualID32 *conflict;
|
||||
unsigned int total_visuals = 0;
|
||||
xExtendedVisualInfo *eviInfo;
|
||||
int status;
|
||||
|
||||
/*
|
||||
* do this first, otherwise REQUEST_FIXED_SIZE can overflow. we assume
|
||||
* here that you don't have more than 2^32 visuals over all your screens;
|
||||
* this seems like a safe assumption.
|
||||
*/
|
||||
for (i = 0; i < screenInfo.numScreens; i++)
|
||||
total_visuals += screenInfo.screens[i]->numVisuals;
|
||||
if (stuff->n_visual > total_visuals)
|
||||
return BadValue;
|
||||
|
||||
REQUEST_FIXED_SIZE(xEVIGetVisualInfoReq, stuff->n_visual * sz_VisualID32);
|
||||
status = eviPriv->getVisualInfo((VisualID32 *)&stuff[1], (int)stuff->n_visual,
|
||||
&eviInfo, &n_info, &conflict, &n_conflict);
|
||||
if (status != Success)
|
||||
return status;
|
||||
sz_info = n_info * sz_xExtendedVisualInfo;
|
||||
sz_conflict = n_conflict * sz_VisualID32;
|
||||
rep.type = X_Reply;
|
||||
rep.n_info = n_info;
|
||||
rep.n_conflicts = n_conflict;
|
||||
rep.sequenceNumber = client->sequence;
|
||||
rep.length = (sz_info + sz_conflict) >> 2;
|
||||
if (client->swapped) {
|
||||
swaps(&rep.sequenceNumber, n);
|
||||
swapl(&rep.length, n);
|
||||
swapl(&rep.n_info, n);
|
||||
swapl(&rep.n_conflicts, n);
|
||||
swapEviInfo(eviInfo, n_info);
|
||||
swapVisual(conflict, n_conflict);
|
||||
}
|
||||
WriteToClient(client, sz_xEVIGetVisualInfoReply, (char *)&rep);
|
||||
WriteToClient(client, sz_info, (char *)eviInfo);
|
||||
WriteToClient(client, sz_conflict, (char *)conflict);
|
||||
eviPriv->freeVisualInfo(eviInfo, conflict);
|
||||
return (client->noClientException);
|
||||
}
|
||||
|
||||
static int
|
||||
ProcEVIDispatch(ClientPtr client)
|
||||
{
|
||||
REQUEST(xReq);
|
||||
switch (stuff->data) {
|
||||
case X_EVIQueryVersion:
|
||||
return ProcEVIQueryVersion (client);
|
||||
case X_EVIGetVisualInfo:
|
||||
return ProcEVIGetVisualInfo (client);
|
||||
default:
|
||||
return BadRequest;
|
||||
}
|
||||
}
|
||||
|
||||
static int
|
||||
SProcEVIQueryVersion(ClientPtr client)
|
||||
{
|
||||
REQUEST(xEVIQueryVersionReq);
|
||||
int n;
|
||||
swaps(&stuff->length, n);
|
||||
return ProcEVIQueryVersion(client);
|
||||
}
|
||||
|
||||
static int
|
||||
SProcEVIGetVisualInfo(ClientPtr client)
|
||||
{
|
||||
register int n;
|
||||
REQUEST(xEVIGetVisualInfoReq);
|
||||
swaps(&stuff->length, n);
|
||||
return ProcEVIGetVisualInfo(client);
|
||||
}
|
||||
|
||||
static int
|
||||
SProcEVIDispatch(ClientPtr client)
|
||||
{
|
||||
REQUEST(xReq);
|
||||
switch (stuff->data)
|
||||
{
|
||||
case X_EVIQueryVersion:
|
||||
return SProcEVIQueryVersion (client);
|
||||
case X_EVIGetVisualInfo:
|
||||
return SProcEVIGetVisualInfo (client);
|
||||
default:
|
||||
return BadRequest;
|
||||
}
|
||||
}
|
||||
|
||||
/*ARGSUSED*/
|
||||
static void
|
||||
EVIResetProc(ExtensionEntry *extEntry)
|
||||
{
|
||||
eviDDXReset();
|
||||
}
|
||||
|
||||
/****************
|
||||
* XEVIExtensionInit
|
||||
*
|
||||
* Called from InitExtensions in main() or from QueryExtension() if the
|
||||
* extension is dynamically loaded.
|
||||
*
|
||||
****************/
|
||||
void
|
||||
EVIExtensionInit(INITARGS)
|
||||
{
|
||||
if (AddExtension(EVINAME, 0, 0,
|
||||
ProcEVIDispatch, SProcEVIDispatch,
|
||||
EVIResetProc, StandardMinorOpcode)) {
|
||||
eviPriv = eviDDXInit();
|
||||
}
|
||||
}
|
123
Xext/sampleEVI.c
123
Xext/sampleEVI.c
|
@ -1,123 +0,0 @@
|
|||
/************************************************************
|
||||
Copyright (c) 1997 by Silicon Graphics Computer Systems, Inc.
|
||||
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 name of Silicon Graphics not be
|
||||
used in advertising or publicity pertaining to distribution
|
||||
of the software without specific prior written permission.
|
||||
Silicon Graphics makes no representation about the suitability
|
||||
of this software for any purpose. It is provided "as is"
|
||||
without any express or implied warranty.
|
||||
SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
|
||||
SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
||||
AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
|
||||
GRAPHICS 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.
|
||||
********************************************************/
|
||||
|
||||
#ifdef HAVE_DIX_CONFIG_H
|
||||
#include <dix-config.h>
|
||||
#endif
|
||||
|
||||
#include <X11/X.h>
|
||||
#include <X11/Xproto.h>
|
||||
#include "dixstruct.h"
|
||||
#include "extnsionst.h"
|
||||
#include "dix.h"
|
||||
#define _XEVI_SERVER_
|
||||
#include <X11/extensions/XEVIstr.h>
|
||||
#include "EVIstruct.h"
|
||||
#include "scrnintstr.h"
|
||||
|
||||
#if HAVE_STDINT_H
|
||||
#include <stdint.h>
|
||||
#elif !defined(UINT32_MAX)
|
||||
#define UINT32_MAX 0xffffffffU
|
||||
#endif
|
||||
|
||||
static int sampleGetVisualInfo(
|
||||
VisualID32 *visual,
|
||||
int n_visual,
|
||||
xExtendedVisualInfo **evi_rn,
|
||||
int *n_info_rn,
|
||||
VisualID32 **conflict_rn,
|
||||
int *n_conflict_rn)
|
||||
{
|
||||
unsigned int max_sz_evi;
|
||||
VisualID32 *temp_conflict;
|
||||
xExtendedVisualInfo *evi;
|
||||
unsigned int max_visuals = 0, max_sz_conflict, sz_conflict = 0;
|
||||
register int visualI, scrI, sz_evi = 0, conflictI, n_conflict;
|
||||
|
||||
if (n_visual > UINT32_MAX/(sz_xExtendedVisualInfo * screenInfo.numScreens))
|
||||
return BadAlloc;
|
||||
max_sz_evi = n_visual * sz_xExtendedVisualInfo * screenInfo.numScreens;
|
||||
|
||||
for (scrI = 0; scrI < screenInfo.numScreens; scrI++) {
|
||||
if (screenInfo.screens[scrI]->numVisuals > max_visuals)
|
||||
max_visuals = screenInfo.screens[scrI]->numVisuals;
|
||||
}
|
||||
|
||||
if (n_visual > UINT32_MAX/(sz_VisualID32 * screenInfo.numScreens
|
||||
* max_visuals))
|
||||
return BadAlloc;
|
||||
max_sz_conflict = n_visual * sz_VisualID32 * screenInfo.numScreens * max_visuals;
|
||||
|
||||
*evi_rn = evi = (xExtendedVisualInfo *)xalloc(max_sz_evi);
|
||||
if (!*evi_rn)
|
||||
return BadAlloc;
|
||||
|
||||
temp_conflict = (VisualID32 *)xalloc(max_sz_conflict);
|
||||
if (!temp_conflict) {
|
||||
xfree(*evi_rn);
|
||||
return BadAlloc;
|
||||
}
|
||||
|
||||
for (scrI = 0; scrI < screenInfo.numScreens; scrI++) {
|
||||
for (visualI = 0; visualI < n_visual; visualI++) {
|
||||
evi[sz_evi].core_visual_id = visual[visualI];
|
||||
evi[sz_evi].screen = scrI;
|
||||
evi[sz_evi].level = 0;
|
||||
evi[sz_evi].transparency_type = XEVI_TRANSPARENCY_NONE;
|
||||
evi[sz_evi].transparency_value = 0;
|
||||
evi[sz_evi].min_hw_colormaps = 1;
|
||||
evi[sz_evi].max_hw_colormaps = 1;
|
||||
evi[sz_evi].num_colormap_conflicts = n_conflict = 0;
|
||||
for (conflictI = 0; conflictI < n_conflict; conflictI++)
|
||||
temp_conflict[sz_conflict++] = visual[visualI];
|
||||
sz_evi++;
|
||||
}
|
||||
}
|
||||
*conflict_rn = temp_conflict;
|
||||
*n_conflict_rn = sz_conflict;
|
||||
*n_info_rn = sz_evi;
|
||||
return Success;
|
||||
}
|
||||
|
||||
static void sampleFreeVisualInfo(
|
||||
xExtendedVisualInfo *evi,
|
||||
VisualID32 *conflict)
|
||||
{
|
||||
if (evi)
|
||||
xfree(evi);
|
||||
if (conflict)
|
||||
xfree(conflict);
|
||||
}
|
||||
|
||||
EviPrivPtr eviDDXInit(void)
|
||||
{
|
||||
static EviPrivRec eviPriv;
|
||||
eviPriv.getVisualInfo = sampleGetVisualInfo;
|
||||
eviPriv.freeVisualInfo = sampleFreeVisualInfo;
|
||||
return &eviPriv;
|
||||
}
|
||||
|
||||
void eviDDXReset(void)
|
||||
{
|
||||
}
|
Loading…
Reference in New Issue
Block a user