[PATCH 2/3] xfree86: vgaarb: rework wrapping function

Dave Airlie airlied at redhat.com
Thu Sep 10 16:16:17 PDT 2009


On Thu, 2009-09-10 at 17:52 +0300, Tiago Vignatti wrote:
> No semantical changes.

except you changed > 1 to < 2 any reason for that? seems pointless.

with that fixed I'd ack it.

Dave.

> 
> Signed-off-by: Tiago Vignatti <tiago.vignatti at nokia.com>
> ---
>  hw/xfree86/common/xf86Bus.c        |   19 +------
>  hw/xfree86/common/xf86VGAarbiter.c |  107 +++++++++++++++++++++---------------
>  hw/xfree86/common/xf86VGAarbiter.h |    2 +-
>  3 files changed, 66 insertions(+), 62 deletions(-)
> 
> diff --git a/hw/xfree86/common/xf86Bus.c b/hw/xfree86/common/xf86Bus.c
> index f0a0723..9d243c1 100644
> --- a/hw/xfree86/common/xf86Bus.c
> +++ b/hw/xfree86/common/xf86Bus.c
> @@ -521,30 +521,15 @@ xf86PostProbe(void)
>  void
>  xf86PostScreenInit(void)
>  {
> -#ifdef HAVE_PCI_DEVICE_VGAARB_INIT
> -    int vga_count;
> -#endif
>      if (doFramebufferMode) {
>  	SetSIGIOForState(OPERATING);
>  	return;
>      }
>  
> -    /*
> -     * we need to wrap the arbiter if we have more than
> -     * one VGA card - hotplug cries.
> -     */
> -#ifdef HAVE_PCI_DEVICE_VGAARB_INIT
> -    pci_device_vgaarb_get_info(NULL, &vga_count, NULL);
> -    if (vga_count > 1 && xf86Screens) {
> -	int i;
> -	xf86Msg(X_INFO,"Number of VGA devices: %d: arbiter wrapping enabled\n", vga_count);
> -        for (i = 0; i < xf86NumScreens; i++)
> -	    xf86VGAarbiterWrapFunctions(xf86Screens[i]->pScreen);
> -    }
> -#endif
> +    xf86VGAarbiterWrapFunctions();
> +
>      DebugF("PostScreenInit  generation: %i\n",serverGeneration);
>      xf86EnterServerState(OPERATING);
> -    
>  }
>  
>  /*
> diff --git a/hw/xfree86/common/xf86VGAarbiter.c b/hw/xfree86/common/xf86VGAarbiter.c
> index c389739..9b72331 100644
> --- a/hw/xfree86/common/xf86VGAarbiter.c
> +++ b/hw/xfree86/common/xf86VGAarbiter.c
> @@ -35,6 +35,7 @@
>  #ifdef HAVE_PCI_DEVICE_VGAARB_INIT
>  #include "xf86VGAarbiterPriv.h"
>  #include "xf86Bus.h"
> +#include "xf86Priv.h"
>  #include "pciaccess.h"
>  
>  #ifdef DEBUG
> @@ -153,59 +154,77 @@ xf86VGAarbiterDeviceDecodes(ScrnInfoPtr pScrn)
>  }
>  
>  Bool
> -xf86VGAarbiterWrapFunctions(ScreenPtr pScreen)
> +xf86VGAarbiterWrapFunctions(void)
>  {
>      ScrnInfoPtr pScrn;
>      VGAarbiterScreenPtr pScreenPriv;
>      miPointerScreenPtr PointPriv;
>  #ifdef RENDER
> -    PictureScreenPtr    ps = GetPictureScreenIfSet(pScreen);
> +    PictureScreenPtr    ps;
>  #endif
> +    ScreenPtr pScreen;
> +    int vga_count, i;
>  
>      if (vga_no_arb)
> -	return FALSE;
> -
> -    pScrn = xf86Screens[pScreen->myNum];
> -    PointPriv = dixLookupPrivate(&pScreen->devPrivates, miPointerScreenKey);
> -
> -    DPRINT_S("VGAarbiterWrapFunctions",pScreen->myNum);
> -
> -    if (!dixRequestPrivate(VGAarbiterGCKey, sizeof(VGAarbiterGCRec)))
> -    	return FALSE;
> -
> -    if (!(pScreenPriv = xalloc(sizeof(VGAarbiterScreenRec))))
> -    	return FALSE;
> -
> -    dixSetPrivate(&pScreen->devPrivates, VGAarbiterScreenKey, pScreenPriv);
> -
> -    WRAP_SCREEN(CloseScreen, VGAarbiterCloseScreen);
> -    WRAP_SCREEN(SaveScreen, VGAarbiterSaveScreen);
> -    WRAP_SCREEN(WakeupHandler, VGAarbiterWakeupHandler);
> -    WRAP_SCREEN(BlockHandler, VGAarbiterBlockHandler);
> -    WRAP_SCREEN(CreateGC, VGAarbiterCreateGC);
> -    WRAP_SCREEN(GetImage, VGAarbiterGetImage);
> -    WRAP_SCREEN(GetSpans, VGAarbiterGetSpans);
> -    WRAP_SCREEN(SourceValidate, VGAarbiterSourceValidate);
> -    WRAP_SCREEN(CopyWindow, VGAarbiterCopyWindow);
> -    WRAP_SCREEN(ClearToBackground, VGAarbiterClearToBackground);
> -    WRAP_SCREEN(CreatePixmap, VGAarbiterCreatePixmap);
> -    WRAP_SCREEN(StoreColors, VGAarbiterStoreColors);
> -    WRAP_SCREEN(DisplayCursor, VGAarbiterDisplayCursor);
> -    WRAP_SCREEN(RealizeCursor, VGAarbiterRealizeCursor);
> -    WRAP_SCREEN(UnrealizeCursor, VGAarbiterUnrealizeCursor);
> -    WRAP_SCREEN(RecolorCursor, VGAarbiterRecolorCursor);
> -    WRAP_SCREEN(SetCursorPosition, VGAarbiterSetCursorPosition);
> +        return FALSE;
> +
> +    /*
> +     * we need to wrap the arbiter if we have more than
> +     * one VGA card - hotplug cries.
> +     */
> +    pci_device_vgaarb_get_info(NULL, &vga_count, NULL);
> +    if (vga_count < 2 || !xf86Screens)
> +        return FALSE;
> +
> +    xf86Msg(X_INFO,"Found %d VGA devices: arbiter wrapping enabled\n",
> +            vga_count);
> +
> +    for (i = 0; i < xf86NumScreens; i++) {
> +        pScreen = xf86Screens[i]->pScreen;
> +        ps = GetPictureScreenIfSet(pScreen);
> +        pScrn = xf86Screens[pScreen->myNum];
> +        PointPriv = dixLookupPrivate(&pScreen->devPrivates, miPointerScreenKey);
> +
> +        DPRINT_S("VGAarbiterWrapFunctions",pScreen->myNum);
> +
> +        if (!dixRequestPrivate(VGAarbiterGCKey, sizeof(VGAarbiterGCRec)))
> +            return FALSE;
> +
> +        if (!(pScreenPriv = xalloc(sizeof(VGAarbiterScreenRec))))
> +            return FALSE;
> +
> +        dixSetPrivate(&pScreen->devPrivates, VGAarbiterScreenKey, pScreenPriv);
> +
> +        WRAP_SCREEN(CloseScreen, VGAarbiterCloseScreen);
> +        WRAP_SCREEN(SaveScreen, VGAarbiterSaveScreen);
> +        WRAP_SCREEN(WakeupHandler, VGAarbiterWakeupHandler);
> +        WRAP_SCREEN(BlockHandler, VGAarbiterBlockHandler);
> +        WRAP_SCREEN(CreateGC, VGAarbiterCreateGC);
> +        WRAP_SCREEN(GetImage, VGAarbiterGetImage);
> +        WRAP_SCREEN(GetSpans, VGAarbiterGetSpans);
> +        WRAP_SCREEN(SourceValidate, VGAarbiterSourceValidate);
> +        WRAP_SCREEN(CopyWindow, VGAarbiterCopyWindow);
> +        WRAP_SCREEN(ClearToBackground, VGAarbiterClearToBackground);
> +        WRAP_SCREEN(CreatePixmap, VGAarbiterCreatePixmap);
> +        WRAP_SCREEN(StoreColors, VGAarbiterStoreColors);
> +        WRAP_SCREEN(DisplayCursor, VGAarbiterDisplayCursor);
> +        WRAP_SCREEN(RealizeCursor, VGAarbiterRealizeCursor);
> +        WRAP_SCREEN(UnrealizeCursor, VGAarbiterUnrealizeCursor);
> +        WRAP_SCREEN(RecolorCursor, VGAarbiterRecolorCursor);
> +        WRAP_SCREEN(SetCursorPosition, VGAarbiterSetCursorPosition);
>  #ifdef RENDER
> -    WRAP_PICT(Composite,VGAarbiterComposite);
> -    WRAP_PICT(Glyphs,VGAarbiterGlyphs);
> -    WRAP_PICT(CompositeRects,VGAarbiterCompositeRects);
> +        WRAP_PICT(Composite,VGAarbiterComposite);
> +        WRAP_PICT(Glyphs,VGAarbiterGlyphs);
> +        WRAP_PICT(CompositeRects,VGAarbiterCompositeRects);
>  #endif
> -    WRAP_SCREEN_INFO(AdjustFrame, VGAarbiterAdjustFrame);
> -    WRAP_SCREEN_INFO(SwitchMode, VGAarbiterSwitchMode);
> -    WRAP_SCREEN_INFO(EnterVT, VGAarbiterEnterVT);
> -    WRAP_SCREEN_INFO(LeaveVT, VGAarbiterLeaveVT);
> -    WRAP_SCREEN_INFO(FreeScreen, VGAarbiterFreeScreen);
> -    WRAP_SPRITE;
> +        WRAP_SCREEN_INFO(AdjustFrame, VGAarbiterAdjustFrame);
> +        WRAP_SCREEN_INFO(SwitchMode, VGAarbiterSwitchMode);
> +        WRAP_SCREEN_INFO(EnterVT, VGAarbiterEnterVT);
> +        WRAP_SCREEN_INFO(LeaveVT, VGAarbiterLeaveVT);
> +        WRAP_SCREEN_INFO(FreeScreen, VGAarbiterFreeScreen);
> +        WRAP_SPRITE;
> +    }
> +
>      return TRUE;
>  }
>  
> @@ -1152,6 +1171,6 @@ void xf86VGAarbiterUnlock(ScrnInfoPtr pScrn) {}
>  Bool xf86VGAarbiterAllowDRI(ScreenPtr pScreen) { return TRUE; }
>  void xf86VGAarbiterScrnInit(ScrnInfoPtr pScrn) {}
>  void xf86VGAarbiterDeviceDecodes(ScrnInfoPtr pScrn) {}
> -Bool xf86VGAarbiterWrapFunctions(ScreenPtr pScreen) { return FALSE; }
> +Bool xf86VGAarbiterWrapFunctions(void) { return FALSE; }
>  
>  #endif
> diff --git a/hw/xfree86/common/xf86VGAarbiter.h b/hw/xfree86/common/xf86VGAarbiter.h
> index 145d31c..904b6b0 100644
> --- a/hw/xfree86/common/xf86VGAarbiter.h
> +++ b/hw/xfree86/common/xf86VGAarbiter.h
> @@ -34,7 +34,7 @@
>  extern void xf86VGAarbiterInit(void);
>  extern void xf86VGAarbiterFini(void);
>  void xf86VGAarbiterScrnInit(ScrnInfoPtr pScrn);
> -extern Bool xf86VGAarbiterWrapFunctions(ScreenPtr pScreen);
> +extern Bool xf86VGAarbiterWrapFunctions(void);
>  extern void xf86VGAarbiterLock(ScrnInfoPtr pScrn);
>  extern void xf86VGAarbiterUnlock(ScrnInfoPtr pScrn);
>  



More information about the xorg-devel mailing list