Re: patch: quartz - fallback when source/mask has CAIRO_EXTEND_PAD and they are surface type

Andrea Canciani <[email protected]>
Newsgroups gmane.comp.lib.cairo
Message-ID <CAN_5=BAnn5Ezne58-+N23ObrmO+TLUe4VshUyaG7HqrA2GoAgQ@mail.gmail.com>
On Tue, Jul 24, 2012 at 4:20 PM, Henry (Yu) Song - SISA
<[email protected]> wrote:
> Hi, Andrea
>
> How about the other patch that fixes crashes for all record test cases?

I pushed it with a slightly different commit message:

commit 44a07a66135c4f534c909bd84f24cf7c0275a914
Author: Henry (Yu) Song - SISA <[email protected]>
Date:   Mon Jul 23 16:28:28 2012 +0000

    quartz: Never acquire recording surfaces

    We need to replay if the source/mask surface is a recording surface
    otherwise, a crash happens if it is unbounded.

    Fixes crashes in recordxx-xxx tests

I also pushed the one for transforming clip paths and another patch to
respect the scaling when replaying recording surfaces in quartz.

Andrea

>
> Thanks
>
> Henry
> ________________________________________
> From: Andrea Canciani [[email protected]]
> Sent: Tuesday, July 24, 2012 2:39 AM
> To: Henry (Yu) Song - SISA
> Cc: [email protected]
> Subject: Re: [cairo] patch: quartz - fallback when source/mask has CAIRO_EXTEND_PAD and they are surface type
>
> Thanks for your patches!
> I tested and pushed them (with minor whitespace and commit message changes).
>
> On Mon, Jul 23, 2012 at 9:35 PM, Henry (Yu) Song - SISA
> <[email protected]> wrote:
>> commit 20d3005bc98d0f75606c67175ec73a9ce3827e31
>> Author: Henry Song <[email protected]>
>> Date:   Mon Jul 23 12:33:45 2012 -0700
>>
>>     quartz:  quartz does not handle CAIRO_EXTEND_PAD, let's fallback
>
> I had posted a patch to do the same, but the Mozilla guys did not want
> the fallback to happen.
>
>>
>> diff --git a/src/cairo-quartz-surface.c b/src/cairo-quartz-surface.c
>> index 28bdae6..471c95d 100644
>> --- a/src/cairo-quartz-surface.c
>> +++ b/src/cairo-quartz-surface.c
>> @@ -1139,6 +1139,15 @@ _cairo_quartz_setup_state (cairo_quartz_drawing_state_t *state,
>>      state->cgDrawContext = NULL;
>>      state->cgMaskContext = NULL;
>>
>> +    /* FIXME: ideally, we should use CIImage's CIAffineClamp for
>> +       CAIRO_EXTEND_PAD
>> +     */
>
> A related issue happens for repeated images, which are interpolated in
> the inside but not across the image edges.
> Maybe both can be fixed using CIImage... but is it possible to use it
> without using Objective-C?
> Another thing I wanted to look into was modifying the dataprovider to
> handle repeat/pad.
>
>> +    if ((composite->source_pattern.base.type == CAIRO_PATTERN_TYPE_SURFACE &&
>> +        composite->source_pattern.base.extend == CAIRO_EXTEND_PAD) ||
>> +       (composite->mask_pattern.base.type == CAIRO_PATTERN_TYPE_SURFACE &&
>> +        composite->mask_pattern.base.extend == CAIRO_EXTEND_PAD))
>> +       return CAIRO_INT_STATUS_UNSUPPORTED;
>> +
>>      status = _cairo_surface_clipper_set_clip (&surface->clipper, clip);
>>      if (unlikely (status))
>>         return status;
>> --
>> cairo mailing list
>> [email protected]
>> http://lists.cairographics.org/mailman/listinfo/cairo
-- 
cairo mailing list
[email protected]
http://lists.cairographics.org/mailman/listinfo/cairo
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.