Xv: Remove excessive module-induced indirection

Xv used to call XvScreenInit and co. through function pointers, as
XvScreenInit may have been sitting on the other side of a module
boundary from xf86XvScreenInit.  Why this was so is a mystery, but make
it not so any more.

Signed-off-by: Tomas Carnecky <tom@dbservice.com>
Reviewed-by: Daniel Stone <daniel@fooishbar.org>
Acked-by: Peter Hutterer <peter.hutterer@who-t.net>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Signed-off-by: Keith Packard <keithp@keithp.com>
This commit is contained in:
Tomas Carnecky 2012-07-10 02:03:08 +01:00 committed by Keith Packard
parent 2e6c5f9591
commit 5d92ee4081
9 changed files with 12 additions and 40 deletions

View File

@ -70,10 +70,6 @@ extern _X_EXPORT RESTYPE XvRTVideoNotify;
extern _X_EXPORT RESTYPE XvRTVideoNotifyList; extern _X_EXPORT RESTYPE XvRTVideoNotifyList;
extern _X_EXPORT RESTYPE XvRTPortNotify; extern _X_EXPORT RESTYPE XvRTPortNotify;
extern DevPrivateKey (*XvGetScreenKeyProc)(void);
extern unsigned long (*XvGetRTPortProc)(void);
extern int (*XvScreenInitProc)(ScreenPtr);
typedef struct { typedef struct {
int numerator; int numerator;
int denominator; int denominator;

View File

@ -194,18 +194,6 @@ XvExtensionInit(void)
} }
} }
DevPrivateKey (*XvGetScreenKeyProc)(void) = NULL;
unsigned long (*XvGetRTPortProc)(void) = NULL;
int (*XvScreenInitProc)(ScreenPtr) = NULL;
void
XvRegister(void)
{
XvScreenInitProc = XvScreenInit;
XvGetScreenKeyProc = XvGetScreenKey;
XvGetRTPortProc = XvGetRTPort;
}
static Bool static Bool
CreateResourceTypes(void) CreateResourceTypes(void)
{ {

View File

@ -764,12 +764,6 @@ XvMCScreenInit(ScreenPtr pScreen, int num, XvMCAdaptorPtr pAdapt)
return Success; return Success;
} }
void
XvMCRegister(void)
{
XvMCScreenInitProc = XvMCScreenInit;
}
XvImagePtr XvImagePtr
XvMCFindXvImage(XvPortPtr pPort, CARD32 id) XvMCFindXvImage(XvPortPtr pPort, CARD32 id)
{ {

View File

@ -182,17 +182,17 @@ KdXVScreenInit(ScreenPtr pScreen, KdVideoAdaptorPtr * adaptors, int num)
if (KdXVGeneration != serverGeneration) if (KdXVGeneration != serverGeneration)
KdXVGeneration = serverGeneration; KdXVGeneration = serverGeneration;
if (!XvGetScreenKeyProc || !XvGetRTPortProc || !XvScreenInitProc) if (noXvExtension)
return FALSE; return FALSE;
if (!dixRegisterPrivateKey(&KdXVWindowKeyRec, PRIVATE_WINDOW, 0)) if (!dixRegisterPrivateKey(&KdXVWindowKeyRec, PRIVATE_WINDOW, 0))
return FALSE; return FALSE;
if (Success != (*XvScreenInitProc) (pScreen)) if (Success != XvScreenInit(pScreen))
return FALSE; return FALSE;
KdXvScreenKey = (*XvGetScreenKeyProc) (); KdXvScreenKey = XvGetScreenKey();
PortResource = (*XvGetRTPortProc) (); PortResource = XvGetRTPort();
pxvs = GET_XV_SCREEN(pScreen); pxvs = GET_XV_SCREEN(pScreen);

View File

@ -234,19 +234,18 @@ xf86XVScreenInit(ScreenPtr pScreen, XF86VideoAdaptorPtr * adaptors, int num)
XF86XVScreenPtr ScreenPriv; XF86XVScreenPtr ScreenPriv;
XvScreenPtr pxvs; XvScreenPtr pxvs;
if (num <= 0 || if (num <= 0 || noXvExtension)
!XvGetScreenKeyProc || !XvGetRTPortProc || !XvScreenInitProc)
return FALSE; return FALSE;
if (Success != (*XvScreenInitProc) (pScreen)) if (Success != XvScreenInit(pScreen))
return FALSE; return FALSE;
if (!dixRegisterPrivateKey(&XF86XVWindowKeyRec, PRIVATE_WINDOW, 0)) if (!dixRegisterPrivateKey(&XF86XVWindowKeyRec, PRIVATE_WINDOW, 0))
return FALSE; return FALSE;
XF86XvScreenKey = (*XvGetScreenKeyProc) (); XF86XvScreenKey = XvGetScreenKey();
PortResource = (*XvGetRTPortProc) (); PortResource = XvGetRTPort();
pxvs = GET_XV_SCREEN(pScreen); pxvs = GET_XV_SCREEN(pScreen);

View File

@ -152,7 +152,7 @@ xf86XvMCScreenInit(ScreenPtr pScreen,
XF86XvScreenKey); XF86XvScreenKey);
int i, j; int i, j;
if (!XvMCScreenInitProc) if (noXvExtension)
return FALSE; return FALSE;
if (!(pAdapt = malloc(sizeof(XvMCAdaptorRec) * num_adaptors))) if (!(pAdapt = malloc(sizeof(XvMCAdaptorRec) * num_adaptors)))
@ -201,7 +201,7 @@ xf86XvMCScreenInit(ScreenPtr pScreen,
adaptors++; adaptors++;
} }
if (Success != (*XvMCScreenInitProc) (pScreen, num_adaptors, pAdapt)) if (Success != XvMCScreenInit(pScreen, num_adaptors, pAdapt))
return FALSE; return FALSE;
return TRUE; return TRUE;

