Merge remote-tracking branch 'ajax/xserver-next' into master

This commit is contained in:
Eric Anholt 2015-07-17 10:15:01 -07:00
commit 2fcfa53253
74 changed files with 819 additions and 1215 deletions

View File

@ -90,9 +90,10 @@ ProcGEQueryVersion(ClientPtr client)
return Success;
}
int (*ProcGEVector[GENumberRequests]) (ClientPtr) = {
static int (*ProcGEVector[GENumberRequests]) (ClientPtr) = {
/* Version 1.0 */
ProcGEQueryVersion};
ProcGEQueryVersion,
};
/************************************************************/
/* swapped request handlers */
@ -109,9 +110,10 @@ SProcGEQueryVersion(ClientPtr client)
return (*ProcGEVector[stuff->ReqType]) (client);
}
int (*SProcGEVector[GENumberRequests]) (ClientPtr) = {
static int (*SProcGEVector[GENumberRequests]) (ClientPtr) = {
/* Version 1.0 */
SProcGEQueryVersion};
SProcGEQueryVersion
};
/************************************************************/
/* callbacks */

View File

@ -37,7 +37,7 @@
#include "extnsionst.h"
#include <X11/extensions/geproto.h>
extern _X_EXPORT DevPrivateKeyRec GEClientPrivateKeyRec;
extern DevPrivateKeyRec GEClientPrivateKeyRec;
#define GEClientPrivateKey (&GEClientPrivateKeyRec)
@ -48,7 +48,4 @@ typedef struct _GEClientInfo {
#define GEGetClient(pClient) ((GEClientInfoPtr)(dixLookupPrivate(&((pClient)->devPrivates), GEClientPrivateKey)))
extern _X_EXPORT int (*ProcGEVector[ /*GENumRequests */ ]) (ClientPtr);
extern _X_EXPORT int (*SProcGEVector[ /*GENumRequests */ ]) (ClientPtr);
#endif /* _GEINT_H_ */

View File

@ -104,7 +104,7 @@ compRepaintBorder(ClientPtr pClient, void *closure)
RegionNull(&exposed);
RegionSubtract(&exposed, &pWindow->borderClip, &pWindow->winSize);
miPaintWindow(pWindow, &exposed, PW_BORDER);
pWindow->drawable.pScreen->PaintWindow(pWindow, &exposed, PW_BORDER);
RegionUninit(&exposed);
}
return TRUE;

View File

@ -2268,7 +2268,7 @@ if test "x$DMX" = xyes; then
fi
DMX_INCLUDES="$XEXT_INC $RENDER_INC $RECORD_INC"
XDMX_CFLAGS="$DMXMODULES_CFLAGS"
XDMX_LIBS="$FB_LIB $MI_LIB $XEXT_LIB $RENDER_LIB $RECORD_LIB $XI_LIB $XKB_LIB $XKB_STUB_LIB $DRI3_LIB $PRESENT_LIB $MIEXT_SYNC_LIB $MIEXT_SHADOW_LIB $MIEXT_DAMAGE_LIB $COMPOSITE_LIB $DAMAGE_LIB $MAIN_LIB $DIX_LIB $CONFIG_LIB $OS_LIB $FIXES_LIB"
XDMX_LIBS="$FB_LIB $MI_LIB $XEXT_LIB $RANDR_LIB $RENDER_LIB $RECORD_LIB $XI_LIB $XKB_LIB $XKB_STUB_LIB $DRI3_LIB $PRESENT_LIB $MIEXT_SYNC_LIB $MIEXT_SHADOW_LIB $MIEXT_DAMAGE_LIB $COMPOSITE_LIB $DAMAGE_LIB $MAIN_LIB $DIX_LIB $CONFIG_LIB $OS_LIB $FIXES_LIB"
XDMX_SYS_LIBS="$DMXMODULES_LIBS"
AC_SUBST([XDMX_CFLAGS])
AC_SUBST([XDMX_LIBS])

View File

