[Openchrome-devel] Fix for bug introduced with changeset 1051

Thomas Schlichter thomas.schlichter
Mon Dec 12 07:19:53 PST 2011


Am Montag, 12. Dezember 2011, 15:06:43 schrieb James Simmons:
> Since you posted the patch some more changes have happened. How about the
> below patch. Haven't test it yet.

This patch looks good to me. Thank you!

Kind regards,
  Thomas

> Index: via_memmgr.c
> ===================================================================
> --- via_memmgr.c	(revision 1058)
> +++ via_memmgr.c	(working copy)
> @@ -99,7 +99,6 @@
>  {
>      struct buffer_object *obj = NULL;
>      VIAPtr pVia = VIAPTR(pScrn);
> -    int ret;
> 
>      obj = xnfcalloc(1, sizeof(*obj));
>      if (obj) {
> @@ -109,30 +108,24 @@
>  #ifdef XF86DRI
>              if (pVia->directRenderingType == DRI_1) {
>                  drm_via_mem_t drm;
> +                int ret;
> 
>                  drm.context = DRIGetContext(pScrn->pScreen);
>                  drm.size = size;
>                  drm.type = (domain == TTM_PL_TT ? VIA_MEM_AGP :
> VIA_MEM_VIDEO); ret = drmCommandWriteRead(pVia->drmFD, DRM_VIA_ALLOCMEM,
> &drm, sizeof(drm_via_mem_t)); -                if (ret || (size !=
> drm.size)) {
> +                if (!ret && (size == drm.size)) {
> +                    obj->offset = drm.offset;
> +                    obj->handle = drm.index;
> +                    obj->domain = domain;
> +                    obj->size = drm.size;
> +                    DEBUG(ErrorF("%lu of DRI memory allocated at %lx,
> handle %lu\n", +                                obj->size, obj->offset,
> obj->handle)); +                    break;
> +                } else
>                      DEBUG(ErrorF("DRM memory allocation failed %d\n",
> ret)); -                    /* Try X Offsceen fallback before failing. */ -
>                    if (Success != viaOffScreenLinear(obj, pScrn, size)) { -
>                        ErrorF("Linear memory allocation failed\n"); -      
>                  free(obj);
> -                    }
> -                    return NULL;
> -                }
> -                obj->offset = drm.offset;
> -                obj->handle = drm.index;
> -                obj->domain = domain;
> -                obj->size = drm.size;
> -                DEBUG(ErrorF("%u of DRI memory allocated at %llx, handle
> %lld\n", -                            obj->size, obj->offset,
> obj->handle)); -                return obj;
>              }
> -            break;
>  #endif
>          case TTM_PL_SYSTEM:
>          default:




More information about the Openchrome-devel mailing list