View File

@ -138,7 +138,4 @@ extern _X_EXPORT Bool xf86XvMCScreenInit(ScreenPtr pScreen,
extern _X_EXPORT XF86MCAdaptorPtr xf86XvMCCreateAdaptorRec(void); extern _X_EXPORT XF86MCAdaptorPtr xf86XvMCCreateAdaptorRec(void);
extern _X_EXPORT void xf86XvMCDestroyAdaptorRec(XF86MCAdaptorPtr adaptor); extern _X_EXPORT void xf86XvMCDestroyAdaptorRec(XF86MCAdaptorPtr adaptor);
typedef int (*XvMCScreenInitProcPtr) (ScreenPtr, int, XvMCAdaptorPtr);
extern _X_EXPORT XvMCScreenInitProcPtr XvMCScreenInitProc;
#endif /* _XF86XVMC_H */ #endif /* _XF86XVMC_H */

View File

@ -181,8 +181,6 @@ extern void PseudoramiXExtensionInit(void);
extern Bool noXvExtension; extern Bool noXvExtension;
extern void XvExtensionInit(void); extern void XvExtensionInit(void);
extern void XvMCExtensionInit(void); extern void XvMCExtensionInit(void);
extern void XvRegister(void);
extern void XvMCRegister(void);
#endif #endif
#endif #endif

View File

@ -413,8 +413,8 @@ static ExtensionModule staticExtensions[] = {
{ResExtensionInit, XRES_NAME, &noResExtension, NULL}, {ResExtensionInit, XRES_NAME, &noResExtension, NULL},
#endif #endif
#ifdef XV #ifdef XV
{XvExtensionInit, XvName, &noXvExtension, XvRegister}, {XvExtensionInit, XvName, &noXvExtension, NULL},
{XvMCExtensionInit, XvMCName, &noXvExtension, XvMCRegister}, {XvMCExtensionInit, XvMCName, &noXvExtension, NULL},
#endif #endif
}; };