@ -56,7 +56,7 @@ SOFTWARE.
#include "resource.h"
#include "dix.h"
#define InitialTableSize 100
#define InitialTableSize 256
typedef struct _Node {
struct _Node *left, *right;
@ -70,8 +70,6 @@ static NodePtr atomRoot = NULL;
static unsigned long tableLength;
static NodePtr *nodeTable;
void FreeAtom(NodePtr patom);
Atom
MakeAtom(const char *string, unsigned len, Bool makeit)
{
@ -166,7 +164,7 @@ AtomError(void)
FatalError("initializing atoms");
}
void
static void
FreeAtom(NodePtr patom)
{
if (patom->left)

View File

@ -64,6 +64,9 @@ SOFTWARE.
#include "privates.h"
#include "xace.h"
typedef int (*ColorCompareProcPtr) (EntryPtr /*pent */ ,
xrgb * /*prgb */ );
static Pixel FindBestPixel(EntryPtr /*pentFirst */ ,
int /*size */ ,
xrgb * /*prgb */ ,
@ -748,6 +751,173 @@ UpdateColors(ColormapPtr pmap)
free(defs);
}
/* Tries to find a color in pmap that exactly matches the one requested in prgb
* if it can't it allocates one.
* Starts looking at pentFirst + *pPixel, so if you want a specific pixel,
* load *pPixel with that value, otherwise set it to 0
*/
static int
FindColor(ColormapPtr pmap, EntryPtr pentFirst, int size, xrgb * prgb,
Pixel * pPixel, int channel, int client, ColorCompareProcPtr comp)
{
EntryPtr pent;
Bool foundFree;
Pixel pixel, Free = 0;
int npix, count, *nump = NULL;
Pixel **pixp = NULL, *ppix;
xColorItem def;
foundFree = FALSE;
if ((pixel = *pPixel) >= size)
pixel = 0;
/* see if there is a match, and also look for a free entry */
for (pent = pentFirst + pixel, count = size; --count >= 0;) {
if (pent->refcnt > 0) {
if ((*comp) (pent, prgb)) {
if (client >= 0)
pent->refcnt++;
*pPixel = pixel;
switch (channel) {
case REDMAP:
*pPixel <<= pmap->pVisual->offsetRed;
case PSEUDOMAP:
break;
case GREENMAP:
*pPixel <<= pmap->pVisual->offsetGreen;
break;
case BLUEMAP:
*pPixel <<= pmap->pVisual->offsetBlue;
break;
}
goto gotit;
}
}
else if (!foundFree && pent->refcnt == 0) {
Free = pixel;
foundFree = TRUE;
/* If we're initializing the colormap, then we are looking for
* the first free cell we can find, not to minimize the number
* of entries we use. So don't look any further. */
if (pmap->flags & BeingCreated)
break;
}
pixel++;
if (pixel >= size) {
pent = pentFirst;
pixel = 0;
}
else
pent++;
}
/* If we got here, we didn't find a match. If we also didn't find
* a free entry, we're out of luck. Otherwise, we'll usurp a free
* entry and fill it in */
if (!foundFree)
return BadAlloc;
pent = pentFirst + Free;
pent->fShared = FALSE;
pent->refcnt = (client >= 0) ? 1 : AllocTemporary;
switch (channel) {
case PSEUDOMAP:
pent->co.local.red = prgb->red;
pent->co.local.green = prgb->green;
pent->co.local.blue = prgb->blue;
def.red = prgb->red;
def.green = prgb->green;
def.blue = prgb->blue;
def.flags = (DoRed | DoGreen | DoBlue);
if (client >= 0)
pmap->freeRed--;
def.pixel = Free;
break;
case REDMAP:
pent->co.local.red = prgb->red;
def.red = prgb->red;
def.green = pmap->green[0].co.local.green;
def.blue = pmap->blue[0].co.local.blue;
def.flags = DoRed;
if (client >= 0)
pmap->freeRed--;
def.pixel = Free << pmap->pVisual->offsetRed;
break;
case GREENMAP:
pent->co.local.green = prgb->green;
def.red = pmap->red[0].co.local.red;
def.green = prgb->green;
def.blue = pmap->blue[0].co.local.blue;
def.flags = DoGreen;
if (client >= 0)
pmap->freeGreen--;
def.pixel = Free << pmap->pVisual->offsetGreen;
break;
case BLUEMAP:
pent->co.local.blue = prgb->blue;
def.red = pmap->red[0].co.local.red;
def.green = pmap->green[0].co.local.green;
def.blue = prgb->blue;
def.flags = DoBlue;
if (client >= 0)
pmap->freeBlue--;
def.pixel = Free << pmap->pVisual->offsetBlue;
break;
}
(*pmap->pScreen->StoreColors) (pmap, 1, &def);
pixel = Free;
*pPixel = def.pixel;
gotit:
if (pmap->flags & BeingCreated || client == -1)
return Success;
/* Now remember the pixel, for freeing later */
switch (channel) {
case PSEUDOMAP:
case REDMAP:
nump = pmap->numPixelsRed;
pixp = pmap->clientPixelsRed;
break;
case GREENMAP:
nump = pmap->numPixelsGreen;
pixp = pmap->clientPixelsGreen;
break;
case BLUEMAP:
nump = pmap->numPixelsBlue;
pixp = pmap->clientPixelsBlue;
break;
}
npix = nump[client];
ppix = reallocarray(pixp[client], npix + 1, sizeof(Pixel));
if (!ppix) {
pent->refcnt--;
if (!pent->fShared)
switch (channel) {
case PSEUDOMAP:
case REDMAP:
pmap->freeRed++;
break;
case GREENMAP:
pmap->freeGreen++;
break;
case BLUEMAP:
pmap->freeBlue++;
break;
}
return BadAlloc;
}
ppix[npix] = pixel;
pixp[client] = ppix;
nump[client]++;
return Success;
}
/* Get a read-only color from a ColorMap (probably slow for large maps)
* Returns by changing the value in pred, pgreen, pblue and pPix
*/
@ -1137,173 +1307,6 @@ FindColorInRootCmap(ColormapPtr pmap, EntryPtr pentFirst, int size,
}
}
/* Tries to find a color in pmap that exactly matches the one requested in prgb
* if it can't it allocates one.
* Starts looking at pentFirst + *pPixel, so if you want a specific pixel,
* load *pPixel with that value, otherwise set it to 0
*/
int
FindColor(ColormapPtr pmap, EntryPtr pentFirst, int size, xrgb * prgb,
Pixel * pPixel, int channel, int client, ColorCompareProcPtr comp)
{
EntryPtr pent;
Bool foundFree;
Pixel pixel, Free = 0;
int npix, count, *nump = NULL;
Pixel **pixp = NULL, *ppix;
xColorItem def;
foundFree = FALSE;
if ((pixel = *pPixel) >= size)
pixel = 0;
/* see if there is a match, and also look for a free entry */
for (pent = pentFirst + pixel, count = size; --count >= 0;) {
if (pent->refcnt > 0) {
if ((*comp) (pent, prgb)) {
if (client >= 0)
pent->refcnt++;
*pPixel = pixel;
switch (channel) {
case REDMAP:
*pPixel <<= pmap->pVisual->offsetRed;
case PSEUDOMAP:
break;
case GREENMAP:
*pPixel <<= pmap->pVisual->offsetGreen;
break;
case BLUEMAP:
*pPixel <<= pmap->pVisual->offsetBlue;
break;
}
goto gotit;
}
}
else if (!foundFree && pent->refcnt == 0) {
Free = pixel;
foundFree = TRUE;
/* If we're initializing the colormap, then we are looking for
* the first free cell we can find, not to minimize the number
* of entries we use. So don't look any further. */
if (pmap->flags & BeingCreated)
break;
}
pixel++;
if (pixel >= size) {
pent = pentFirst;
pixel = 0;
}
else
pent++;
}
/* If we got here, we didn't find a match. If we also didn't find
* a free entry, we're out of luck. Otherwise, we'll usurp a free
* entry and fill it in */
if (!foundFree)
return BadAlloc;
pent = pentFirst + Free;
pent->fShared = FALSE;
pent->refcnt = (client >= 0) ? 1 : AllocTemporary;
switch (channel) {
case PSEUDOMAP:
pent->co.local.red = prgb->red;
pent->co.local.green = prgb->green;
pent->co.local.blue = prgb->blue;
def.red = prgb->red;
def.green = prgb->green;
def.blue = prgb->blue;
def.flags = (DoRed | DoGreen | DoBlue);
if (client >= 0)
pmap->freeRed--;
def.pixel = Free;
break;
case REDMAP:
pent->co.local.red = prgb->red;
def.red = prgb->red;
def.green = pmap->green[0].co.local.green;
def.blue = pmap->blue[0].co.local.blue;
def.flags = DoRed;
if (client >= 0)
pmap->freeRed--;
def.pixel = Free << pmap->pVisual->offsetRed;
break;
case GREENMAP:
pent->co.local.green = prgb->green;
def.red = pmap->red[0].co.local.red;
def.green = prgb->green;
def.blue = pmap->blue[0].co.local.blue;
def.flags = DoGreen;
if (client >= 0)
pmap->freeGreen--;
def.pixel = Free << pmap->pVisual->offsetGreen;
break;
case BLUEMAP:
pent->co.local.blue = prgb->blue;
def.red = pmap->red[0].co.local.red;
def.green = pmap->green[0].co.local.green;
def.blue = prgb->blue;
def.flags = DoBlue;
if (client >= 0)
pmap->freeBlue--;
def.pixel = Free << pmap->pVisual->offsetBlue;
break;
}
(*pmap->pScreen->StoreColors) (pmap, 1, &def);
pixel = Free;
*pPixel = def.pixel;
gotit:
if (pmap->flags & BeingCreated || client == -1)
return Success;
/* Now remember the pixel, for freeing later */
switch (channel) {
case PSEUDOMAP:
case REDMAP:
nump = pmap->numPixelsRed;
pixp = pmap->clientPixelsRed;
break;
case GREENMAP:
nump = pmap->numPixelsGreen;
pixp = pmap->clientPixelsGreen;
break;
case BLUEMAP:
nump = pmap->numPixelsBlue;
pixp = pmap->clientPixelsBlue;
break;
}
npix = nump[client];
ppix = reallocarray(pixp[client], npix + 1, sizeof(Pixel));
if (!ppix) {
pent->refcnt--;
if (!pent->fShared)
switch (channel) {
case PSEUDOMAP:
case REDMAP:
pmap->freeRed++;
break;
case GREENMAP:
pmap->freeGreen++;
break;
case BLUEMAP:
pmap->freeBlue++;
break;
}
return BadAlloc;
}
ppix[npix] = pixel;
pixp[client] = ppix;
nump[client]++;
return Success;
}
/* Comparison functions -- passed to FindColor to determine if an
* entry is already the color we're looking for or not */
static int

View File

@ -108,6 +108,7 @@ int ProcInitialConnection();
#include "windowstr.h"
#include <X11/fonts/fontstruct.h>
#include <X11/fonts/fontutil.h>
#include "dixfontstr.h"
#include "gcstruct.h"
#include "selection.h"

View File

@ -156,7 +156,7 @@ SetDefaultFont(const char *defaultfontname)
* init_fpe() and free_fpe(), there shouldn't be any problem in using
* freed data.
*/
void
static void
QueueFontWakeup(FontPathElementPtr fpe)
{
int i;
@ -179,7 +179,7 @@ QueueFontWakeup(FontPathElementPtr fpe)
num_slept_fpes++;
}
void
static void
RemoveFontWakeup(FontPathElementPtr fpe)
{
int i, j;
@ -195,7 +195,7 @@ RemoveFontWakeup(FontPathElementPtr fpe)
}
}
void
static void
FontWakeup(void *data, int count, void *LastSelectMask)
{
int i;
@ -849,7 +849,7 @@ ListFonts(ClientPtr client, unsigned char *pattern, unsigned length,
return Success;
}
int
static int
doListFontsWithInfo(ClientPtr client, LFWIclosurePtr c)
{
FontPathElementPtr fpe;
@ -1105,7 +1105,7 @@ static ChangeGCVal clearGC[] = { {.ptr = NullPixmap} };
#define clearGCmask (GCClipMask)
int
static int
doPolyText(ClientPtr client, PTclosurePtr c)
{
FontPtr pFont = c->pGC->font, oldpFont;
@ -1389,7 +1389,7 @@ PolyText(ClientPtr client, DrawablePtr pDraw, GC * pGC, unsigned char *pElt,
#undef TextEltHeader
#undef FontShiftSize
int
static int
doImageText(ClientPtr client, ITclosurePtr c)
{
int err = Success, lgerr; /* err is in X error, not font error, space */

View File

@ -212,7 +212,7 @@ SetFocusOut(DeviceIntPtr dev)
* @return The window that is the first ancestor of both 'a' and 'b', or the
* NullWindow if they do not have a common ancestor.
*/
WindowPtr
static WindowPtr
CommonAncestor(WindowPtr a, WindowPtr b)
{
for (b = b->parent; b; b = b->parent)

View File

@ -41,8 +41,6 @@ extern void EnterLeaveEvent(DeviceIntPtr mouse,
int type,
int mode, int detail, WindowPtr pWin, Window child);
extern WindowPtr CommonAncestor(WindowPtr a, WindowPtr b);
extern void CoreEnterLeaveEvent(DeviceIntPtr mouse,
int type,
int mode,

View File

@ -95,6 +95,8 @@ Equipment Corporation.
#include "cursorstr.h"
#include "selection.h"
#include <X11/fonts/font.h>
#include <X11/fonts/fontstruct.h>
#include <X11/fonts/fontutil.h>
#include "opaque.h"
#include "servermd.h"
#include "hotplug.h"

View File

@ -380,10 +380,7 @@ SetWindowToDefaults(WindowPtr pWin)
pWin->forcedBS = FALSE;
pWin->redirectDraw = RedirectDrawNone;
pWin->forcedBG = FALSE;
#ifdef ROOTLESS
pWin->rootlessUnhittable = FALSE;
#endif
pWin->unhittable = FALSE;
#ifdef COMPOSITE
pWin->damagedDescendants = FALSE;
@ -1470,7 +1467,7 @@ ChangeWindowAttributes(WindowPtr pWin, Mask vmask, XID *vlist, ClientPtr client)
RegionNull(&exposed);
RegionSubtract(&exposed, &pWin->borderClip, &pWin->winSize);
miPaintWindow(pWin, &exposed, PW_BORDER);
pWin->drawable.pScreen->PaintWindow(pWin, &exposed, PW_BORDER);
RegionUninit(&exposed);
}
return error;
@ -3037,7 +3034,7 @@ dixSaveScreens(ClientPtr client, int on, int mode)
/* make it look like screen saver is off, so that
* NotClippedByChildren will compute a clip list
* for the root window, so miPaintWindow works
* for the root window, so PaintWindow works
*/
screenIsSaved = SCREEN_SAVER_OFF;
(*pWin->drawable.pScreen->MoveWindow) (pWin,

View File

@ -26,9 +26,8 @@
#include "dri3_priv.h"
int dri3_request;
static int dri3_request;
DevPrivateKeyRec dri3_screen_private_key;
DevPrivateKeyRec dri3_window_private_key;
static int dri3_screen_generation;

View File

@ -1,163 +0,0 @@
/*
* Copyright © 2013 Keith Packard
*
* Permission to use, copy, modify, distribute, and sell this software and its
* documentation for any purpose is hereby granted without fee, 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 the copyright holders not be used in advertising or
* publicity pertaining to distribution of the software without specific,
* written prior permission. The copyright holders make no representations
* about the suitability of this software for any purpose. It is provided "as
* is" without express or implied warranty.
*
* THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
* INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
* EVENT SHALL THE COPYRIGHT HOLDERS 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_XORG_CONFIG_H
#include <xorg-config.h>
#endif
#include "dri3_priv.h"
RESTYPE dri3_event_type;
static int
dri3_free_event(void *data, XID id)
{
dri3_event_ptr dri3_event = (dri3_event_ptr) data;
dri3_window_priv_ptr window_priv = dri3_window_priv(dri3_event->window);
dri3_event_ptr *previous, current;
for (previous = &window_priv->events; (current = *previous); previous = &current->next) {
if (current == dri3_event) {
*previous = dri3_event->next;
break;
}
}
free((void *) dri3_event);
return 1;
}
void
dri3_free_events(WindowPtr window)
{
dri3_window_priv_ptr window_priv = dri3_window_priv(window);
dri3_event_ptr event;
if (!window_priv)
return;
while ((event = window_priv->events))
FreeResource(event->id, RT_NONE);
}
static void
dri3_event_swap(xGenericEvent *from, xGenericEvent *to)
{
*to = *from;
swaps(&to->sequenceNumber);
swapl(&to->length);
swaps(&to->evtype);
switch (from->evtype) {
case DRI3_ConfigureNotify: {
xDRI3ConfigureNotify *c = (xDRI3ConfigureNotify *) to;
swapl(&c->eid);
swapl(&c->window);
swaps(&c->x);
swaps(&c->y);
swaps(&c->width);
swaps(&c->height);
swaps(&c->off_x);
swaps(&c->off_y);
swaps(&c->pixmap_width);
swaps(&c->pixmap_height);
swapl(&c->pixmap_flags);
break;
}
}
}
void
dri3_send_config_notify(WindowPtr window, int x, int y, int w, int h, int bw, WindowPtr sibling)
{
dri3_window_priv_ptr window_priv = dri3_window_priv(window);
if (window_priv) {
xDRI3ConfigureNotify cn = {
.type = GenericEvent,
.extension = dri3_request,
.length = (sizeof(xDRI3ConfigureNotify) - 32) >> 2,
.evtype = DRI3_ConfigureNotify,
.eid = 0,
.window = window->drawable.id,
.x = x,
.y = y,
.width = w,
.height = h,
.off_x = 0,
.off_y = 0,
.pixmap_width = w,
.pixmap_height = h,
.pixmap_flags = 0
};
dri3_event_ptr event;
dri3_screen_priv_ptr screen_priv = dri3_screen_priv(window->drawable.pScreen);
if (screen_priv->info && screen_priv->info->driver_config)
screen_priv->info->driver_config(window, &cn);
for (event = window_priv->events; event; event = event->next) {
if (event->mask & (1 << DRI3ConfigureNotify)) {
cn.eid = event->id;
WriteEventsToClient(event->client, 1, (xEvent *) &cn);
}
}
}
}
int
dri3_select_input(ClientPtr client, XID eid, WindowPtr window, CARD32 mask)
{
dri3_window_priv_ptr window_priv = dri3_window_priv(window);
dri3_event_ptr event;
if (!window_priv)
return BadAlloc;
event = calloc (1, sizeof (dri3_event_rec));
if (!event)
return BadAlloc;
event->client = client;
event->window = window;
event->id = eid;
event->mask = mask;
event->next = window_priv->events;
window_priv->events = event;
if (!AddResource(event->id, dri3_event_type, (void *) event))
return BadAlloc;
return Success;
}
Bool
dri3_event_init(void)
{
dri3_event_type = CreateNewResourceType(dri3_free_event, "DRI3Event");
if (!dri3_event_type)
return FALSE;
GERegisterExtension(dri3_request, dri3_event_swap);
return TRUE;
}

View File

@ -32,8 +32,6 @@
#include <randrstr.h>
#include "dri3.h"
extern int dri3_request;
extern DevPrivateKeyRec dri3_screen_private_key;
typedef struct dri3_screen_priv {

View File

@ -472,13 +472,8 @@ typedef struct {
#define fbGetWindowPixmap(pWin) ((PixmapPtr)\
dixLookupPrivate(&((WindowPtr)(pWin))->devPrivates, fbGetWinPrivateKey(pWin)))
#ifdef ROOTLESS
#define __fbPixDrawableX(pPix) ((pPix)->drawable.x)
#define __fbPixDrawableY(pPix) ((pPix)->drawable.y)
#else
#define __fbPixDrawableX(pPix) 0
#define __fbPixDrawableY(pPix) 0
#endif
#ifdef COMPOSITE
#define __fbPixOffXWin(pPix) (__fbPixDrawableX(pPix) - (pPix)->screen_x)

View File

@ -87,6 +87,9 @@ __glXDisp_CreateContextAttribsARB(__GLXclientState * cl, GLbyte * pc)
int minor_version = 0;
uint32_t flags = 0;
uint32_t render_type = GLX_RGBA_TYPE;
#ifdef GLX_CONTEXT_RELEASE_BEHAVIOR_ARB
uint32_t flush = GLX_CONTEXT_RELEASE_BEHAVIOR_FLUSH_ARB;
#endif
__GLXcontext *ctx = NULL;
__GLXcontext *shareCtx = NULL;
__GLXscreen *glxScreen;
@ -194,6 +197,15 @@ __glXDisp_CreateContextAttribsARB(__GLXclientState * cl, GLbyte * pc)
break;
#ifdef GLX_CONTEXT_RELEASE_BEHAVIOR_ARB
case GLX_CONTEXT_RELEASE_BEHAVIOR_ARB:
flush = attribs[2 * i + 1];
if (flush != GLX_CONTEXT_RELEASE_BEHAVIOR_NONE_ARB
&& flush != GLX_CONTEXT_RELEASE_BEHAVIOR_FLUSH_ARB)
return BadValue;
break;
#endif
default:
return BadValue;
}
@ -333,6 +345,9 @@ __glXDisp_CreateContextAttribsARB(__GLXclientState * cl, GLbyte * pc)
ctx->drawPriv = NULL;
ctx->readPriv = NULL;
ctx->resetNotificationStrategy = reset;
#ifdef GLX_CONTEXT_RELEASE_BEHAVIOR_ARB
ctx->releaseBehavior = flush;
#endif
/* Add the new context to the various global tables of GLX contexts.
*/

View File

@ -72,6 +72,7 @@ struct extension_info {
static const struct extension_info known_glx_extensions[] = {
/* GLX_ARB_get_proc_address is implemented on the client. */
/* *INDENT-OFF* */
{ GLX(ARB_context_flush_control), VER(0,0), N, },
{ GLX(ARB_create_context), VER(0,0), N, },
{ GLX(ARB_create_context_profile), VER(0,0), N, },
{ GLX(ARB_create_context_robustness), VER(0,0), N, },

View File

@ -36,7 +36,8 @@
enum {
/* GLX_ARB_get_proc_address is implemented on the client. */
ARB_create_context_bit = 0,
ARB_context_flush_control_bit = 0,
ARB_create_context_bit,
ARB_create_context_profile_bit,
ARB_create_context_robustness_bit,
ARB_fbconfig_float_bit,

View File

@ -334,6 +334,19 @@ DoCreateContext(__GLXclientState * cl, GLXContextID gcId,
*/
glxc->resetNotificationStrategy = GLX_NO_RESET_NOTIFICATION_ARB;
#ifdef GLX_CONTEXT_RELEASE_BEHAVIOR_ARB
/* The GLX_ARB_context_flush_control spec says:
*
* "The default value [for GLX_CONTEXT_RELEASE_BEHAVIOR] is
* CONTEXT_RELEASE_BEHAVIOR_FLUSH, and may in some cases be changed
* using platform-specific context creation extensions."
*
* Without using glXCreateContextAttribsARB, there is no way to specify a
* non-default release behavior.
*/
glxc->releaseBehavior = GLX_CONTEXT_RELEASE_BEHAVIOR_FLUSH_ARB;
#endif
/* Add the new context to the various global tables of GLX contexts.
*/
if (!__glXAddContext(glxc)) {
@ -626,7 +639,12 @@ DoMakeCurrent(__GLXclientState * cl,
/*
** Flush the previous context if needed.
*/
if (prevglxc->hasUnflushedCommands) {
Bool need_flush = GL_TRUE;
#ifdef GLX_CONTEXT_RELEASE_BEHAVIOR_ARB
if (prevglxc->releaseBehavior == GLX_CONTEXT_RELEASE_BEHAVIOR_NONE_ARB)
need_flush = GL_FALSE;
#endif
if (prevglxc->hasUnflushedCommands && need_flush) {
if (__glXForceCurrent(cl, tag, (int *) &error)) {
glFlush();
prevglxc->hasUnflushedCommands = GL_FALSE;

View File

@ -108,6 +108,11 @@ struct __GLXcontext {
*/
GLenum resetNotificationStrategy;
/**
* Context release behavior
*/
GLenum releaseBehavior;
/*
** Buffers for feedback and selection.
*/

View File

@ -921,6 +921,13 @@ initializeExtensions(__GLXDRIscreen * screen)
"AIGLX: enabled GLX_ARB_create_context_robustness\n");
}
#ifdef __DRI2_FLUSH_CONTROL
if (strcmp(extensions[i]->name, __DRI2_FLUSH_CONTROL) == 0) {
__glXEnableExtension(screen->glx_enable_bits,
"GLX_ARB_context_flush_control\n");
}
#endif
/* Ignore unknown extensions */
}
}

View File

@ -71,6 +71,8 @@ struct __GLXDRIscreen {
const __DRIcopySubBufferExtension *copySubBuffer;
const __DRItexBufferExtension *texBuffer;
const __DRIconfig **driConfigs;
unsigned char glx_enable_bits[__GLX_EXT_BYTES];
};
struct __GLXDRIcontext {
@ -394,13 +396,28 @@ initializeExtensions(__GLXDRIscreen * screen)
const __DRIextension **extensions;
int i;
if (screen->swrast->base.version >= 3) {
__glXEnableExtension(screen->glx_enable_bits,
"GLX_ARB_create_context");
__glXEnableExtension(screen->glx_enable_bits,
"GLX_ARB_create_context_profile");
__glXEnableExtension(screen->glx_enable_bits,
"GLX_EXT_create_context_es2_profile");
}
/* these are harmless to enable unconditionally */
__glXEnableExtension(screen->glx_enable_bits, "GLX_EXT_framebuffer_sRGB");
__glXEnableExtension(screen->glx_enable_bits, "GLX_ARB_fbconfig_float");
__glXEnableExtension(screen->glx_enable_bits, "GLX_SGI_make_current_read");
extensions = screen->core->getExtensions(screen->driScreen);
for (i = 0; extensions[i]; i++) {
if (strcmp(extensions[i]->name, __DRI_COPY_SUB_BUFFER) == 0) {
screen->copySubBuffer =
(const __DRIcopySubBufferExtension *) extensions[i];
/* GLX_MESA_copy_sub_buffer is always enabled. */
__glXEnableExtension(screen->glx_enable_bits,
"GLX_MESA_copy_sub_buffer");
}
if (strcmp(extensions[i]->name, __DRI_TEX_BUFFER) == 0) {
@ -408,7 +425,13 @@ initializeExtensions(__GLXDRIscreen * screen)
/* GLX_EXT_texture_from_pixmap is always enabled. */
}
/* Ignore unknown extensions */
#ifdef __DRI2_FLUSH_CONTROL
if (strcmp(extensions[i]->name, __DRI2_FLUSH_CONTROL) == 0) {
__glXEnableExtension(screen->glx_enable_bits,
"GLX_ARB_context_flush_control\n");
}
#endif
}
}
@ -420,6 +443,7 @@ __glXDRIscreenProbe(ScreenPtr pScreen)
{
const char *driverName = "swrast";
__GLXDRIscreen *screen;
size_t buffer_size;
screen = calloc(1, sizeof *screen);
if (screen == NULL)
@ -431,6 +455,8 @@ __glXDRIscreenProbe(ScreenPtr pScreen)
screen->base.swapInterval = NULL;
screen->base.pScreen = pScreen;
__glXInitExtensionEnableBits(screen->glx_enable_bits);
screen->driver = glxProbeDriver(driverName,
(void **) &screen->core,
__DRI_CORE, 1,
@ -459,6 +485,19 @@ __glXDRIscreenProbe(ScreenPtr pScreen)
__glXScreenInit(&screen->base, pScreen);
/* The first call simply determines the length of the extension string.
* This allows us to allocate some memory to hold the extension string,
* but it requires that we call __glXGetExtensionString a second time.
*/
buffer_size = __glXGetExtensionString(screen->glx_enable_bits, NULL);
if (buffer_size > 0) {
free(screen->base.GLXextensions);
screen->base.GLXextensions = xnfalloc(buffer_size);
(void) __glXGetExtensionString(screen->glx_enable_bits,
screen->base.GLXextensions);
}
screen->base.GLXmajor = 1;
screen->base.GLXminor = 4;

View File

@ -21,7 +21,6 @@ XVFB_LIBS = \
Xvfb_LDADD = $(XVFB_LIBS) $(XVFB_SYS_LIBS) $(XSERVER_SYS_LIBS)
Xvfb_DEPENDENCIES = $(XVFB_LIBS)
Xvfb_LDFLAGS = $(LD_EXPORT_SYMBOLS_FLAG)
relink:
$(AM_V_at)rm -f Xvfb$(EXEEXT) && $(MAKE) Xvfb$(EXEEXT)

View File

@ -16,7 +16,6 @@ endif
if XF86VIDMODE
XF86VMODESOURCES = xf86vmode.c
XF86VMODE_SDK = vidmodeproc.h
endif
if DGA

View File

@ -54,57 +54,15 @@ typedef struct {
/* DDX interface */
extern _X_EXPORT int
DGASetMode(int Index, int num, XDGAModePtr mode, PixmapPtr *pPix);
extern Bool DGAScreenAvailable(ScreenPtr pScreen);
extern Bool DGAActive(int Index);
extern void DGAShutdown(void);
extern _X_EXPORT void
DGASetInputMode(int Index, Bool keyboard, Bool mouse);
extern _X_EXPORT void
DGASelectInput(int Index, ClientPtr client, long mask);
extern _X_EXPORT Bool DGAAvailable(int Index);
extern _X_EXPORT Bool DGAScreenAvailable(ScreenPtr pScreen);
extern _X_EXPORT Bool DGAActive(int Index);
extern _X_EXPORT void DGAShutdown(void);
extern _X_EXPORT void DGAInstallCmap(ColormapPtr cmap);
extern _X_EXPORT int DGAGetViewportStatus(int Index);
extern _X_EXPORT int DGASync(int Index);
extern _X_EXPORT int
DGAFillRect(int Index, int x, int y, int w, int h, unsigned long color);
extern _X_EXPORT int
DGABlitRect(int Index, int srcx, int srcy, int w, int h, int dstx, int dsty);
extern _X_EXPORT int
DGABlitTransRect(int Index,
int srcx, int srcy,
int w, int h, int dstx, int dsty, unsigned long color);
extern _X_EXPORT int
DGASetViewport(int Index, int x, int y, int mode);
extern _X_EXPORT int DGAGetModes(int Index);
extern _X_EXPORT int DGAGetOldDGAMode(int Index);
extern _X_EXPORT int DGAGetModeInfo(int Index, XDGAModePtr mode, int num);
extern _X_EXPORT Bool DGAVTSwitch(void);
extern _X_EXPORT Bool DGAStealButtonEvent(DeviceIntPtr dev, int Index,
int button, int is_down);
extern _X_EXPORT Bool DGAStealMotionEvent(DeviceIntPtr dev, int Index, int dx,
int dy);
extern _X_EXPORT Bool DGAStealKeyEvent(DeviceIntPtr dev, int Index,
int key_code, int is_down);
extern _X_EXPORT Bool DGAOpenFramebuffer(int Index, char **name,
unsigned char **mem, int *size,
int *offset, int *flags);
extern _X_EXPORT void DGACloseFramebuffer(int Index);
extern _X_EXPORT Bool DGAChangePixmapMode(int Index, int *x, int *y, int mode);
extern _X_EXPORT int DGACreateColormap(int Index, ClientPtr client, int id,
int mode, int alloc);
extern Bool DGAVTSwitch(void);
extern Bool DGAStealButtonEvent(DeviceIntPtr dev, int Index,
int button, int is_down);
extern Bool DGAStealMotionEvent(DeviceIntPtr dev, int Index, int dx, int dy);
extern Bool DGAStealKeyEvent(DeviceIntPtr dev, int Index,
int key_code, int is_down);
#endif /* __DGAPROC_H */

View File

@ -41,44 +41,43 @@ typedef union {
extern Bool VidModeExtensionInit(ScreenPtr pScreen);
extern _X_EXPORT Bool VidModeAvailable(int scrnIndex);
extern _X_EXPORT Bool VidModeGetCurrentModeline(int scrnIndex, void **mode,
int *dotClock);
extern _X_EXPORT Bool VidModeGetFirstModeline(int scrnIndex, void **mode,
int *dotClock);
extern _X_EXPORT Bool VidModeGetNextModeline(int scrnIndex, void **mode,
int *dotClock);
extern _X_EXPORT Bool VidModeDeleteModeline(int scrnIndex, void *mode);
extern _X_EXPORT Bool VidModeZoomViewport(int scrnIndex, int zoom);
extern _X_EXPORT Bool VidModeGetViewPort(int scrnIndex, int *x, int *y);
extern _X_EXPORT Bool VidModeSetViewPort(int scrnIndex, int x, int y);
extern _X_EXPORT Bool VidModeSwitchMode(int scrnIndex, void *mode);
extern _X_EXPORT Bool VidModeLockZoom(int scrnIndex, Bool lock);
extern _X_EXPORT Bool VidModeGetMonitor(int scrnIndex, void **monitor);
extern _X_EXPORT int VidModeGetNumOfClocks(int scrnIndex, Bool *progClock);
extern _X_EXPORT Bool VidModeGetClocks(int scrnIndex, int *Clocks);
extern _X_EXPORT ModeStatus VidModeCheckModeForMonitor(int scrnIndex,
void *mode);
extern _X_EXPORT ModeStatus VidModeCheckModeForDriver(int scrnIndex,
void *mode);
extern _X_EXPORT void VidModeSetCrtcForMode(int scrnIndex, void *mode);
extern _X_EXPORT Bool VidModeAddModeline(int scrnIndex, void *mode);
extern _X_EXPORT int VidModeGetDotClock(int scrnIndex, int Clock);
extern _X_EXPORT int VidModeGetNumOfModes(int scrnIndex);
extern _X_EXPORT Bool VidModeSetGamma(int scrnIndex, float red, float green,
float blue);
extern _X_EXPORT Bool VidModeGetGamma(int scrnIndex, float *red, float *green,
float *blue);
extern _X_EXPORT void *VidModeCreateMode(void);
extern _X_EXPORT void VidModeCopyMode(void *modefrom, void *modeto);
extern _X_EXPORT int VidModeGetModeValue(void *mode, int valtyp);
extern _X_EXPORT void VidModeSetModeValue(void *mode, int valtyp, int val);
extern _X_EXPORT vidMonitorValue VidModeGetMonitorValue(void *monitor,
int valtyp, int indx);
extern _X_EXPORT Bool VidModeSetGammaRamp(int, int, CARD16 *, CARD16 *,
CARD16 *);
extern _X_EXPORT Bool VidModeGetGammaRamp(int, int, CARD16 *, CARD16 *,
CARD16 *);
extern _X_EXPORT int VidModeGetGammaRampSize(int scrnIndex);
extern Bool VidModeGetCurrentModeline(int scrnIndex, void **mode,
int *dotClock);
extern Bool VidModeGetFirstModeline(int scrnIndex, void **mode,
int *dotClock);
extern Bool VidModeGetNextModeline(int scrnIndex, void **mode,
int *dotClock);
extern Bool VidModeDeleteModeline(int scrnIndex, void *mode);
extern Bool VidModeZoomViewport(int scrnIndex, int zoom);
extern Bool VidModeGetViewPort(int scrnIndex, int *x, int *y);
extern Bool VidModeSetViewPort(int scrnIndex, int x, int y);
extern Bool VidModeSwitchMode(int scrnIndex, void *mode);
extern Bool VidModeLockZoom(int scrnIndex, Bool lock);
extern Bool VidModeGetMonitor(int scrnIndex, void **monitor);
extern int VidModeGetNumOfClocks(int scrnIndex, Bool *progClock);
extern Bool VidModeGetClocks(int scrnIndex, int *Clocks);
extern ModeStatus VidModeCheckModeForMonitor(int scrnIndex,
void *mode);
extern ModeStatus VidModeCheckModeForDriver(int scrnIndex,
void *mode);
extern void VidModeSetCrtcForMode(int scrnIndex, void *mode);
extern Bool VidModeAddModeline(int scrnIndex, void *mode);
extern int VidModeGetDotClock(int scrnIndex, int Clock);
extern int VidModeGetNumOfModes(int scrnIndex);
extern Bool VidModeSetGamma(int scrnIndex, float red, float green,
float blue);
extern Bool VidModeGetGamma(int scrnIndex, float *red, float *green,
float *blue);
extern void *VidModeCreateMode(void);
extern void VidModeCopyMode(void *modefrom, void *modeto);
extern int VidModeGetModeValue(void *mode, int valtyp);
extern void VidModeSetModeValue(void *mode, int valtyp, int val);
extern vidMonitorValue VidModeGetMonitorValue(void *monitor,
int valtyp, int indx);
extern Bool VidModeSetGammaRamp(int, int, CARD16 *, CARD16 *,
CARD16 *);
extern Bool VidModeGetGammaRamp(int, int, CARD16 *, CARD16 *,
CARD16 *);
extern int VidModeGetGammaRampSize(int scrnIndex);
#endif

View File

@ -368,22 +368,11 @@ xf86GetBppFromDepth(ScrnInfoPtr pScrn, int depth);
/* xf86Mode.c */
extern _X_EXPORT int
xf86GetNearestClock(ScrnInfoPtr scrp, int freq, Bool allowDiv2,
int DivFactor, int MulFactor, int *divider);
extern _X_EXPORT const char *
xf86ModeStatusToString(ModeStatus status);
extern _X_EXPORT ModeStatus
xf86LookupMode(ScrnInfoPtr scrp, DisplayModePtr modep,
ClockRangePtr clockRanges, LookupModeFlags strategy);
extern _X_EXPORT ModeStatus
xf86CheckModeForMonitor(DisplayModePtr mode, MonPtr monitor);
extern _X_EXPORT ModeStatus
xf86InitialCheckModeForDriver(ScrnInfoPtr scrp, DisplayModePtr mode,
ClockRangePtr clockRanges,
LookupModeFlags strategy,
int maxPitch, int virtualX, int virtualY);
extern _X_EXPORT ModeStatus
xf86CheckModeForDriver(ScrnInfoPtr scrp, DisplayModePtr mode, int flags);
extern _X_EXPORT int
xf86ValidateModes(ScrnInfoPtr scrp, DisplayModePtr availModes,

View File

@ -471,7 +471,7 @@ xf86SetDGAMode(ScrnInfoPtr pScrn, int num, DGADevicePtr devRet)
/*********** exported ones ***************/
void
static void
DGASetInputMode(int index, Bool keyboard, Bool mouse)
{
ScreenPtr pScreen = screenInfo.screens[index];
@ -488,7 +488,7 @@ DGASetInputMode(int index, Bool keyboard, Bool mouse)
}
}
Bool
static Bool
DGAChangePixmapMode(int index, int *x, int *y, int mode)
{
DGAScreenPtr pScreenPriv;
@ -560,7 +560,7 @@ DGAScreenAvailable(ScreenPtr pScreen)
return FALSE;
}
Bool
static Bool
DGAAvailable(int index)
{
ScreenPtr pScreen;
@ -606,7 +606,7 @@ DGAShutdown(void)
/* Called by the extension to initialize a mode */
int
static int
DGASetMode(int index, int num, XDGAModePtr mode, PixmapPtr *pPix)
{
ScrnInfoPtr pScrn = xf86Screens[index];
@ -626,7 +626,7 @@ DGASetMode(int index, int num, XDGAModePtr mode, PixmapPtr *pPix)
/* Called from the extension to let the DDX know which events are requested */
void
static void
DGASelectInput(int index, ClientPtr client, long mask)
{
DGAScreenPtr pScreenPriv = DGA_GET_SCREEN_PRIV(screenInfo.screens[index]);
@ -636,7 +636,7 @@ DGASelectInput(int index, ClientPtr client, long mask)
pScreenPriv->input = mask;
}
int
static int
DGAGetViewportStatus(int index)
{
DGAScreenPtr pScreenPriv = DGA_GET_SCREEN_PRIV(screenInfo.screens[index]);
@ -649,7 +649,7 @@ DGAGetViewportStatus(int index)
return (*pScreenPriv->funcs->GetViewport) (pScreenPriv->pScrn);
}
int
static int
DGASetViewport(int index, int x, int y, int mode)
{
DGAScreenPtr pScreenPriv = DGA_GET_SCREEN_PRIV(screenInfo.screens[index]);
@ -675,7 +675,7 @@ BitsClear(CARD32 data)
return bits;
}
int
static int
DGACreateColormap(int index, ClientPtr client, int id, int mode, int alloc)
{
ScreenPtr pScreen = screenInfo.screens[index];
@ -744,7 +744,7 @@ DGACreateColormap(int index, ClientPtr client, int id, int mode, int alloc)
/* Called by the extension to install a colormap on DGA active screens */
void
static void
DGAInstallCmap(ColormapPtr cmap)
{
ScreenPtr pScreen = cmap->pScreen;
@ -760,7 +760,7 @@ DGAInstallCmap(ColormapPtr cmap)
(*pScreen->InstallColormap) (cmap);
}
int
static int
DGASync(int index)
{
DGAScreenPtr pScreenPriv = DGA_GET_SCREEN_PRIV(screenInfo.screens[index]);
@ -773,7 +773,7 @@ DGASync(int index)
return Success;
}
int
static int
DGAFillRect(int index, int x, int y, int w, int h, unsigned long color)
{
DGAScreenPtr pScreenPriv = DGA_GET_SCREEN_PRIV(screenInfo.screens[index]);
@ -789,7 +789,7 @@ DGAFillRect(int index, int x, int y, int w, int h, unsigned long color)
return BadMatch;
}
int
static int
DGABlitRect(int index, int srcx, int srcy, int w, int h, int dstx, int dsty)
{
DGAScreenPtr pScreenPriv = DGA_GET_SCREEN_PRIV(screenInfo.screens[index]);
@ -806,7 +806,7 @@ DGABlitRect(int index, int srcx, int srcy, int w, int h, int dstx, int dsty)
return BadMatch;
}
int
static int
DGABlitTransRect(int index,
int srcx, int srcy,
int w, int h, int dstx, int dsty, unsigned long color)
@ -826,7 +826,7 @@ DGABlitTransRect(int index,
return BadMatch;
}
int
static int
DGAGetModes(int index)
{
DGAScreenPtr pScreenPriv = DGA_GET_SCREEN_PRIV(screenInfo.screens[index]);
@ -836,7 +836,7 @@ DGAGetModes(int index)
return pScreenPriv->numModes;
}
int
static int
DGAGetModeInfo(int index, XDGAModePtr mode, int num)
{
DGAScreenPtr pScreenPriv = DGA_GET_SCREEN_PRIV(screenInfo.screens[index]);
@ -1126,7 +1126,7 @@ DGAProcessPointerEvent(ScreenPtr pScreen, DGAEvent * event, DeviceIntPtr mouse)
}
}
Bool
static Bool
DGAOpenFramebuffer(int index,
char **name,
unsigned char **mem, int *size, int *offset, int *flags)
@ -1140,7 +1140,7 @@ DGAOpenFramebuffer(int index,
flags);
}
void
static void
DGACloseFramebuffer(int index)
{
DGAScreenPtr pScreenPriv = DGA_GET_SCREEN_PRIV(screenInfo.screens[index]);
@ -1152,7 +1152,7 @@ DGACloseFramebuffer(int index)
/* For DGA 1.0 backwards compatibility only */
int
static int
DGAGetOldDGAMode(int index)
{
DGAScreenPtr pScreenPriv = DGA_GET_SCREEN_PRIV(screenInfo.screens[index]);

View File

@ -112,11 +112,10 @@ printModeRejectMessage(int index, DisplayModePtr p, int status)
}
/*
* xf86GetNearestClock --
* Find closest clock to given frequency (in kHz). This assumes the
* number of clocks is greater than zero.
* Find closest clock to given frequency (in kHz). This assumes the
* number of clocks is greater than zero.
*/
int
static int
xf86GetNearestClock(ScrnInfoPtr scrp, int freq, Bool allowDiv2,
int DivFactor, int MulFactor, int *divider)
{
@ -451,7 +450,7 @@ xf86HandleBuiltinMode(ScrnInfoPtr scrp,
* reason.
*/
ModeStatus
static ModeStatus
xf86LookupMode(ScrnInfoPtr scrp, DisplayModePtr modep,
ClockRangePtr clockRanges, LookupModeFlags strategy)
{
@ -845,7 +844,7 @@ xf86CheckModeSize(ScrnInfoPtr scrp, int w, int x, int y)
* maxVValue maximum vertical timing value
*/
ModeStatus
static ModeStatus
xf86InitialCheckModeForDriver(ScrnInfoPtr scrp, DisplayModePtr mode,
ClockRangePtr clockRanges,
LookupModeFlags strategy,

View File

@ -111,7 +111,7 @@ VidModeClose(ScreenPtr pScreen)
return pScreen->CloseScreen(pScreen);
}
Bool
static Bool
VidModeAvailable(int scrnIndex)
{
ScrnInfoPtr pScrn;

View File

@ -6955,28 +6955,6 @@ and needs to do its own mode validation, it might be able to make
use of some of these secondary mode helper functions.
</para>
<blockquote><para>
<programlisting>
int xf86GetNearestClock(ScrnInfoPtr scrp, int freq, Bool allowDiv2,
int *divider);
</programlisting>
<blockquote><para>
This function returns the index of the closest clock to the
frequency <parameter>freq</parameter> given (in kHz). It assumes that
the number of clocks is greater than zero. It requires that the
<structfield>numClocks</structfield> and <structfield>clock</structfield> fields of the
<structname>ScrnInfoRec</structname> are initialised. The
<structfield>allowDiv2</structfield> field determines if the clocks can be
halved. The <parameter>*divider</parameter> return value indicates
whether clock division is used when determining the clock returned.
</para>
<para>
This function is only for non-programmable clocks.
</para>
</blockquote></para></blockquote>
<blockquote><para>
<programlisting>
const char *xf86ModeStatusToString(ModeStatus status);
@ -6988,59 +6966,6 @@ use of some of these secondary mode helper functions.
</blockquote></para></blockquote>
<blockquote><para>
<programlisting>
ModeStatus xf86LookupMode(ScrnInfoPtr scrp, DisplayModePtr modep,
ClockRangePtr clockRanges, LookupModeFlags strategy);
</programlisting>
<blockquote><para>
This function takes a pointer to a mode with the name filled in,
and looks for a mode in the <structfield>modePool</structfield> list which
matches. The parameters of the matching mode are filled in to
<parameter>*modep</parameter>. The <parameter>clockRanges</parameter> and
<parameter>strategy</parameter> parameters are as for the
<function>xf86ValidateModes()</function> function above.
</para>
<para>
This function requires the <structfield>modePool</structfield>,
<structfield>clock[]</structfield>, <structfield>numClocks</structfield> and
<structfield>progClock</structfield> fields of the <structname>ScrnInfoRec</structname>
to be initialised before being called.
</para>
<para>
The return value is <constant>MODE_OK</constant> if a mode was found.
Otherwise it indicates why a matching mode could not be found.
</para>
</blockquote></para></blockquote>
<blockquote><para>
<programlisting>
ModeStatus xf86InitialCheckModeForDriver(ScrnInfoPtr scrp,
DisplayModePtr mode, ClockRangePtr clockRanges,
LookupModeFlags strategy, int maxPitch,
int virtualX, int virtualY);
</programlisting>
<blockquote><para>
This function checks the passed mode against some basic driver
constraints. Apart from the ones passed explicitly, the
<structfield>maxHValue</structfield> and <structfield>maxVValue</structfield> fields of
the <structname>ScrnInfoRec</structname> are also used. If the
<structfield>ValidMode</structfield> field of the <structname>ScrnInfoRec</structname>
is set, that function is also called to check the mode. Next, the
mode is checked against the monitor's constraints.
</para>
<para>
If the mode is consistent with all constraints, the return value
is <constant>MODE_OK</constant>. Otherwise the return value indicates
which constraint wasn't met.
</para>
</blockquote></para></blockquote>
<blockquote><para>
<programlisting>
void xf86DeleteMode(DisplayModePtr *modeList, DisplayModePtr mode);

View File

@ -58,6 +58,82 @@ xf86ConfigSymTabRec InputClassTab[] = {
{-1, ""},
};
static void
xf86freeInputClassList(XF86ConfInputClassPtr ptr)
{
XF86ConfInputClassPtr prev;
while (ptr) {
xf86MatchGroup *group, *next;
char **list;
TestFree(ptr->identifier);
TestFree(ptr->driver);
xorg_list_for_each_entry_safe(group, next, &ptr->match_product, entry) {
xorg_list_del(&group->entry);
for (list = group->values; *list; list++)
free(*list);
free(group);
}
xorg_list_for_each_entry_safe(group, next, &ptr->match_vendor, entry) {
xorg_list_del(&group->entry);
for (list = group->values; *list; list++)
free(*list);
free(group);
}
xorg_list_for_each_entry_safe(group, next, &ptr->match_device, entry) {
xorg_list_del(&group->entry);
for (list = group->values; *list; list++)
free(*list);
free(group);
}
xorg_list_for_each_entry_safe(group, next, &ptr->match_os, entry) {
xorg_list_del(&group->entry);
for (list = group->values; *list; list++)
free(*list);
free(group);
}
xorg_list_for_each_entry_safe(group, next, &ptr->match_pnpid, entry) {
xorg_list_del(&group->entry);
for (list = group->values; *list; list++)
free(*list);
free(group);
}
xorg_list_for_each_entry_safe(group, next, &ptr->match_usbid, entry) {
xorg_list_del(&group->entry);
for (list = group->values; *list; list++)
free(*list);
free(group);
}
xorg_list_for_each_entry_safe(group, next, &ptr->match_driver, entry) {
xorg_list_del(&group->entry);
for (list = group->values; *list; list++)
free(*list);
free(group);
}
xorg_list_for_each_entry_safe(group, next, &ptr->match_tag, entry) {
xorg_list_del(&group->entry);
for (list = group->values; *list; list++)
free(*list);
free(group);
}
xorg_list_for_each_entry_safe(group, next, &ptr->match_layout, entry) {
xorg_list_del(&group->entry);
for (list = group->values; *list; list++)
free(*list);
free(group);
}
TestFree(ptr->comment);
xf86optionListFree(ptr->option_lst);
prev = ptr;
ptr = ptr->list.next;
free(prev);
}
}
#define CLEANUP xf86freeInputClassList
#define TOKEN_SEP "|"
@ -354,79 +430,3 @@ xf86printInputClassSection(FILE * cf, XF86ConfInputClassPtr ptr)
ptr = ptr->list.next;
}
}
void
xf86freeInputClassList(XF86ConfInputClassPtr ptr)
{
XF86ConfInputClassPtr prev;
while (ptr) {
xf86MatchGroup *group, *next;
char **list;
TestFree(ptr->identifier);
TestFree(ptr->driver);
xorg_list_for_each_entry_safe(group, next, &ptr->match_product, entry) {
xorg_list_del(&group->entry);
for (list = group->values; *list; list++)
free(*list);
free(group);
}
xorg_list_for_each_entry_safe(group, next, &ptr->match_vendor, entry) {
xorg_list_del(&group->entry);
for (list = group->values; *list; list++)
free(*list);
free(group);
}
xorg_list_for_each_entry_safe(group, next, &ptr->match_device, entry) {
xorg_list_del(&group->entry);
for (list = group->values; *list; list++)
free(*list);
free(group);
}
xorg_list_for_each_entry_safe(group, next, &ptr->match_os, entry) {
xorg_list_del(&group->entry);
for (list = group->values; *list; list++)
free(*list);
free(group);
}
xorg_list_for_each_entry_safe(group, next, &ptr->match_pnpid, entry) {
xorg_list_del(&group->entry);
for (list = group->values; *list; list++)
free(*list);
free(group);
}
xorg_list_for_each_entry_safe(group, next, &ptr->match_usbid, entry) {
xorg_list_del(&group->entry);
for (list = group->values; *list; list++)
free(*list);
free(group);
}
xorg_list_for_each_entry_safe(group, next, &ptr->match_driver, entry) {
xorg_list_del(&group->entry);
for (list = group->values; *list; list++)
free(*list);
free(group);
}
xorg_list_for_each_entry_safe(group, next, &ptr->match_tag, entry) {
xorg_list_del(&group->entry);
for (list = group->values; *list; list++)
free(*list);
free(group);
}
xorg_list_for_each_entry_safe(group, next, &ptr->match_layout, entry) {
xorg_list_del(&group->entry);
for (list = group->values; *list; list++)
free(*list);
free(group);
}
TestFree(ptr->comment);
xf86optionListFree(ptr->option_lst);
prev = ptr;
ptr = ptr->list.next;
free(prev);
}
}

View File

@ -41,6 +41,32 @@ xf86ConfigSymTabRec OutputClassTab[] = {
{-1, ""},
};
static void
xf86freeOutputClassList(XF86ConfOutputClassPtr ptr)
{
XF86ConfOutputClassPtr prev;
while (ptr) {
xf86MatchGroup *group, *next;
char **list;
TestFree(ptr->identifier);
TestFree(ptr->comment);
TestFree(ptr->driver);
xorg_list_for_each_entry_safe(group, next, &ptr->match_driver, entry) {
xorg_list_del(&group->entry);
for (list = group->values; *list; list++)
free(*list);
free(group);
}
prev = ptr;
ptr = ptr->list.next;
free(prev);
}
}
#define CLEANUP xf86freeOutputClassList
#define TOKEN_SEP "|"
@ -139,29 +165,3 @@ xf86printOutputClassSection(FILE * cf, XF86ConfOutputClassPtr ptr)
ptr = ptr->list.next;
}
}
void
xf86freeOutputClassList(XF86ConfOutputClassPtr ptr)
{
XF86ConfOutputClassPtr prev;
while (ptr) {
xf86MatchGroup *group, *next;
char **list;
TestFree(ptr->identifier);
TestFree(ptr->comment);
TestFree(ptr->driver);
xorg_list_for_each_entry_safe(group, next, &ptr->match_driver, entry) {
xorg_list_del(&group->entry);
for (list = group->values; *list; list++)
free(*list);
free(group);
}
prev = ptr;
ptr = ptr->list.next;
free(prev);
}
}

View File

@ -76,6 +76,33 @@ static xf86ConfigSymTabRec DisplayTab[] = {
{-1, ""},
};
static void
xf86freeModeList(XF86ModePtr ptr)
{
XF86ModePtr prev;
while (ptr) {
TestFree(ptr->mode_name);
prev = ptr;
ptr = ptr->list.next;
free(prev);
}
}
static void
xf86freeDisplayList(XF86ConfDisplayPtr ptr)
{
XF86ConfDisplayPtr prev;
while (ptr) {
xf86freeModeList(ptr->disp_mode_lst);
xf86optionListFree(ptr->disp_option_lst);
prev = ptr;
ptr = ptr->list.next;
free(prev);
}
}
#define CLEANUP xf86freeDisplayList
static XF86ConfDisplayPtr
@ -433,6 +460,19 @@ xf86printScreenSection(FILE * cf, XF86ConfScreenPtr ptr)
}
static void
xf86freeAdaptorLinkList(XF86ConfAdaptorLinkPtr ptr)
{
XF86ConfAdaptorLinkPtr prev;
while (ptr) {
TestFree(ptr->al_adaptor_str);
prev = ptr;
ptr = ptr->list.next;
free(prev);
}
}
void
xf86freeScreenList(XF86ConfScreenPtr ptr)
{
@ -454,46 +494,6 @@ xf86freeScreenList(XF86ConfScreenPtr ptr)
}
}
void
xf86freeAdaptorLinkList(XF86ConfAdaptorLinkPtr ptr)
{
XF86ConfAdaptorLinkPtr prev;
while (ptr) {
TestFree(ptr->al_adaptor_str);
prev = ptr;
ptr = ptr->list.next;
free(prev);
}
}
void
xf86freeDisplayList(XF86ConfDisplayPtr ptr)
{
XF86ConfDisplayPtr prev;
while (ptr) {
xf86freeModeList(ptr->disp_mode_lst);
xf86optionListFree(ptr->disp_option_lst);
prev = ptr;
ptr = ptr->list.next;
free(prev);
}
}
void
xf86freeModeList(XF86ModePtr ptr)
{
XF86ModePtr prev;
while (ptr) {
TestFree(ptr->mode_name);
prev = ptr;
ptr = ptr->list.next;
free(prev);
}
}
int
xf86validateScreen(XF86ConfigPtr p)
{

View File

@ -68,6 +68,22 @@ static xf86ConfigSymTabRec VendorSubTab[] = {
{-1, ""},
};
static void
xf86freeVendorSubList(XF86ConfVendSubPtr ptr)
{
XF86ConfVendSubPtr prev;
while (ptr) {
TestFree(ptr->vs_identifier);
TestFree(ptr->vs_name);
TestFree(ptr->vs_comment);
xf86optionListFree(ptr->vs_option_lst);
prev = ptr;
ptr = ptr->list.next;
free(prev);
}
}
#define CLEANUP xf86freeVendorSubList
static XF86ConfVendSubPtr
@ -215,19 +231,3 @@ xf86freeVendorList(XF86ConfVendorPtr p)
xf86optionListFree(p->vnd_option_lst);
free(p);
}
void
xf86freeVendorSubList(XF86ConfVendSubPtr ptr)
{
XF86ConfVendSubPtr prev;
while (ptr) {
TestFree(ptr->vs_identifier);
TestFree(ptr->vs_name);
TestFree(ptr->vs_comment);
xf86optionListFree(ptr->vs_option_lst);
prev = ptr;
ptr = ptr->list.next;
free(prev);
}
}

View File

@ -55,12 +55,10 @@ int xf86validateInput(XF86ConfigPtr p);
/* InputClass.c */
XF86ConfInputClassPtr xf86parseInputClassSection(void);
void xf86printInputClassSection(FILE * f, XF86ConfInputClassPtr ptr);
void xf86freeInputClassList(XF86ConfInputClassPtr ptr);
/* OutputClass.c */
XF86ConfOutputClassPtr xf86parseOutputClassSection(void);
void xf86printOutputClassSection(FILE * f, XF86ConfOutputClassPtr ptr);
void xf86freeOutputClassList(XF86ConfOutputClassPtr ptr);
/* Layout.c */
XF86ConfLayoutPtr xf86parseLayoutSection(void);
@ -92,16 +90,12 @@ XF86ConfInputPtr xf86parsePointerSection(void);
XF86ConfScreenPtr xf86parseScreenSection(void);
void xf86printScreenSection(FILE * cf, XF86ConfScreenPtr ptr);
extern _X_EXPORT void xf86freeScreenList(XF86ConfScreenPtr ptr);
void xf86freeAdaptorLinkList(XF86ConfAdaptorLinkPtr ptr);
void xf86freeDisplayList(XF86ConfDisplayPtr ptr);
void xf86freeModeList(XF86ModePtr ptr);
int xf86validateScreen(XF86ConfigPtr p);
/* Vendor.c */
XF86ConfVendorPtr xf86parseVendorSection(void);
void xf86freeVendorList(XF86ConfVendorPtr p);
void xf86printVendorSection(FILE * cf, XF86ConfVendorPtr ptr);
void xf86freeVendorSubList(XF86ConfVendSubPtr ptr);
/* Video.c */
XF86ConfVideoAdaptorPtr xf86parseVideoAdaptorSection(void);

View File

@ -54,7 +54,6 @@ cat > sdksyms.c << EOF
#include "xvmcext.h"
#endif
#include "geext.h"
#include "geint.h"
#ifdef MITSHM
#include "shmint.h"
#endif
@ -137,9 +136,6 @@ cat > sdksyms.c << EOF
# include "xf86xvmc.h"
# include "xf86xvpriv.h"
#endif
#if XF86VIDMODE
# include "vidmodeproc.h"
#endif
#include "xorgVersion.h"
#if defined(__sparc__) || defined(__sparc)
# include "xf86sbusBus.h"
@ -180,12 +176,6 @@ cat > sdksyms.c << EOF
#endif
/* hw/xfree86/dixmods/extmod/Makefile.am -- module */
#ifdef XFreeXDGA
#include "dgaproc.h"
#endif
/* hw/xfree86/parser/Makefile.am */
#include "xf86Parser.h"
#include "xf86Optrec.h"
@ -295,8 +285,6 @@ cat > sdksyms.c << EOF
#include "selection.h"
#include "servermd.h"
#include "site.h"
#include "swaprep.h"
#include "swapreq.h"
#include "validate.h"
#include "window.h"
#include "windowstr.h"

View File

@ -300,8 +300,8 @@ QuartzUpdateScreens(void)
quartzProcs->UpdateScreen(pScreen);
/* miPaintWindow needs to be called after RootlessUpdateScreenPixmap (from xprUpdateScreen) */
miPaintWindow(pRoot, &pRoot->borderClip, PW_BACKGROUND);
/* PaintWindow needs to be called after RootlessUpdateScreenPixmap (from xprUpdateScreen) */
pScreen->PaintWindow(pRoot, &pRoot->borderClip, PW_BACKGROUND);
/* Tell RandR about the new size, so new connections get the correct info */
RRScreenSizeNotify(pScreen);

View File

@ -104,7 +104,7 @@ winDoRandRScreenSetSize(ScreenPtr pScreen,
SetRootClip(pScreen, TRUE);
// and arrange for it to be repainted
miPaintWindow(pRoot, &pRoot->borderClip, PW_BACKGROUND);
pScreen->PaintWindow(pRoot, &pRoot->borderClip, PW_BACKGROUND);
/* Indicate that a screen size change took place */
RRScreenSizeNotify(pScreen);

View File

@ -52,8 +52,6 @@ sdk_HEADERS = \
selection.h \
servermd.h \
site.h \
swaprep.h \
swapreq.h \
validate.h \
window.h \
windowstr.h \
@ -74,5 +72,7 @@ EXTRA_DIST = \
dixfontstubs.h eventconvert.h eventstr.h inpututils.h \
probes.h \
protocol-versions.h \
swaprep.h \
swapreq.h \
systemd-logind.h \
xsha1.h

View File

@ -108,18 +108,6 @@ extern _X_EXPORT void FakeAllocColor(ColormapPtr /*pmap */ ,
extern _X_EXPORT void FakeFreeColor(ColormapPtr /*pmap */ ,
Pixel /*pixel */ );
typedef int (*ColorCompareProcPtr) (EntryPtr /*pent */ ,
xrgb * /*prgb */ );
extern _X_EXPORT int FindColor(ColormapPtr /*pmap */ ,
EntryPtr /*pentFirst */ ,
int /*size */ ,
xrgb * /*prgb */ ,
Pixel * /*pPixel */ ,
int /*channel */ ,
int /*client */ ,
ColorCompareProcPtr /*comp */ );
extern _X_EXPORT int QueryColors(ColormapPtr /*pmap */ ,
int /*count */ ,
Pixel * /*ppixIn */ ,

View File

@ -36,14 +36,6 @@ typedef struct _DIXFontProp *DIXFontPropPtr;
extern _X_EXPORT Bool SetDefaultFont(const char * /*defaultfontname */ );
extern _X_EXPORT void QueueFontWakeup(FontPathElementPtr /*fpe */ );
extern _X_EXPORT void RemoveFontWakeup(FontPathElementPtr /*fpe */ );
extern _X_EXPORT void FontWakeup(void *data,
int count,
void *LastSelectMask);
extern _X_EXPORT int OpenFont(ClientPtr /*client */ ,
XID /*fid */ ,
Mask /*flags */ ,
@ -64,14 +56,6 @@ extern _X_EXPORT int ListFonts(ClientPtr /*client */ ,
unsigned int /*length */ ,
unsigned int /*max_names */ );
extern _X_EXPORT int
doListFontsWithInfo(ClientPtr /*client */ ,
LFWIclosurePtr /*c */ );
extern _X_EXPORT int doPolyText(ClientPtr /*client */ ,
PTclosurePtr /*c */
);
extern _X_EXPORT int PolyText(ClientPtr /*client */ ,
DrawablePtr /*pDraw */ ,
GCPtr /*pGC */ ,
@ -82,9 +66,6 @@ extern _X_EXPORT int PolyText(ClientPtr /*client */ ,
int /*reqType */ ,
XID /*did */ );
extern _X_EXPORT int doImageText(ClientPtr /*client */ ,
ITclosurePtr /*c */ );
extern _X_EXPORT int ImageText(ClientPtr /*client */ ,
DrawablePtr /*pDraw */ ,
GCPtr /*pGC */ ,
@ -126,22 +107,6 @@ extern _X_EXPORT void dixGetGlyphs(FontPtr /*font */ ,
unsigned long * /*glyphcount */ ,
CharInfoPtr * /*glyphs */ );
extern _X_EXPORT void QueryGlyphExtents(FontPtr /*pFont */ ,
CharInfoPtr * /*charinfo */ ,
unsigned long /*count */ ,
ExtentInfoPtr /*info */ );
extern _X_EXPORT Bool QueryTextExtents(FontPtr /*pFont */ ,
unsigned long /*count */ ,
unsigned char * /*chars */ ,
ExtentInfoPtr /*info */ );
extern _X_EXPORT Bool ParseGlyphCachingMode(char * /*str */ );
extern _X_EXPORT void InitGlyphCaching(void);
extern _X_EXPORT void SetGlyphCachingMode(int /*newmode */ );
extern _X_EXPORT void register_fpe_functions(void);
#endif /* DIXFONT_H */

View File

@ -126,21 +126,18 @@ SetReqFds(ClientPtr client, int req_fds) {
/*
* Scheduling interface
*/
extern _X_EXPORT long SmartScheduleTime;
extern _X_EXPORT long SmartScheduleInterval;
extern _X_EXPORT long SmartScheduleSlice;
extern _X_EXPORT long SmartScheduleMaxSlice;
extern _X_EXPORT Bool SmartScheduleDisable;
extern _X_EXPORT void
SmartScheduleStartTimer(void);
extern _X_EXPORT void
SmartScheduleStopTimer(void);
extern long SmartScheduleTime;
extern long SmartScheduleInterval;
extern long SmartScheduleSlice;
extern long SmartScheduleMaxSlice;
extern Bool SmartScheduleDisable;
extern void SmartScheduleStartTimer(void);
extern void SmartScheduleStopTimer(void);
#define SMART_MAX_PRIORITY (20)
#define SMART_MIN_PRIORITY (-20)
extern _X_EXPORT void
SmartScheduleInit(void);
extern void SmartScheduleInit(void);
/* This prototype is used pervasively in Xext, dix */
#define DISPATCH_PROC(func) int func(ClientPtr /* client */)
@ -179,13 +176,13 @@ typedef struct _CallbackList {
/* proc vectors */
extern _X_EXPORT int (*InitialVector[3]) (ClientPtr /*client */ );
extern int (*InitialVector[3]) (ClientPtr /*client */ );
extern _X_EXPORT int (*ProcVector[256]) (ClientPtr /*client */ );
extern _X_EXPORT int (*SwappedProcVector[256]) (ClientPtr /*client */ );
extern _X_EXPORT ReplySwapPtr ReplySwapVector[256];
extern ReplySwapPtr ReplySwapVector[256];
extern _X_EXPORT int
ProcBadRequest(ClientPtr /*client */ );

View File

@ -158,6 +158,10 @@ typedef void (*PostValidateTreeProcPtr) (WindowPtr /*pParent */ ,
typedef void (*WindowExposuresProcPtr) (WindowPtr /*pWindow */ ,
RegionPtr /*prgn */);
typedef void (*PaintWindowProcPtr) (WindowPtr /*pWindow*/,
RegionPtr /*pRegion*/,
int /*what*/);
typedef void (*CopyWindowProcPtr) (WindowPtr /*pWindow */ ,
DDXPointRec /*ptOldOrg */ ,
RegionPtr /*prgnSrc */ );
@ -498,6 +502,7 @@ typedef struct _Screen {
ClearToBackgroundProcPtr ClearToBackground;
ClipNotifyProcPtr ClipNotify;
RestackWindowProcPtr RestackWindow;
PaintWindowProcPtr PaintWindow;
/* Pixmap procedures */

View File

@ -26,207 +26,207 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
#ifndef SWAPREP_H
#define SWAPREP_H 1
extern _X_EXPORT void Swap32Write(ClientPtr /* pClient */ ,
extern void Swap32Write(ClientPtr /* pClient */ ,
int /* size */ ,
CARD32 * /* pbuf */ );
extern void CopySwap32Write(ClientPtr /* pClient */ ,
int /* size */ ,
CARD32 * /* pbuf */ );
extern void CopySwap16Write(ClientPtr /* pClient */ ,
int /* size */ ,
short * /* pbuf */ );
extern void SGenericReply(ClientPtr /* pClient */ ,
int /* size */ ,
xGenericReply * /* pRep */ );
extern void SGetWindowAttributesReply(ClientPtr /* pClient */ ,
int /* size */ ,
xGetWindowAttributesReply *
/* pRep */ );
extern void SGetGeometryReply(ClientPtr /* pClient */ ,
int /* size */ ,
xGetGeometryReply * /* pRep */ );
extern void SQueryTreeReply(ClientPtr /* pClient */ ,
int /* size */ ,
xQueryTreeReply * /* pRep */ );
extern void SInternAtomReply(ClientPtr /* pClient */ ,
int /* size */ ,
xInternAtomReply * /* pRep */ );
extern void SGetAtomNameReply(ClientPtr /* pClient */ ,
int /* size */ ,
xGetAtomNameReply * /* pRep */ );
extern void SGetPropertyReply(ClientPtr /* pClient */ ,
int /* size */ ,
xGetPropertyReply * /* pRep */ );
extern void SListPropertiesReply(ClientPtr /* pClient */ ,
int /* size */ ,
xListPropertiesReply * /* pRep */ );
extern void SGetSelectionOwnerReply(ClientPtr /* pClient */ ,
int /* size */ ,
xGetSelectionOwnerReply *
/* pRep */ );
extern void SQueryPointerReply(ClientPtr /* pClient */ ,
int /* size */ ,
xQueryPointerReply * /* pRep */ );
extern void SwapTimeCoordWrite(ClientPtr /* pClient */ ,
int /* size */ ,
xTimecoord * /* pRep */ );
extern void SGetMotionEventsReply(ClientPtr /* pClient */ ,
int /* size */ ,
CARD32 * /* pbuf */ );
xGetMotionEventsReply * /* pRep */
);
extern _X_EXPORT void CopySwap32Write(ClientPtr /* pClient */ ,
int /* size */ ,
CARD32 * /* pbuf */ );
extern void STranslateCoordsReply(ClientPtr /* pClient */ ,
int /* size */ ,
xTranslateCoordsReply * /* pRep */
);
extern _X_EXPORT void CopySwap16Write(ClientPtr /* pClient */ ,
int /* size */ ,
short * /* pbuf */ );
extern void SGetInputFocusReply(ClientPtr /* pClient */ ,
int /* size */ ,
xGetInputFocusReply * /* pRep */ );
extern _X_EXPORT void SGenericReply(ClientPtr /* pClient */ ,
extern void SQueryKeymapReply(ClientPtr /* pClient */ ,
int /* size */ ,
xQueryKeymapReply * /* pRep */ );
extern void SQueryFontReply(ClientPtr /* pClient */ ,
int /* size */ ,
xQueryFontReply * /* pRep */ );
extern void SQueryTextExtentsReply(ClientPtr /* pClient */ ,
int /* size */ ,
xQueryTextExtentsReply * /* pRep */
);
extern void SListFontsReply(ClientPtr /* pClient */ ,
int /* size */ ,
xListFontsReply * /* pRep */ );
extern void SListFontsWithInfoReply(ClientPtr /* pClient */ ,
int /* size */ ,
xGenericReply * /* pRep */ );
xListFontsWithInfoReply *
/* pRep */ );
extern _X_EXPORT void SGetWindowAttributesReply(ClientPtr /* pClient */ ,
int /* size */ ,
xGetWindowAttributesReply *
/* pRep */ );
extern void SGetFontPathReply(ClientPtr /* pClient */ ,
int /* size */ ,
xGetFontPathReply * /* pRep */ );
extern _X_EXPORT void SGetGeometryReply(ClientPtr /* pClient */ ,
int /* size */ ,
xGetGeometryReply * /* pRep */ );
extern void SGetImageReply(ClientPtr /* pClient */ ,
int /* size */ ,
xGetImageReply * /* pRep */ );
extern _X_EXPORT void SQueryTreeReply(ClientPtr /* pClient */ ,
int /* size */ ,
xQueryTreeReply * /* pRep */ );
extern _X_EXPORT void SInternAtomReply(ClientPtr /* pClient */ ,
int /* size */ ,
xInternAtomReply * /* pRep */ );
extern _X_EXPORT void SGetAtomNameReply(ClientPtr /* pClient */ ,
int /* size */ ,
xGetAtomNameReply * /* pRep */ );
extern _X_EXPORT void SGetPropertyReply(ClientPtr /* pClient */ ,
int /* size */ ,
xGetPropertyReply * /* pRep */ );
extern _X_EXPORT void SListPropertiesReply(ClientPtr /* pClient */ ,
int /* size */ ,
xListPropertiesReply * /* pRep */ );
extern _X_EXPORT void SGetSelectionOwnerReply(ClientPtr /* pClient */ ,
int /* size */ ,
xGetSelectionOwnerReply *
/* pRep */ );
extern _X_EXPORT void SQueryPointerReply(ClientPtr /* pClient */ ,
extern void SListInstalledColormapsReply(ClientPtr /* pClient */ ,
int /* size */ ,
xQueryPointerReply * /* pRep */ );
xListInstalledColormapsReply
* /* pRep */ );
extern _X_EXPORT void SwapTimeCoordWrite(ClientPtr /* pClient */ ,
int /* size */ ,
xTimecoord * /* pRep */ );
extern void SAllocColorReply(ClientPtr /* pClient */ ,
int /* size */ ,
xAllocColorReply * /* pRep */ );
extern _X_EXPORT void SGetMotionEventsReply(ClientPtr /* pClient */ ,
int /* size */ ,
xGetMotionEventsReply * /* pRep */
);
extern void SAllocNamedColorReply(ClientPtr /* pClient */ ,
int /* size */ ,
xAllocNamedColorReply * /* pRep */
);
extern _X_EXPORT void STranslateCoordsReply(ClientPtr /* pClient */ ,
int /* size */ ,
xTranslateCoordsReply * /* pRep */
);
extern void SAllocColorCellsReply(ClientPtr /* pClient */ ,
int /* size */ ,
xAllocColorCellsReply * /* pRep */
);
extern _X_EXPORT void SGetInputFocusReply(ClientPtr /* pClient */ ,
int /* size */ ,
xGetInputFocusReply * /* pRep */ );
extern void SAllocColorPlanesReply(ClientPtr /* pClient */ ,
int /* size */ ,
xAllocColorPlanesReply * /* pRep */
);
extern _X_EXPORT void SQueryKeymapReply(ClientPtr /* pClient */ ,
int /* size */ ,
xQueryKeymapReply * /* pRep */ );
extern void SQColorsExtend(ClientPtr /* pClient */ ,
int /* size */ ,
xrgb * /* prgb */ );
extern _X_EXPORT void SQueryFontReply(ClientPtr /* pClient */ ,
int /* size */ ,
xQueryFontReply * /* pRep */ );
extern void SQueryColorsReply(ClientPtr /* pClient */ ,
int /* size */ ,
xQueryColorsReply * /* pRep */ );
extern _X_EXPORT void SQueryTextExtentsReply(ClientPtr /* pClient */ ,
int /* size */ ,
xQueryTextExtentsReply * /* pRep */
);
extern void SLookupColorReply(ClientPtr /* pClient */ ,
int /* size */ ,
xLookupColorReply * /* pRep */ );
extern _X_EXPORT void SListFontsReply(ClientPtr /* pClient */ ,
int /* size */ ,
xListFontsReply * /* pRep */ );
extern void SQueryBestSizeReply(ClientPtr /* pClient */ ,
int /* size */ ,
xQueryBestSizeReply * /* pRep */ );
extern _X_EXPORT void SListFontsWithInfoReply(ClientPtr /* pClient */ ,
int /* size */ ,
xListFontsWithInfoReply *
/* pRep */ );
extern void SListExtensionsReply(ClientPtr /* pClient */ ,
int /* size */ ,
xListExtensionsReply * /* pRep */ );
extern _X_EXPORT void SGetFontPathReply(ClientPtr /* pClient */ ,
int /* size */ ,
xGetFontPathReply * /* pRep */ );
extern _X_EXPORT void SGetImageReply(ClientPtr /* pClient */ ,
extern void SGetKeyboardMappingReply(ClientPtr /* pClient */ ,
int /* size */ ,
xGetImageReply * /* pRep */ );
xGetKeyboardMappingReply *
/* pRep */ );
extern _X_EXPORT void SListInstalledColormapsReply(ClientPtr /* pClient */ ,
int /* size */ ,
xListInstalledColormapsReply
* /* pRep */ );
extern _X_EXPORT void SAllocColorReply(ClientPtr /* pClient */ ,
int /* size */ ,
xAllocColorReply * /* pRep */ );
extern _X_EXPORT void SAllocNamedColorReply(ClientPtr /* pClient */ ,
int /* size */ ,
xAllocNamedColorReply * /* pRep */
);
extern _X_EXPORT void SAllocColorCellsReply(ClientPtr /* pClient */ ,
int /* size */ ,
xAllocColorCellsReply * /* pRep */
);
extern _X_EXPORT void SAllocColorPlanesReply(ClientPtr /* pClient */ ,
int /* size */ ,
xAllocColorPlanesReply * /* pRep */
);
extern _X_EXPORT void SQColorsExtend(ClientPtr /* pClient */ ,
int /* size */ ,
xrgb * /* prgb */ );
extern _X_EXPORT void SQueryColorsReply(ClientPtr /* pClient */ ,
int /* size */ ,
xQueryColorsReply * /* pRep */ );
extern _X_EXPORT void SLookupColorReply(ClientPtr /* pClient */ ,
int /* size */ ,
xLookupColorReply * /* pRep */ );
extern _X_EXPORT void SQueryBestSizeReply(ClientPtr /* pClient */ ,
int /* size */ ,
xQueryBestSizeReply * /* pRep */ );
extern _X_EXPORT void SListExtensionsReply(ClientPtr /* pClient */ ,
int /* size */ ,
xListExtensionsReply * /* pRep */ );
extern _X_EXPORT void SGetKeyboardMappingReply(ClientPtr /* pClient */ ,
int /* size */ ,
xGetKeyboardMappingReply *
/* pRep */ );
extern _X_EXPORT void SGetPointerMappingReply(ClientPtr /* pClient */ ,
int /* size */ ,
xGetPointerMappingReply *
/* pRep */ );
extern _X_EXPORT void SGetModifierMappingReply(ClientPtr /* pClient */ ,
int /* size */ ,
xGetModifierMappingReply *
/* pRep */ );
extern _X_EXPORT void SGetKeyboardControlReply(ClientPtr /* pClient */ ,
int /* size */ ,
xGetKeyboardControlReply *
/* pRep */ );
extern _X_EXPORT void SGetPointerControlReply(ClientPtr /* pClient */ ,
int /* size */ ,
xGetPointerControlReply *
/* pRep */ );
extern _X_EXPORT void SGetScreenSaverReply(ClientPtr /* pClient */ ,
int /* size */ ,
xGetScreenSaverReply * /* pRep */ );
extern _X_EXPORT void SLHostsExtend(ClientPtr /* pClient */ ,
extern void SGetPointerMappingReply(ClientPtr /* pClient */ ,
int /* size */ ,
char * /* buf */ );
xGetPointerMappingReply *
/* pRep */ );
extern _X_EXPORT void SListHostsReply(ClientPtr /* pClient */ ,
int /* size */ ,
xListHostsReply * /* pRep */ );
extern void SGetModifierMappingReply(ClientPtr /* pClient */ ,
int /* size */ ,
xGetModifierMappingReply *
/* pRep */ );
extern _X_EXPORT void SErrorEvent(xError * /* from */ ,
xError * /* to */ );
extern void SGetKeyboardControlReply(ClientPtr /* pClient */ ,
int /* size */ ,
xGetKeyboardControlReply *
/* pRep */ );
extern _X_EXPORT void SwapConnSetupInfo(char * /* pInfo */ ,
char * /* pInfoTBase */ );
extern void SGetPointerControlReply(ClientPtr /* pClient */ ,
int /* size */ ,
xGetPointerControlReply *
/* pRep */ );
extern _X_EXPORT void WriteSConnectionInfo(ClientPtr /* pClient */ ,
unsigned long /* size */ ,
char * /* pInfo */ );
extern void SGetScreenSaverReply(ClientPtr /* pClient */ ,
int /* size */ ,
xGetScreenSaverReply * /* pRep */ );
extern _X_EXPORT void SwapConnSetupPrefix(xConnSetupPrefix * /* pcspFrom */ ,
xConnSetupPrefix * /* pcspTo */ );
extern void SLHostsExtend(ClientPtr /* pClient */ ,
int /* size */ ,
char * /* buf */ );
extern _X_EXPORT void WriteSConnSetupPrefix(ClientPtr /* pClient */ ,
xConnSetupPrefix * /* pcsp */ );
extern void SListHostsReply(ClientPtr /* pClient */ ,
int /* size */ ,
xListHostsReply * /* pRep */ );
extern void SErrorEvent(xError * /* from */ ,
xError * /* to */ );
extern void SwapConnSetupInfo(char * /* pInfo */ ,
char * /* pInfoTBase */ );
extern void WriteSConnectionInfo(ClientPtr /* pClient */ ,
unsigned long /* size */ ,
char * /* pInfo */ );
extern void SwapConnSetupPrefix(xConnSetupPrefix * /* pcspFrom */ ,
xConnSetupPrefix * /* pcspTo */ );
extern void WriteSConnSetupPrefix(ClientPtr /* pClient */ ,
xConnSetupPrefix * /* pcsp */ );
#undef SWAPREP_PROC
#define SWAPREP_PROC(func) extern _X_EXPORT void func(xEvent * /* from */, xEvent * /* to */)
#define SWAPREP_PROC(func) extern void func(xEvent * /* from */, xEvent * /* to */)
SWAPREP_PROC(SCirculateEvent);
SWAPREP_PROC(SClientMessageEvent);

View File

@ -26,13 +26,13 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
#ifndef SWAPREQ_H
#define SWAPREQ_H 1
extern _X_EXPORT void SwapColorItem(xColorItem * /* pItem */ );
extern void SwapColorItem(xColorItem * /* pItem */ );
extern _X_EXPORT void SwapConnClientPrefix(xConnClientPrefix * /* pCCP */ );
extern void SwapConnClientPrefix(xConnClientPrefix * /* pCCP */ );
#undef SWAPREQ_PROC
#define SWAPREQ_PROC(func) extern _X_EXPORT int func(ClientPtr /* client */)
#define SWAPREQ_PROC(func) extern int func(ClientPtr /* client */)
SWAPREQ_PROC(SProcAllocColor);
SWAPREQ_PROC(SProcAllocColorCells);

View File

@ -162,9 +162,7 @@ typedef struct _Window {
unsigned forcedBS:1; /* system-supplied backingStore */
unsigned redirectDraw:2; /* COMPOSITE rendering redirect */
unsigned forcedBG:1; /* must have an opaque background */
#ifdef ROOTLESS
unsigned rootlessUnhittable:1; /* doesn't hit-test */
#endif
unsigned unhittable:1; /* doesn't hit-test, for rootless */
#ifdef COMPOSITE
unsigned damagedDescendants:1; /* some descendants are damaged */
unsigned inhibitBGPaint:1; /* paint the background? */

View File

@ -268,10 +268,11 @@ miHandleExposures(DrawablePtr pSrcDrawable, DrawablePtr pDstDrawable,
RegionTranslate(&rgnExposed, pDstDrawable->x, pDstDrawable->y);
if (extents) {
/* miPaintWindow doesn't clip, so we have to */
/* PaintWindow doesn't clip, so we have to */
RegionIntersect(&rgnExposed, &rgnExposed, &pWin->clipList);
}
miPaintWindow((WindowPtr) pDstDrawable, &rgnExposed, PW_BACKGROUND);
pDstDrawable->pScreen->PaintWindow((WindowPtr) pDstDrawable,
&rgnExposed, PW_BACKGROUND);
if (extents) {
RegionReset(&rgnExposed, &expBox);
@ -383,16 +384,14 @@ miWindowExposures(WindowPtr pWin, RegionPtr prgn)
* work overall, on both client and server. This is cheating, but
* isn't prohibited by the protocol ("spontaneous combustion" :-).
*/
BoxRec box;
box = *RegionExtents(prgn);
BoxRec box = *RegionExtents(prgn);
exposures = &expRec;
RegionInit(exposures, &box, 1);
RegionReset(prgn, &box);
/* miPaintWindow doesn't clip, so we have to */
RegionIntersect(prgn, prgn, &pWin->clipList);
}
miPaintWindow(pWin, prgn, PW_BACKGROUND);
pWin->drawable.pScreen->PaintWindow(pWin, prgn, PW_BACKGROUND);
if (clientInterested)
miSendExposures(pWin, exposures,
pWin->drawable.x, pWin->drawable.y);
@ -402,14 +401,6 @@ miWindowExposures(WindowPtr pWin, RegionPtr prgn)
}
}
#ifdef ROOTLESS
/* Ugly, ugly, but we lost our hooks into miPaintWindow... =/ */
void RootlessSetPixmapOfAncestors(WindowPtr pWin);
void RootlessStartDrawing(WindowPtr pWin);
void RootlessDamageRegion(WindowPtr pWin, RegionPtr prgn);
Bool IsFramedWindow(WindowPtr pWin);
#endif
void
miPaintWindow(WindowPtr pWin, RegionPtr prgn, int what)
{
@ -437,22 +428,6 @@ miPaintWindow(WindowPtr pWin, RegionPtr prgn, int what)
Bool solid = TRUE;
DrawablePtr drawable = &pWin->drawable;
#ifdef ROOTLESS
if (!drawable || drawable->type == UNDRAWABLE_WINDOW)
return;
if (IsFramedWindow(pWin)) {
RootlessStartDrawing(pWin);
RootlessDamageRegion(pWin, prgn);
if (pWin->backgroundState == ParentRelative) {
if ((what == PW_BACKGROUND) ||
(what == PW_BORDER && !pWin->borderIsPixel))
RootlessSetPixmapOfAncestors(pWin);
}
}
#endif
if (what == PW_BACKGROUND) {
while (pWin->backgroundState == ParentRelative)
pWin = pWin->parent;

View File

@ -53,6 +53,7 @@ SOFTWARE.
#include <X11/Xproto.h>
#include "misc.h"
#include <X11/fonts/fontstruct.h>
#include <X11/fonts/fontutil.h>
#include "dixfontstr.h"
#include "gcstruct.h"
#include "windowstr.h"

View File

@ -844,8 +844,8 @@ miOverlayHandleExposures(WindowPtr pWin)
if ((mival = pTree->valdata)) {
if (!((*pPriv->InOverlay) (pTree->pWin))) {
if (RegionNotEmpty(&mival->borderExposed)) {
miPaintWindow(pTree->pWin, &mival->borderExposed,
PW_BORDER);
pScreen->PaintWindow(pTree->pWin, &mival->borderExposed,
PW_BORDER);
}
RegionUninit(&mival->borderExposed);
@ -883,7 +883,8 @@ miOverlayHandleExposures(WindowPtr pWin)
}
else {
if (RegionNotEmpty(&val->after.borderExposed)) {
miPaintWindow(pChild, &val->after.borderExposed, PW_BORDER);
pScreen->PaintWindow(pChild, &val->after.borderExposed,
PW_BORDER);
}
(*WindowExposures) (pChild, &val->after.exposed);
}
@ -982,6 +983,7 @@ static void
miOverlayWindowExposures(WindowPtr pWin, RegionPtr prgn)
{
RegionPtr exposures = prgn;
ScreenPtr pScreen = pWin->drawable.pScreen;
if (prgn && !RegionNil(prgn)) {
RegionRec expRec;
@ -1007,7 +1009,7 @@ miOverlayWindowExposures(WindowPtr pWin, RegionPtr prgn)
else
RegionIntersect(prgn, prgn, &pWin->clipList);
}
miPaintWindow(pWin, prgn, PW_BACKGROUND);
pScreen->PaintWindow(pWin, prgn, PW_BACKGROUND);
if (clientInterested)
miSendExposures(pWin, exposures,
pWin->drawable.x, pWin->drawable.y);
@ -1606,7 +1608,7 @@ miOverlayClearToBackground(WindowPtr pWin,
if (generateExposures)
(*pScreen->WindowExposures) (pWin, &reg);
else if (pWin->backgroundState != None)
miPaintWindow(pWin, &reg, PW_BACKGROUND);
pScreen->PaintWindow(pWin, &reg, PW_BACKGROUND);
RegionUninit(&reg);
}

View File

@ -253,6 +253,7 @@ miScreenInit(ScreenPtr pScreen, void *pbits, /* pointer to screen bits */
pScreen->ClearToBackground = miClearToBackground;
pScreen->ClipNotify = (ClipNotifyProcPtr) 0;
pScreen->RestackWindow = (RestackWindowProcPtr) 0;
pScreen->PaintWindow = miPaintWindow;
/* CreatePixmap, DestroyPixmap */
/* RealizeFont, UnrealizeFont */
/* CreateGC */

View File

@ -113,7 +113,7 @@ miClearToBackground(WindowPtr pWin,
if (generateExposures)
(*pWin->drawable.pScreen->WindowExposures) (pWin, &reg);
else if (pWin->backgroundState != None)
miPaintWindow(pWin, &reg, PW_BACKGROUND);
pWin->drawable.pScreen->PaintWindow(pWin, &reg, PW_BACKGROUND);
RegionUninit(&reg);
}
@ -219,7 +219,9 @@ miHandleValidateExposures(WindowPtr pWin)
while (1) {
if ((val = pChild->valdata)) {
if (RegionNotEmpty(&val->after.borderExposed))
miPaintWindow(pChild, &val->after.borderExposed, PW_BORDER);
pWin->drawable.pScreen->PaintWindow(pChild,
&val->after.borderExposed,
PW_BORDER);
RegionUninit(&val->after.borderExposed);
(*WindowExposures) (pChild, &val->after.exposed);
RegionUninit(&val->after.exposed);
@ -767,14 +769,11 @@ miSpriteTrace(SpritePtr pSprite, int x, int y)
RegionContainsPoint(wInputShape(pWin),
x - pWin->drawable.x,
y - pWin->drawable.y, &box))
#ifdef ROOTLESS
/* In rootless mode windows may be offscreen, even when
* they're in X's stack. (E.g. if the native window system
* implements some form of virtual desktop system).
*/
&& !pWin->rootlessUnhittable
#endif
) {
&& !pWin->unhittable) {
if (pSprite->spriteTraceGood >= pSprite->spriteTraceSize) {
pSprite->spriteTraceSize += 10;
pSprite->spriteTrace = reallocarray(pSprite->spriteTrace,

View File

@ -1,8 +1 @@
SUBDIRS = sync damage shadow
if XQUARTZ
SUBDIRS += rootless
endif
if XWIN_MULTIWINDOWEXTWM
SUBDIRS += rootless
endif
DIST_SUBDIRS = sync damage shadow rootless
SUBDIRS = sync damage shadow rootless

View File

@ -32,6 +32,7 @@
#include <X11/fonts/font.h>
#include "dixfontstr.h"
#include <X11/fonts/fontstruct.h>
#include <X11/fonts/fontutil.h>
#include "mi.h"
#include "regionstr.h"
#include "globals.h"

View File

@ -94,6 +94,7 @@ typedef struct _RootlessScreenRec {
ChangeBorderWidthProcPtr ChangeBorderWidth;
PositionWindowProcPtr PositionWindow;
ChangeWindowAttributesProcPtr ChangeWindowAttributes;
PaintWindowProcPtr PaintWindow;
CreateGCProcPtr CreateGC;
CopyWindowProcPtr CopyWindow;

View File

@ -35,28 +35,17 @@
#define _ROOTLESSCONFIG_H
#ifdef __APPLE__
#define ROOTLESS_RESIZE_GRAVITY TRUE
#endif
/*# define ROOTLESSDEBUG*/
#define ROOTLESS_PROTECT_ALPHA TRUE
#define ROOTLESS_REDISPLAY_DELAY 10
#define ROOTLESS_RESIZE_GRAVITY TRUE
/*# define ROOTLESSDEBUG*/
/* Bit mask for alpha channel with a particular number of bits per
pixel. Note that we only care for 32bpp data. Mac OS X uses planar
alpha for 16bpp. */
#define RootlessAlphaMask(bpp) ((bpp) == 32 ? 0xFF000000 : 0)
#endif /* __APPLE__ */
#if defined(__CYGWIN__) || defined(WIN32)
#define ROOTLESS_PROTECT_ALPHA NO
#define ROOTLESS_REDISPLAY_DELAY 10
#undef ROOTLESS_RESIZE_GRAVITY
/*# define ROOTLESSDEBUG*/
#define RootlessAlphaMask(bpp) ((bpp) == 32 ? 0xFF000000 : 0)
#endif /* __CYGWIN__ */
#endif /* _ROOTLESSCONFIG_H */

View File

@ -473,7 +473,7 @@ expose_1(WindowPtr pWin)
if (!pWin->realized)
return;
miPaintWindow(pWin, &pWin->borderClip, PW_BACKGROUND);
pWin->drawable.pScreen->PaintWindow(pWin, &pWin->borderClip, PW_BACKGROUND);
/* FIXME: comments in windowstr.h indicate that borderClip doesn't
include subwindow visibility. But I'm not so sure.. so we may
@ -669,6 +669,7 @@ RootlessWrap(ScreenPtr pScreen)
WRAP(CloseScreen);
WRAP(CreateGC);
WRAP(CopyWindow);
WRAP(PaintWindow);
WRAP(GetImage);
WRAP(SourceValidate);
WRAP(CreateWindow);

View File

@ -92,7 +92,7 @@ RootlessNativeWindowStateChanged(WindowPtr pWin, unsigned int state)
winRec->is_offscreen = ((state & XP_WINDOW_STATE_OFFSCREEN) != 0);
winRec->is_obscured = ((state & XP_WINDOW_STATE_OBSCURED) != 0);
pWin->rootlessUnhittable = winRec->is_offscreen;
pWin->unhittable = winRec->is_offscreen;
}
void
@ -569,7 +569,7 @@ RootlessReorderWindow(WindowPtr pWin)
newPrevW = pWin->prevSib;
while (newPrevW &&
(WINREC(newPrevW) == NULL || !newPrevW->realized ||
newPrevW->rootlessUnhittable != pWin->rootlessUnhittable))
newPrevW->unhittable != pWin->unhittable))
newPrevW = newPrevW->prevSib;
newPrev = newPrevW != NULL ? WINREC(newPrevW) : NULL;
@ -720,7 +720,7 @@ RootlessResizeCopyWindow(WindowPtr pWin, DDXPointRec ptOldOrg,
/*
* RootlessCopyWindow
* Update *new* location of window. Old location is redrawn with
* miPaintWindow. Cloned from fbCopyWindow.
* PaintWindow. Cloned from fbCopyWindow.
* The original always draws on the root pixmap, which we don't have.
* Instead, draw on the parent window's pixmap.
*/
@ -794,6 +794,27 @@ RootlessCopyWindow(WindowPtr pWin, DDXPointRec ptOldOrg, RegionPtr prgnSrc)
RL_DEBUG_MSG("copywindowFB end\n");
}
void
RootlessPaintWindow(WindowPtr pWin, RegionPtr prgn, int what)
{
ScreenPtr pScreen = pWin->drawable.pScreen;
if (IsFramedWindow(pWin)) {
RootlessStartDrawing(pWin);
RootlessDamageRegion(pWin, prgn);
if (pWin->backgroundState == ParentRelative) {
if ((what == PW_BACKGROUND) ||
(what == PW_BORDER && !pWin->borderIsPixel))
RootlessSetPixmapOfAncestors(pWin);
}
}
SCREEN_UNWRAP(pScreen, PaintWindow);
pScreen->PaintWindow(pWin, prgn, what);
SCREEN_WRAP(pScreen, PaintWindow);
}
/*
* Window resize procedures
*/
@ -1365,7 +1386,7 @@ RootlessReparentWindow(WindowPtr pWin, WindowPtr pPriorParent)
pTopWin = TopLevelParent(pWin);
assert(pTopWin != pWin);
pWin->rootlessUnhittable = FALSE;
pWin->unhittable = FALSE;
DeleteProperty(serverClient, pWin, xa_native_window_id());
@ -1503,7 +1524,7 @@ RootlessOrderAllWindows(Bool include_unhitable)
continue;
if (RootlessEnsureFrame(pWin) == NULL)
continue;
if (!include_unhitable && pWin->rootlessUnhittable)
if (!include_unhitable && pWin->unhittable)
continue;
RootlessReorderWindow(pWin);
}

View File

@ -48,6 +48,7 @@ Bool RootlessUnrealizeWindow(WindowPtr pWin);
void RootlessRestackWindow(WindowPtr pWin, WindowPtr pOldNextSib);
void RootlessCopyWindow(WindowPtr pWin, DDXPointRec ptOldOrg,
RegionPtr prgnSrc);
void RootlessPaintWindow(WindowPtr pWin, RegionPtr prgn, int what);
void RootlessMoveWindow(WindowPtr pWin, int x, int y, WindowPtr pSib,
VTKind kind);
void RootlessResizeWindow(WindowPtr pWin, int x, int y, unsigned int w,

View File

@ -81,6 +81,7 @@ __stdcall unsigned long GetTickCount(void);
#include <X11/Xtrans/Xtrans.h>
#include "input.h"
#include "dixfont.h"
#include <X11/fonts/fontutil.h>
#include "osdep.h"
#include "extension.h"
#ifdef X_POSIX_C_SOURCE

View File

@ -26,7 +26,7 @@
#include "present_priv.h"
RESTYPE present_event_type;
static RESTYPE present_event_type;
static int
present_free_event(void *data, XID id)

View File

@ -147,8 +147,6 @@ present_window_priv(WindowPtr window)
present_window_priv_ptr
present_get_window_priv(WindowPtr window, Bool create);
extern RESTYPE present_event_type;
/*
* present.c
*/

View File

@ -234,7 +234,7 @@ proc_present_query_capabilities (ClientPtr client)
return Success;
}
int (*proc_present_vector[PresentNumberRequests]) (ClientPtr) = {
static int (*proc_present_vector[PresentNumberRequests]) (ClientPtr) = {
proc_present_query_version, /* 0 */
proc_present_pixmap, /* 1 */
proc_present_notify_msc, /* 2 */
@ -319,7 +319,7 @@ sproc_present_query_capabilities (ClientPtr client)
return (*proc_present_vector[stuff->presentReqType]) (client);
}
int (*sproc_present_vector[PresentNumberRequests]) (ClientPtr) = {
static int (*sproc_present_vector[PresentNumberRequests]) (ClientPtr) = {
sproc_present_query_version, /* 0 */
sproc_present_pixmap, /* 1 */
sproc_present_notify_msc, /* 2 */

View File

@ -64,10 +64,10 @@ typedef XID RROutput;
typedef XID RRCrtc;
typedef XID RRProvider;
extern _X_EXPORT int RREventBase, RRErrorBase;
extern int RREventBase, RRErrorBase;
extern _X_EXPORT int (*ProcRandrVector[RRNumberRequests]) (ClientPtr);
extern _X_EXPORT int (*SProcRandrVector[RRNumberRequests]) (ClientPtr);
extern int (*ProcRandrVector[RRNumberRequests]) (ClientPtr);
extern int (*SProcRandrVector[RRNumberRequests]) (ClientPtr);
/*
* Modeline for a monitor. Name follows directly after this struct
@ -397,8 +397,8 @@ typedef struct _RRClient {
/* RRTimesRec times[0]; */
} RRClientRec, *RRClientPtr;
extern _X_EXPORT RESTYPE RRClientType, RREventType; /* resource types for event masks */
extern _X_EXPORT DevPrivateKeyRec RRClientPrivateKeyRec;
extern RESTYPE RRClientType, RREventType; /* resource types for event masks */
extern DevPrivateKeyRec RRClientPrivateKeyRec;
#define RRClientPrivateKey (&RRClientPrivateKeyRec)
extern _X_EXPORT RESTYPE RRCrtcType, RRModeType, RROutputType, RRProviderType;

View File

@ -106,7 +106,7 @@ GlyphUninit(ScreenPtr pScreen)
}
}
GlyphHashSetPtr
static GlyphHashSetPtr
FindGlyphHashSet(CARD32 filled)
{
int i;
@ -117,7 +117,7 @@ FindGlyphHashSet(CARD32 filled)
return 0;
}
GlyphRefPtr
static GlyphRefPtr
FindGlyphRef(GlyphHashPtr hash,
CARD32 signature, Bool match, unsigned char sha1[20])
{
@ -245,7 +245,7 @@ FreeGlyphPicture(GlyphPtr glyph)
}
}
void
static void
FreeGlyph(GlyphPtr glyph, int format)
{
CheckDuplicates(&globalGlyphs[format], "FreeGlyph");
@ -383,7 +383,7 @@ AllocateGlyph(xGlyphInfo * gi, int fdepth)
return 0;
}
Bool
static Bool
AllocateGlyphHash(GlyphHashPtr hash, GlyphHashSetPtr hashSet)
{
hash->table = calloc(hashSet->size, sizeof(GlyphRefRec));
@ -394,7 +394,7 @@ AllocateGlyphHash(GlyphHashPtr hash, GlyphHashSetPtr hashSet)
return TRUE;
}
Bool
static Bool
ResizeGlyphHash(GlyphHashPtr hash, CARD32 change, Bool global)
{
CARD32 tableEntries;

View File

@ -90,47 +90,31 @@ typedef struct _GlyphList {
PictFormatPtr format;
} GlyphListRec, *GlyphListPtr;
extern _X_EXPORT void
extern void
GlyphUninit(ScreenPtr pScreen);
extern _X_EXPORT GlyphHashSetPtr FindGlyphHashSet(CARD32 filled);
extern _X_EXPORT GlyphRefPtr
FindGlyphRef(GlyphHashPtr hash,
CARD32 signature, Bool match, unsigned char sha1[20]);
extern _X_EXPORT GlyphPtr FindGlyphByHash(unsigned char sha1[20], int format);
extern _X_EXPORT int
extern GlyphPtr FindGlyphByHash(unsigned char sha1[20], int format);
extern int
HashGlyph(xGlyphInfo * gi,
CARD8 *bits, unsigned long size, unsigned char sha1[20]);
extern _X_EXPORT void
FreeGlyph(GlyphPtr glyph, int format);
extern _X_EXPORT void
extern void
AddGlyph(GlyphSetPtr glyphSet, GlyphPtr glyph, Glyph id);
extern _X_EXPORT Bool
extern Bool
DeleteGlyph(GlyphSetPtr glyphSet, Glyph id);
extern _X_EXPORT GlyphPtr FindGlyph(GlyphSetPtr glyphSet, Glyph id);
extern GlyphPtr FindGlyph(GlyphSetPtr glyphSet, Glyph id);
extern _X_EXPORT GlyphPtr AllocateGlyph(xGlyphInfo * gi, int format);
extern GlyphPtr AllocateGlyph(xGlyphInfo * gi, int format);
extern _X_EXPORT Bool
AllocateGlyphHash(GlyphHashPtr hash, GlyphHashSetPtr hashSet);
extern _X_EXPORT Bool
ResizeGlyphHash(GlyphHashPtr hash, CARD32 change, Bool global);
extern _X_EXPORT Bool
extern Bool
ResizeGlyphSet(GlyphSetPtr glyphSet, CARD32 change);
extern _X_EXPORT GlyphSetPtr AllocateGlyphSet(int fdepth, PictFormatPtr format);
extern GlyphSetPtr AllocateGlyphSet(int fdepth, PictFormatPtr format);
extern _X_EXPORT int
extern int
FreeGlyphSet(void *value, XID gid);
#define GLYPH_HAS_GLYPH_PICTURE_ACCESSOR 1 /* used for api compat */

View File

@ -46,7 +46,7 @@ miDestroyPicture(PicturePtr pPicture)
RegionDestroy(pPicture->pCompositeClip);
}
void
static void
miDestroyPictureClip(PicturePtr pPicture)
{
if (pPicture->clientClip)
@ -54,7 +54,7 @@ miDestroyPictureClip(PicturePtr pPicture)
pPicture->clientClip = NULL;
}
int
static int
miChangePictureClip(PicturePtr pPicture, int type, void *value, int n)
{
ScreenPtr pScreen = pPicture->pDrawable->pScreen;
@ -88,13 +88,13 @@ miChangePictureClip(PicturePtr pPicture, int type, void *value, int n)
return Success;
}
void
static void
miChangePicture(PicturePtr pPicture, Mask mask)
{
return;
}
void
static void
miValidatePicture(PicturePtr pPicture, Mask mask)
{
DrawablePtr pDrawable = pPicture->pDrawable;
@ -211,13 +211,13 @@ miValidatePicture(PicturePtr pPicture, Mask mask)
}
}
int
static int
miChangePictureTransform(PicturePtr pPicture, PictTransform * transform)
{
return Success;
}
int
static int
miChangePictureFilter(PicturePtr pPicture,
int filter, xFixed * params, int nparams)
{
@ -499,7 +499,7 @@ miRenderPixelToColor(PictFormatPtr format, CARD32 pixel, xRenderColor * color)
}
}
void
static void
miTriStrip(CARD8 op,
PicturePtr pSrc,
PicturePtr pDst,
@ -523,7 +523,7 @@ miTriStrip(CARD8 op,
free(tris);
}
void
static void
miTriFan(CARD8 op,
PicturePtr pSrc,
PicturePtr pDst,

View File

@ -53,26 +53,6 @@ extern _X_EXPORT int
extern _X_EXPORT void
miDestroyPicture(PicturePtr pPicture);
extern _X_EXPORT void
miDestroyPictureClip(PicturePtr pPicture);
extern _X_EXPORT int
miChangePictureClip(PicturePtr pPicture, int type, void *value, int n);
extern _X_EXPORT void
miChangePicture(PicturePtr pPicture, Mask mask);
extern _X_EXPORT void
miValidatePicture(PicturePtr pPicture, Mask mask);
extern _X_EXPORT int
miChangePictureTransform(PicturePtr pPicture, PictTransform * transform);
extern _X_EXPORT int
miChangePictureFilter(PicturePtr pPicture,
int filter, xFixed * params, int nparams);
extern _X_EXPORT void
miCompositeSourceValidate(PicturePtr pPicture);
@ -121,22 +101,6 @@ miCompositeRects(CARD8 op,
PicturePtr pDst,
xRenderColor * color, int nRect, xRectangle *rects);
extern _X_EXPORT void
miTriStrip(CARD8 op,
PicturePtr pSrc,
PicturePtr pDst,
PictFormatPtr maskFormat,
INT16 xSrc, INT16 ySrc, int npoints, xPointFixed * points);
extern _X_EXPORT void
miTriFan(CARD8 op,
PicturePtr pSrc,
PicturePtr pDst,
PictFormatPtr maskFormat,
INT16 xSrc, INT16 ySrc, int npoints, xPointFixed * points);
extern _X_EXPORT void
miTrapezoidBounds(int ntrap, xTrapezoid * traps, BoxPtr box);

View File

@ -61,7 +61,7 @@ PictureWindowFormat(WindowPtr pWindow)
WindowGetVisual(pWindow));
}
Bool
static Bool
PictureDestroyWindow(WindowPtr pWindow)
{
ScreenPtr pScreen = pWindow->drawable.pScreen;
@ -82,7 +82,7 @@ PictureDestroyWindow(WindowPtr pWindow)
return ret;
}
Bool
static Bool
PictureCloseScreen(ScreenPtr pScreen)
{
PictureScreenPtr ps = GetPictureScreen(pScreen);
@ -102,7 +102,7 @@ PictureCloseScreen(ScreenPtr pScreen)
return ret;
}
void
static void
PictureStoreColors(ColormapPtr pColormap, int ndef, xColorItem * pdef)
{
ScreenPtr pScreen = pColormap->pScreen;
@ -163,7 +163,7 @@ addFormat(FormatInitRec formats[256], int nformat, CARD32 format, CARD8 depth)
#define Mask(n) ((1 << (n)) - 1)
PictFormatPtr
static PictFormatPtr
PictureCreateDefaultFormats(ScreenPtr pScreen, int *nformatp)
{
int nformats, f;
@ -439,7 +439,7 @@ PictureFindVisual(ScreenPtr pScreen, VisualID visual)
return 0;
}
Bool
static Bool
PictureInitIndexedFormat(ScreenPtr pScreen, PictFormatPtr format)
{
PictureScreenPtr ps = GetPictureScreenIfSet(pScreen);
@ -625,6 +625,12 @@ GetPictureBytes(void *value, XID id, ResourceSizePtr size)
}
}
static int
FreePictFormat(void *pPictFormat, XID pid)
{
return Success;
}
Bool
PictureInit(ScreenPtr pScreen, PictFormatPtr formats, int nformats)
{
@ -724,7 +730,7 @@ PictureInit(ScreenPtr pScreen, PictFormatPtr formats, int nformats)
return TRUE;
}
void
static void
SetPictureToDefaults(PicturePtr pPicture)
{
pPicture->refcnt = 1;
@ -1430,12 +1436,6 @@ FreePicture(void *value, XID pid)
return Success;
}
int
FreePictFormat(void *pPictFormat, XID pid)
{
return Success;
}
/**
* ReduceCompositeOp is used to choose simpler ops for cases where alpha
* channels are always one and so math on the alpha channel per pixel becomes

View File

@ -169,11 +169,11 @@ typedef enum _PictFormatShort {
#define PictureCmapPolicyColor 3
#define PictureCmapPolicyAll 4
extern _X_EXPORT int PictureCmapPolicy;
extern int PictureCmapPolicy;
extern _X_EXPORT int PictureParseCmapPolicy(const char *name);
extern int PictureParseCmapPolicy(const char *name);
extern _X_EXPORT int RenderErrBase;
extern int RenderErrBase;
/* Fixed point updates from Carl Worth, USC, Information Sciences Institute */

View File

@ -344,16 +344,14 @@ typedef struct _PictureScreen {
} PictureScreenRec, *PictureScreenPtr;
extern _X_EXPORT DevPrivateKeyRec PictureScreenPrivateKeyRec;
#define PictureScreenPrivateKey (&PictureScreenPrivateKeyRec)
extern _X_EXPORT DevPrivateKeyRec PictureWindowPrivateKeyRec;
#define PictureWindowPrivateKey (&PictureWindowPrivateKeyRec)
extern _X_EXPORT RESTYPE PictureType;
extern _X_EXPORT RESTYPE PictFormatType;
extern _X_EXPORT RESTYPE GlyphSetType;
extern RESTYPE PictureType;
extern RESTYPE PictFormatType;
extern RESTYPE GlyphSetType;
#define GetPictureScreen(s) ((PictureScreenPtr)dixLookupPrivate(&(s)->devPrivates, PictureScreenPrivateKey))
#define GetPictureScreenIfSet(s) (dixPrivateKeyRegistered(PictureScreenPrivateKey) ? GetPictureScreen(s) : NULL)
@ -379,27 +377,12 @@ extern _X_EXPORT RESTYPE GlyphSetType;
extern _X_EXPORT PictFormatPtr
PictureWindowFormat(WindowPtr pWindow);
extern _X_EXPORT Bool
PictureDestroyWindow(WindowPtr pWindow);
extern _X_EXPORT Bool
PictureCloseScreen(ScreenPtr pScreen);
extern _X_EXPORT void
PictureStoreColors(ColormapPtr pColormap, int ndef, xColorItem * pdef);
extern _X_EXPORT Bool
PictureInitIndexedFormat(ScreenPtr pScreen, PictFormatPtr format);
extern _X_EXPORT Bool
PictureSetSubpixelOrder(ScreenPtr pScreen, int subpixel);
extern _X_EXPORT int
PictureGetSubpixelOrder(ScreenPtr pScreen);
extern _X_EXPORT PictFormatPtr
PictureCreateDefaultFormats(ScreenPtr pScreen, int *nformatp);
extern _X_EXPORT PictFormatPtr
PictureMatchVisual(ScreenPtr pScreen, int depth, VisualPtr pVisual);
@ -415,14 +398,12 @@ extern _X_EXPORT int
extern _X_EXPORT char *PictureGetFilterName(int id);
extern _X_EXPORT int
PictureAddFilter(ScreenPtr pScreen,
const char *filter,
PictFilterValidateParamsProcPtr ValidateParams,
int width, int height);
extern _X_EXPORT Bool
PictureSetFilterAlias(ScreenPtr pScreen, const char *filter, const char *alias);
extern _X_EXPORT Bool
@ -435,21 +416,16 @@ extern _X_EXPORT PictFilterPtr
PictureFindFilter(ScreenPtr pScreen, char *name, int len);
extern _X_EXPORT int
SetPicturePictFilter(PicturePtr pPicture, PictFilterPtr pFilter,
xFixed * params, int nparams);
extern _X_EXPORT int
SetPictureFilter(PicturePtr pPicture, char *name, int len,
xFixed * params, int nparams);
extern _X_EXPORT Bool
PictureFinishInit(void);
extern _X_EXPORT void
SetPictureToDefaults(PicturePtr pPicture);
extern _X_EXPORT PicturePtr
CreatePicture(Picture pid,
DrawablePtr pDrawable,
@ -457,7 +433,6 @@ CreatePicture(Picture pid,
Mask mask, XID *list, ClientPtr client, int *error);
extern _X_EXPORT int
ChangePicture(PicturePtr pPicture,
Mask vmask, XID *vlist, DevUnion *ulist, ClientPtr client);
@ -467,7 +442,6 @@ SetPictureClipRects(PicturePtr pPicture,
int xOrigin, int yOrigin, int nRect, xRectangle *rects);
extern _X_EXPORT int
SetPictureClipRegion(PicturePtr pPicture,
int xOrigin, int yOrigin, RegionPtr pRegion);
@ -480,11 +454,7 @@ extern _X_EXPORT void
extern _X_EXPORT int
FreePicture(void *pPicture, XID pid);
extern _X_EXPORT int
FreePictFormat(void *pPictFormat, XID pid);
extern _X_EXPORT void
CompositePicture(CARD8 op,
PicturePtr pSrc,
PicturePtr pMask,
@ -496,7 +466,6 @@ CompositePicture(CARD8 op,
INT16 xDst, INT16 yDst, CARD16 width, CARD16 height);
extern _X_EXPORT void
CompositeGlyphs(CARD8 op,
PicturePtr pSrc,
PicturePtr pDst,
@ -505,13 +474,11 @@ CompositeGlyphs(CARD8 op,
INT16 ySrc, int nlist, GlyphListPtr lists, GlyphPtr * glyphs);
extern _X_EXPORT void
CompositeRects(CARD8 op,
PicturePtr pDst,
xRenderColor * color, int nRect, xRectangle *rects);
extern _X_EXPORT void
CompositeTrapezoids(CARD8 op,
PicturePtr pSrc,
PicturePtr pDst,
@ -519,7 +486,6 @@ CompositeTrapezoids(CARD8 op,
INT16 xSrc, INT16 ySrc, int ntrap, xTrapezoid * traps);
extern _X_EXPORT void
CompositeTriangles(CARD8 op,
PicturePtr pSrc,
PicturePtr pDst,
@ -528,7 +494,6 @@ CompositeTriangles(CARD8 op,
INT16 ySrc, int ntriangles, xTriangle * triangles);
extern _X_EXPORT void
CompositeTriStrip(CARD8 op,
PicturePtr pSrc,
PicturePtr pDst,
@ -536,7 +501,6 @@ CompositeTriStrip(CARD8 op,
INT16 xSrc, INT16 ySrc, int npoints, xPointFixed * points);
extern _X_EXPORT void
CompositeTriFan(CARD8 op,
PicturePtr pSrc,
PicturePtr pDst,
@ -547,12 +511,10 @@ Bool
AnimCurInit(ScreenPtr pScreen);
int
AnimCursorCreate(CursorPtr *cursors, CARD32 *deltas, int ncursor,
CursorPtr *ppCursor, ClientPtr client, XID cid);
extern _X_EXPORT void
AddTraps(PicturePtr pPicture,
INT16 xOff, INT16 yOff, int ntraps, xTrap * traps);
@ -583,8 +545,8 @@ CreateConicalGradientPicture(Picture pid,
xFixed * stops, xRenderColor * colors, int *error);
#ifdef PANORAMIX
extern _X_EXPORT void PanoramiXRenderInit(void);
extern _X_EXPORT void PanoramiXRenderReset(void);
extern void PanoramiXRenderInit(void);
extern void PanoramiXRenderReset(void);
#endif
/*
@ -592,12 +554,10 @@ extern _X_EXPORT void PanoramiXRenderReset(void);
*/
extern _X_EXPORT void
PictTransform_from_xRenderTransform(PictTransformPtr pict,
xRenderTransform * render);
extern _X_EXPORT void
xRenderTransform_from_PictTransform(xRenderTransform * render,
PictTransformPtr pict);

View File

@ -2,10 +2,6 @@ noinst_LTLIBRARIES = libxfixes.la
AM_CFLAGS = $(DIX_CFLAGS)
if XORG
sdk_HEADERS = xfixes.h
endif
libxfixes_la_SOURCES = \
cursor.c \
region.c \

View File

@ -29,8 +29,8 @@
#include "resource.h"
extern _X_EXPORT RESTYPE RegionResType;
extern _X_EXPORT int XFixesErrorBase;
extern RESTYPE RegionResType;
extern int XFixesErrorBase;
#define VERIFY_REGION(pRegion, rid, client, mode) \
do { \
@ -48,7 +48,7 @@ extern _X_EXPORT int XFixesErrorBase;
if (rid) VERIFY_REGION(pRegion, rid, client, mode); \
}
extern _X_EXPORT RegionPtr
extern RegionPtr
XFixesRegionCopy(RegionPtr pRegion);
#include "xibarriers.h"