mi: Add a default no-op miSourceValidate
Slightly simplifies the callers since they don't need to check for
non-NULL anymore.
I do extremely hate the workarounds here to suppress misprite taking the
cursor down though. Surely there's a better way.
[1.20: Do not in fact simplify the callers as above, since it would
change the ABI. - ajax]
Reviewed-by: Michel Dänzer <mdaenzer@redhat.com>
(cherry picked from commit ff310903f3
)
This commit is contained in:
parent
07efd81b81
commit
2320fd4b52
|
@ -32,6 +32,7 @@ from The Open Group.
|
|||
|
||||
#include <X11/X.h>
|
||||
#include "scrnintstr.h"
|
||||
#include "mi.h"
|
||||
#include "misc.h"
|
||||
#include "os.h"
|
||||
#include "windowstr.h"
|
||||
|
@ -395,7 +396,7 @@ Bool PixmapSyncDirtyHelper(PixmapDirtyUpdatePtr dirty)
|
|||
* leaves the software cursor in place
|
||||
*/
|
||||
SourceValidate = pScreen->SourceValidate;
|
||||
pScreen->SourceValidate = NULL;
|
||||
pScreen->SourceValidate = miSourceValidate;
|
||||
|
||||
RegionTranslate(&pixregion, dirty->x, dirty->y);
|
||||
RegionIntersect(&pixregion, &pixregion, region);
|
||||
|
|
|
@ -2930,8 +2930,8 @@ The sample server implementation is in Xserver/fb/fbscreen.c.</para>
|
|||
unsigned int subWindowMode;
|
||||
|
||||
</programlisting></blockquote>
|
||||
SourceValidate should be called by CopyArea/CopyPlane primitives when
|
||||
the SourceValidate function pointer in the screen is non-null. If you know that
|
||||
SourceValidate should be called by any primitive that reads from pDrawable.
|
||||
If you know that
|
||||
you will never need SourceValidate, you can avoid this check. Currently,
|
||||
SourceValidate is used by the mi software cursor code to remove the cursor
|
||||
from the screen when the source rectangle overlaps the cursor position.
|
||||
|
|
|
@ -28,7 +28,7 @@
|
|||
#include <stddef.h>
|
||||
#include <string.h>
|
||||
#include <stdio.h>
|
||||
|
||||
#include "mi.h"
|
||||
#include "xf86.h"
|
||||
#include "xf86DDC.h"
|
||||
#include "windowstr.h"
|
||||
|
@ -191,7 +191,7 @@ xf86RotateRedisplay(ScreenPtr pScreen)
|
|||
* leaves the software cursor in place
|
||||
*/
|
||||
SourceValidate = pScreen->SourceValidate;
|
||||
pScreen->SourceValidate = NULL;
|
||||
pScreen->SourceValidate = miSourceValidate;
|
||||
|
||||
for (c = 0; c < xf86_config->num_crtc; c++) {
|
||||
xf86CrtcPtr crtc = xf86_config->crtc[c];
|
||||
|
|
|
@ -263,7 +263,6 @@ xnestOpenScreen(ScreenPtr pScreen, int argc, char *argv[])
|
|||
pScreen->SaveScreen = xnestSaveScreen;
|
||||
pScreen->GetImage = xnestGetImage;
|
||||
pScreen->GetSpans = xnestGetSpans;
|
||||
pScreen->SourceValidate = NULL;
|
||||
|
||||
/* Window Procedures */
|
||||
|
||||
|
|
4
mi/mi.h
4
mi/mi.h
|
@ -360,6 +360,10 @@ extern _X_EXPORT void miPushPixels(GCPtr /*pGC */ ,
|
|||
|
||||
/* miscrinit.c */
|
||||
|
||||
extern _X_EXPORT void
|
||||
miSourceValidate(DrawablePtr pDrawable, int x, int y, int w, int h,
|
||||
unsigned int subWindowMode);
|
||||
|
||||
extern _X_EXPORT Bool miModifyPixmapHeader(PixmapPtr pPixmap,
|
||||
int width,
|
||||
int height,
|
||||
|
|
|
@ -124,6 +124,12 @@ miCloseScreen(ScreenPtr pScreen)
|
|||
return ((*pScreen->DestroyPixmap) ((PixmapPtr) pScreen->devPrivate));
|
||||
}
|
||||
|
||||
void
|
||||
miSourceValidate(DrawablePtr pDrawable, int x, int y, int w, int h,
|
||||
unsigned int subWindowMode)
|
||||
{
|
||||
}
|
||||
|
||||
/* With the introduction of pixmap privates, the "screen pixmap" can no
|
||||
* longer be created in miScreenInit, since all the modules that could
|
||||
* possibly ask for pixmap private space have not been initialized at
|
||||
|
@ -243,7 +249,7 @@ miScreenInit(ScreenPtr pScreen, void *pbits, /* pointer to screen bits */
|
|||
}
|
||||
/* else CloseScreen */
|
||||
/* QueryBestSize, SaveScreen, GetImage, GetSpans */
|
||||
pScreen->SourceValidate = (SourceValidateProcPtr) 0;
|
||||
pScreen->SourceValidate = miSourceValidate;
|
||||
/* CreateWindow, DestroyWindow, PositionWindow, ChangeWindowAttributes */
|
||||
/* RealizeWindow, UnrealizeWindow */
|
||||
pScreen->ValidateTree = miValidateTree;
|
||||
|
|
Loading…
Reference in New Issue
Block a user