fb: reexport fbGetGCPrivateKey and add itw wrapped version

This patch reexports a symbol needed by NVidia 340 driver and adds
its "wrapped" version for libwfb to prevent XServer crashes.

Signed-off-by: Oleh Nykyforchyn <oleh.nyk@gmail.com>
This commit is contained in:
Oleh Nykyforchyn
2025-12-17 19:36:50 +02:00
committed by Enrico Weigelt
parent 2285961661
commit ccb9b1bd17
4 changed files with 14 additions and 3 deletions

View File

@@ -254,8 +254,8 @@ fbGetScreenPrivateKey(void);
/* private field of a screen */
typedef struct {
#ifdef FB_ACCESS_WRAPPER
SetupWrapProcPtr setupWrap; /* driver hook to set pixmap access wrapping */
FinishWrapProcPtr finishWrap; /* driver hook to clean up pixmap access wrapping */
SetupWrapProcPtr setupWrap; /* driver hook to set pixmap access wrapping */
FinishWrapProcPtr finishWrap; /* driver hook to clean up pixmap access wrapping */
#endif
DevPrivateKeyRec gcPrivateKeyRec;
DevPrivateKeyRec winPrivateKeyRec;

View File

@@ -12,7 +12,10 @@
#define FbBitsStrideToStipStride(s) (((s) << (FB_SHIFT - FB_STIP_SHIFT)))
#define fbGetGCPrivateKey(pGC) (&fbGetScreenPrivate((pGC)->pScreen)->gcPrivateKeyRec)
/* NVidia v.340 legacy driver needs this symbol */
extern _X_EXPORT DevPrivateKey
fbGetGCPrivateKey(GCPtr pGC);
#define fbGetGCPrivate(pGC) ((FbGCPrivPtr)dixLookupPrivate(&(pGC)->devPrivates, fbGetGCPrivateKey(pGC)))
#define fbGetScreenPixmap(s) ((PixmapPtr) (s)->devPrivate)

View File

@@ -25,12 +25,19 @@
#include "fb/fb_priv.h"
static DevPrivateKeyRec fbScreenPrivateKeyRec;
DevPrivateKey
fbGetScreenPrivateKey(void)
{
return &fbScreenPrivateKeyRec;
}
DevPrivateKey
fbGetGCPrivateKey(GCPtr pGC)
{
return &fbGetScreenPrivate((pGC)->pScreen)->gcPrivateKeyRec;
}
Bool
fbAllocatePrivates(ScreenPtr pScreen)
{

View File

@@ -54,6 +54,7 @@
#define fbFixCoordModePrevious wfbFixCoordModePrevious
#define fbGCFuncs wfbGCFuncs
#define fbGCOps wfbGCOps
#define fbGetGCPrivateKey wfbGetGCPrivateKey
#define fbGetImage wfbGetImage
#define fbGetScreenPrivateKey wfbGetScreenPrivateKey
#define fbGetSpans wfbGetSpans