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