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 <X11/X.h>
|
||||||
#include "scrnintstr.h"
|
#include "scrnintstr.h"
|
||||||
|
#include "mi.h"
|
||||||
#include "misc.h"
|
#include "misc.h"
|
||||||
#include "os.h"
|
#include "os.h"
|
||||||
#include "windowstr.h"
|
#include "windowstr.h"
|
||||||
|
@ -395,7 +396,7 @@ Bool PixmapSyncDirtyHelper(PixmapDirtyUpdatePtr dirty)
|
||||||
* leaves the software cursor in place
|
* leaves the software cursor in place
|
||||||
*/
|
*/
|
||||||
SourceValidate = pScreen->SourceValidate;
|
SourceValidate = pScreen->SourceValidate;
|
||||||
pScreen->SourceValidate = NULL;
|
pScreen->SourceValidate = miSourceValidate;
|
||||||
|
|
||||||
RegionTranslate(&pixregion, dirty->x, dirty->y);
|
RegionTranslate(&pixregion, dirty->x, dirty->y);
|
||||||
RegionIntersect(&pixregion, &pixregion, region);
|
RegionIntersect(&pixregion, &pixregion, region);
|
||||||
|
|
|
@ -2930,8 +2930,8 @@ The sample server implementation is in Xserver/fb/fbscreen.c.</para>
|
||||||
unsigned int subWindowMode;
|
unsigned int subWindowMode;
|
||||||
|
|
||||||
</programlisting></blockquote>
|
</programlisting></blockquote>
|
||||||
SourceValidate should be called by CopyArea/CopyPlane primitives when
|
SourceValidate should be called by any primitive that reads from pDrawable.
|
||||||
the SourceValidate function pointer in the screen is non-null. If you know that
|
If you know that
|
||||||
you will never need SourceValidate, you can avoid this check. Currently,
|
you will never need SourceValidate, you can avoid this check. Currently,
|
||||||
SourceValidate is used by the mi software cursor code to remove the cursor
|
SourceValidate is used by the mi software cursor code to remove the cursor
|
||||||
from the screen when the source rectangle overlaps the cursor position.
|
from the screen when the source rectangle overlaps the cursor position.
|
||||||
|
|
|
@ -28,7 +28,7 @@
|
||||||
#include <stddef.h>
|
#include <stddef.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
#include "mi.h"
|
||||||
#include "xf86.h"
|
#include "xf86.h"
|
||||||
#include "xf86DDC.h"
|
#include "xf86DDC.h"
|
||||||
#include "windowstr.h"
|
#include "windowstr.h"
|
||||||
|
@ -191,7 +191,7 @@ xf86RotateRedisplay(ScreenPtr pScreen)
|
||||||
* leaves the software cursor in place
|
* leaves the software cursor in place
|
||||||
*/
|
*/
|
||||||
SourceValidate = pScreen->SourceValidate;
|
SourceValidate = pScreen->SourceValidate;
|
||||||
pScreen->SourceValidate = NULL;
|
pScreen->SourceValidate = miSourceValidate;
|
||||||
|
|
||||||
for (c = 0; c < xf86_config->num_crtc; c++) {
|
for (c = 0; c < xf86_config->num_crtc; c++) {
|
||||||
xf86CrtcPtr crtc = xf86_config->crtc[c];
|
xf86CrtcPtr crtc = xf86_config->crtc[c];
|
||||||
|
|
|
@ -263,7 +263,6 @@ xnestOpenScreen(ScreenPtr pScreen, int argc, char *argv[])
|
||||||
pScreen->SaveScreen = xnestSaveScreen;
|
pScreen->SaveScreen = xnestSaveScreen;
|
||||||
pScreen->GetImage = xnestGetImage;
|
pScreen->GetImage = xnestGetImage;
|
||||||
pScreen->GetSpans = xnestGetSpans;
|
pScreen->GetSpans = xnestGetSpans;
|
||||||
pScreen->SourceValidate = NULL;
|
|
||||||
|
|
||||||
/* Window Procedures */
|
/* Window Procedures */
|
||||||
|
|
||||||
|
|
4
mi/mi.h
4
mi/mi.h
|
@ -360,6 +360,10 @@ extern _X_EXPORT void miPushPixels(GCPtr /*pGC */ ,
|
||||||
|
|
||||||
/* miscrinit.c */
|
/* 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,
|
extern _X_EXPORT Bool miModifyPixmapHeader(PixmapPtr pPixmap,
|
||||||
int width,
|
int width,
|
||||||
int height,
|
int height,
|
||||||
|
|
|
@ -124,6 +124,12 @@ miCloseScreen(ScreenPtr pScreen)
|
||||||
return ((*pScreen->DestroyPixmap) ((PixmapPtr) pScreen->devPrivate));
|
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
|
/* With the introduction of pixmap privates, the "screen pixmap" can no
|
||||||
* longer be created in miScreenInit, since all the modules that could
|
* longer be created in miScreenInit, since all the modules that could
|
||||||
* possibly ask for pixmap private space have not been initialized at
|
* 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 */
|
/* else CloseScreen */
|
||||||
/* QueryBestSize, SaveScreen, GetImage, GetSpans */
|
/* QueryBestSize, SaveScreen, GetImage, GetSpans */
|
||||||
pScreen->SourceValidate = (SourceValidateProcPtr) 0;
|
pScreen->SourceValidate = miSourceValidate;
|
||||||
/* CreateWindow, DestroyWindow, PositionWindow, ChangeWindowAttributes */
|
/* CreateWindow, DestroyWindow, PositionWindow, ChangeWindowAttributes */
|
||||||
/* RealizeWindow, UnrealizeWindow */
|
/* RealizeWindow, UnrealizeWindow */
|
||||||
pScreen->ValidateTree = miValidateTree;
|
pScreen->ValidateTree = miValidateTree;
|
||||||
|
|
Loading…
Reference in New Issue