From 0f834b91a4768673833ab4917e87d86c237bb1a6 Mon Sep 17 00:00:00 2001 From: marha Date: Fri, 23 Mar 2012 10:05:55 +0100 Subject: libX11 xserver fontconfig mesa pixman xkbcomp xkeyboard-config git update 23 Mar 2012 --- xorg-server/render/filter.c | 339 ++++++++++++++++++++++---------------------- 1 file changed, 168 insertions(+), 171 deletions(-) (limited to 'xorg-server/render/filter.c') diff --git a/xorg-server/render/filter.c b/xorg-server/render/filter.c index c513ee8f9..8c401ee5d 100644 --- a/xorg-server/render/filter.c +++ b/xorg-server/render/filter.c @@ -40,40 +40,39 @@ #include "picturestr.h" static char **filterNames; -static int nfilterNames; +static int nfilterNames; /* * standard but not required filters don't have constant indices */ int -PictureGetFilterId (const char *filter, int len, Bool makeit) +PictureGetFilterId(const char *filter, int len, Bool makeit) { - int i; - char *name; - char **names; + int i; + char *name; + char **names; if (len < 0) - len = strlen (filter); + len = strlen(filter); for (i = 0; i < nfilterNames; i++) - if (!CompareISOLatin1Lowered ((const unsigned char *) filterNames[i], -1, - (const unsigned char *) filter, len)) - return i; + if (!CompareISOLatin1Lowered((const unsigned char *) filterNames[i], -1, + (const unsigned char *) filter, len)) + return i; if (!makeit) - return -1; + return -1; name = malloc(len + 1); if (!name) - return -1; - memcpy (name, filter, len); + return -1; + memcpy(name, filter, len); name[len] = '\0'; if (filterNames) - names = realloc(filterNames, (nfilterNames + 1) * sizeof (char *)); + names = realloc(filterNames, (nfilterNames + 1) * sizeof(char *)); else - names = malloc(sizeof (char *)); - if (!names) - { - free(name); - return -1; + names = malloc(sizeof(char *)); + if (!names) { + free(name); + return -1; } filterNames = names; i = nfilterNames++; @@ -82,77 +81,78 @@ PictureGetFilterId (const char *filter, int len, Bool makeit) } static Bool -PictureSetDefaultIds (void) +PictureSetDefaultIds(void) { /* careful here -- this list must match the #define values */ - if (PictureGetFilterId (FilterNearest, -1, TRUE) != PictFilterNearest) - return FALSE; - if (PictureGetFilterId (FilterBilinear, -1, TRUE) != PictFilterBilinear) - return FALSE; + if (PictureGetFilterId(FilterNearest, -1, TRUE) != PictFilterNearest) + return FALSE; + if (PictureGetFilterId(FilterBilinear, -1, TRUE) != PictFilterBilinear) + return FALSE; - if (PictureGetFilterId (FilterFast, -1, TRUE) != PictFilterFast) - return FALSE; - if (PictureGetFilterId (FilterGood, -1, TRUE) != PictFilterGood) - return FALSE; - if (PictureGetFilterId (FilterBest, -1, TRUE) != PictFilterBest) - return FALSE; + if (PictureGetFilterId(FilterFast, -1, TRUE) != PictFilterFast) + return FALSE; + if (PictureGetFilterId(FilterGood, -1, TRUE) != PictFilterGood) + return FALSE; + if (PictureGetFilterId(FilterBest, -1, TRUE) != PictFilterBest) + return FALSE; - if (PictureGetFilterId (FilterConvolution, -1, TRUE) != PictFilterConvolution) - return FALSE; + if (PictureGetFilterId(FilterConvolution, -1, TRUE) != + PictFilterConvolution) + return FALSE; return TRUE; } char * -PictureGetFilterName (int id) +PictureGetFilterName(int id) { if (0 <= id && id < nfilterNames) - return filterNames[id]; + return filterNames[id]; else - return 0; + return 0; } static void -PictureFreeFilterIds (void) +PictureFreeFilterIds(void) { - int i; + int i; for (i = 0; i < nfilterNames; i++) - free(filterNames[i]); + free(filterNames[i]); free(filterNames); nfilterNames = 0; filterNames = 0; } int -PictureAddFilter (ScreenPtr pScreen, - const char *filter, - PictFilterValidateParamsProcPtr ValidateParams, - int width, - int height) +PictureAddFilter(ScreenPtr pScreen, + const char *filter, + PictFilterValidateParamsProcPtr ValidateParams, + int width, int height) { - PictureScreenPtr ps = GetPictureScreen(pScreen); - int id = PictureGetFilterId (filter, -1, TRUE); - int i; - PictFilterPtr filters; + PictureScreenPtr ps = GetPictureScreen(pScreen); + int id = PictureGetFilterId(filter, -1, TRUE); + int i; + PictFilterPtr filters; if (id < 0) - return -1; + return -1; /* * It's an error to attempt to reregister a filter */ for (i = 0; i < ps->nfilters; i++) - if (ps->filters[i].id == id) - return -1; + if (ps->filters[i].id == id) + return -1; if (ps->filters) - filters = realloc(ps->filters, (ps->nfilters + 1) * sizeof (PictFilterRec)); + filters = + realloc(ps->filters, (ps->nfilters + 1) * sizeof(PictFilterRec)); else - filters = malloc(sizeof (PictFilterRec)); + filters = malloc(sizeof(PictFilterRec)); if (!filters) - return -1; + return -1; ps->filters = filters; i = ps->nfilters++; - ps->filters[i].name = PictureGetFilterName (id); + ps->filters[i].name = PictureGetFilterName(id); ps->filters[i].id = id; ps->filters[i].ValidateParams = ValidateParams; ps->filters[i].width = width; @@ -161,79 +161,76 @@ PictureAddFilter (ScreenPtr pScreen, } Bool -PictureSetFilterAlias (ScreenPtr pScreen, const char *filter, const char *alias) +PictureSetFilterAlias(ScreenPtr pScreen, const char *filter, const char *alias) { - PictureScreenPtr ps = GetPictureScreen(pScreen); - int filter_id = PictureGetFilterId (filter, -1, FALSE); - int alias_id = PictureGetFilterId (alias, -1, TRUE); - int i; + PictureScreenPtr ps = GetPictureScreen(pScreen); + int filter_id = PictureGetFilterId(filter, -1, FALSE); + int alias_id = PictureGetFilterId(alias, -1, TRUE); + int i; if (filter_id < 0 || alias_id < 0) - return FALSE; + return FALSE; for (i = 0; i < ps->nfilterAliases; i++) - if (ps->filterAliases[i].alias_id == alias_id) - break; - if (i == ps->nfilterAliases) - { - PictFilterAliasPtr aliases; - - if (ps->filterAliases) - aliases = realloc(ps->filterAliases, - (ps->nfilterAliases + 1) * - sizeof (PictFilterAliasRec)); - else - aliases = malloc(sizeof (PictFilterAliasRec)); - if (!aliases) - return FALSE; - ps->filterAliases = aliases; - ps->filterAliases[i].alias = PictureGetFilterName (alias_id); - ps->filterAliases[i].alias_id = alias_id; - ps->nfilterAliases++; + if (ps->filterAliases[i].alias_id == alias_id) + break; + if (i == ps->nfilterAliases) { + PictFilterAliasPtr aliases; + + if (ps->filterAliases) + aliases = realloc(ps->filterAliases, + (ps->nfilterAliases + 1) * + sizeof(PictFilterAliasRec)); + else + aliases = malloc(sizeof(PictFilterAliasRec)); + if (!aliases) + return FALSE; + ps->filterAliases = aliases; + ps->filterAliases[i].alias = PictureGetFilterName(alias_id); + ps->filterAliases[i].alias_id = alias_id; + ps->nfilterAliases++; } ps->filterAliases[i].filter_id = filter_id; return TRUE; } PictFilterPtr -PictureFindFilter (ScreenPtr pScreen, char *name, int len) +PictureFindFilter(ScreenPtr pScreen, char *name, int len) { - PictureScreenPtr ps = GetPictureScreen(pScreen); - int id = PictureGetFilterId (name, len, FALSE); - int i; + PictureScreenPtr ps = GetPictureScreen(pScreen); + int id = PictureGetFilterId(name, len, FALSE); + int i; if (id < 0) - return 0; + return 0; /* Check for an alias, allow them to recurse */ for (i = 0; i < ps->nfilterAliases; i++) - if (ps->filterAliases[i].alias_id == id) - { - id = ps->filterAliases[i].filter_id; - i = 0; - } + if (ps->filterAliases[i].alias_id == id) { + id = ps->filterAliases[i].filter_id; + i = 0; + } /* find the filter */ for (i = 0; i < ps->nfilters; i++) - if (ps->filters[i].id == id) - return &ps->filters[i]; + if (ps->filters[i].id == id) + return &ps->filters[i]; return 0; } static Bool -convolutionFilterValidateParams (ScreenPtr pScreen, - int filter, - xFixed *params, - int nparams, - int *width, - int *height) +convolutionFilterValidateParams(ScreenPtr pScreen, + int filter, + xFixed * params, + int nparams, int *width, int *height) { - int w, h; + int w, h; + if (nparams < 3) return FALSE; - if (xFixedFrac (params[0]) || xFixedFrac (params[1])) + if (xFixedFrac(params[0]) || xFixedFrac(params[1])) return FALSE; - w = xFixedToInt (params[0]); - h = xFixedToInt (params[1]); + w = xFixedToInt(params[0]); + h = xFixedToInt(params[1]); nparams -= 2; if (w * h > nparams) @@ -244,117 +241,117 @@ convolutionFilterValidateParams (ScreenPtr pScreen, return TRUE; } - Bool -PictureSetDefaultFilters (ScreenPtr pScreen) +PictureSetDefaultFilters(ScreenPtr pScreen) { if (!filterNames) - if (!PictureSetDefaultIds ()) - return FALSE; - if (PictureAddFilter (pScreen, FilterNearest, 0, 1, 1) < 0) - return FALSE; - if (PictureAddFilter (pScreen, FilterBilinear, 0, 2, 2) < 0) - return FALSE; - - if (!PictureSetFilterAlias (pScreen, FilterNearest, FilterFast)) - return FALSE; - if (!PictureSetFilterAlias (pScreen, FilterBilinear, FilterGood)) - return FALSE; - if (!PictureSetFilterAlias (pScreen, FilterBilinear, FilterBest)) - return FALSE; - - if (PictureAddFilter (pScreen, FilterConvolution, convolutionFilterValidateParams, 0, 0) < 0) + if (!PictureSetDefaultIds()) + return FALSE; + if (PictureAddFilter(pScreen, FilterNearest, 0, 1, 1) < 0) + return FALSE; + if (PictureAddFilter(pScreen, FilterBilinear, 0, 2, 2) < 0) + return FALSE; + + if (!PictureSetFilterAlias(pScreen, FilterNearest, FilterFast)) + return FALSE; + if (!PictureSetFilterAlias(pScreen, FilterBilinear, FilterGood)) + return FALSE; + if (!PictureSetFilterAlias(pScreen, FilterBilinear, FilterBest)) + return FALSE; + + if (PictureAddFilter + (pScreen, FilterConvolution, convolutionFilterValidateParams, 0, 0) < 0) return FALSE; return TRUE; } void -PictureResetFilters (ScreenPtr pScreen) +PictureResetFilters(ScreenPtr pScreen) { - PictureScreenPtr ps = GetPictureScreen(pScreen); + PictureScreenPtr ps = GetPictureScreen(pScreen); free(ps->filters); free(ps->filterAliases); - PictureFreeFilterIds (); + PictureFreeFilterIds(); } int -SetPictureFilter (PicturePtr pPicture, char *name, int len, xFixed *params, int nparams) +SetPictureFilter(PicturePtr pPicture, char *name, int len, xFixed * params, + int nparams) { - PictFilterPtr pFilter; - ScreenPtr pScreen; + PictFilterPtr pFilter; + ScreenPtr pScreen; if (pPicture->pDrawable != NULL) - pScreen = pPicture->pDrawable->pScreen; + pScreen = pPicture->pDrawable->pScreen; else - pScreen = screenInfo.screens[0]; + pScreen = screenInfo.screens[0]; - pFilter = PictureFindFilter (pScreen, name, len); + pFilter = PictureFindFilter(pScreen, name, len); if (!pFilter) - return BadName; - - if (pPicture->pDrawable == NULL) - { - int s; - /* For source pictures, the picture isn't tied to a screen. So, ensure - * that all screens can handle a filter we set for the picture. - */ - for (s = 1; s < screenInfo.numScreens; s++) - { - PictFilterPtr pScreenFilter; - pScreenFilter = PictureFindFilter (screenInfo.screens[s], - name, len); - if (!pScreenFilter || pScreenFilter->id != pFilter->id) - return BadMatch; - } + return BadName; + + if (pPicture->pDrawable == NULL) { + int s; + + /* For source pictures, the picture isn't tied to a screen. So, ensure + * that all screens can handle a filter we set for the picture. + */ + for (s = 1; s < screenInfo.numScreens; s++) { + PictFilterPtr pScreenFilter; + + pScreenFilter = PictureFindFilter(screenInfo.screens[s], name, len); + if (!pScreenFilter || pScreenFilter->id != pFilter->id) + return BadMatch; + } } - return SetPicturePictFilter (pPicture, pFilter, params, nparams); + return SetPicturePictFilter(pPicture, pFilter, params, nparams); } int -SetPicturePictFilter (PicturePtr pPicture, PictFilterPtr pFilter, - xFixed *params, int nparams) +SetPicturePictFilter(PicturePtr pPicture, PictFilterPtr pFilter, + xFixed * params, int nparams) { - ScreenPtr pScreen; - int i; + ScreenPtr pScreen; + int i; if (pPicture->pDrawable) - pScreen = pPicture->pDrawable->pScreen; + pScreen = pPicture->pDrawable->pScreen; else - pScreen = screenInfo.screens[0]; + pScreen = screenInfo.screens[0]; + + if (pFilter->ValidateParams) { + int width, height; - if (pFilter->ValidateParams) - { - int width, height; - if (!(*pFilter->ValidateParams) (pScreen, pFilter->id, params, nparams, &width, &height)) - return BadMatch; + if (!(*pFilter->ValidateParams) + (pScreen, pFilter->id, params, nparams, &width, &height)) + return BadMatch; } else if (nparams) - return BadMatch; - - if (nparams != pPicture->filter_nparams) - { - xFixed *new_params = malloc(nparams * sizeof (xFixed)); - if (!new_params && nparams) - return BadAlloc; - free(pPicture->filter_params); - pPicture->filter_params = new_params; - pPicture->filter_nparams = nparams; + return BadMatch; + + if (nparams != pPicture->filter_nparams) { + xFixed *new_params = malloc(nparams * sizeof(xFixed)); + + if (!new_params && nparams) + return BadAlloc; + free(pPicture->filter_params); + pPicture->filter_params = new_params; + pPicture->filter_nparams = nparams; } for (i = 0; i < nparams; i++) - pPicture->filter_params[i] = params[i]; + pPicture->filter_params[i] = params[i]; pPicture->filter = pFilter->id; - if (pPicture->pDrawable) - { - PictureScreenPtr ps = GetPictureScreen(pScreen); - int result; + if (pPicture->pDrawable) { + PictureScreenPtr ps = GetPictureScreen(pScreen); + int result; - result = (*ps->ChangePictureFilter) (pPicture, pPicture->filter, - params, nparams); - return result; + result = (*ps->ChangePictureFilter) (pPicture, pPicture->filter, + params, nparams); + return result; } return Success; } -- cgit v1.2.3