[cairo] [PATCH] OS/2 surface fixes
M Joonas Pihlaja
jpihlaja at cc.helsinki.fi
Sat Aug 7 07:35:48 PDT 2010
I'm mostly offline dealing with other matters, so haven't had the
chance to get back to this until now, but last night I went over your
new patches and put them in a git repo (with some minor
editorializing.) Thanks for sorting out the points brought up before!
I've pushed the commits here, and pending your approval of my minor
edits and commit messages, they'll go right into master:
On 07/24/10 11:12 am, Rich Walsh wrote:
> * os2_regression.diff - patch bed2701..f3dda3c removed a block of code in
> error causing a SIG_SEGV. Patch c10a5a9..56f888cc restored one line of
> code to fix the immediate issue but failed to restore the associated
> error checking. This patch restores the code to its original state.
This is the only patch that IMHO doesn't need to be applied. Namely,
the patch adds surface type checking to the backend's extents method,
but if it happens that the backend methods are called with the wrong
surface type, then that would consistute a bug elsewhere in cairo. I
expect the intention behind the bed2701 commit's edit for this bit of
code (it's a bit of a code dump), was actually to remove the redundant
surface type check. This commit is also in my wip/os2-walsh branch,
but, unless there's some pressing need for it, I'll leave it out of
> * os2_cleanup.diff - this improves error checking, eliminates redundant
> code, and ensures OS/2 APIs are used correctly.
I've split this further into the following commits:
os2: Fix clipping to bounds when blitting pixels.
os2: Tweak an inline declaration.
os2: Consolidate error paths of cairo_os2_surface_create().
os2: Document ownership of OS/2 objects passed to surfaces.
os2: Don't fake an Anchor Block when one isn't needed.
os2: Fix buffer allocator behaviour on arithmetic overflow.
Please check that the splits are sane and that the commit messages
accurately describe what the commit actually is doing and why. I had
to resort to a bit of guesswork for the commit messages. With regards
to the error path consolidation, I moved the _cairo_error() calls
closer to the source of each error and distinguished some error cases
from the default NO_MEMORY error.
> * os2_24bpp.diff - the existing code contains a work-around for older
> * os2_newapi.diff - this introduces 3 new functions to reduce system
These look good to me.
Thanks for your hard work to make good clean patches, and also for
your patience with the feedback! If you could do a final once over
and check that the tip of the wip/os2-walsh branch compiles cleanly
for you, that'd be great and we'll push to master.
More information about the cairo