[cairo] [PATCH] OS/2 surface fixes
M Joonas Pihlaja
jpihlaja at cc.helsinki.fi
Sun Jul 18 05:03:46 PDT 2010
Hi Dave,
On Sat, 17 Jul 2010, Dave Yeo wrote:
> Hi, as part of https://bugzilla.mozilla.org/show_bug.cgi?id=557159 Rich Walsh
> has fixed some issues in cairo-os2-surface. It would be nice to get these
> applied to master before the next release so they can propagate downstream.
I skimmed OS/2 surface code and the patch this morning. I don't know
anything about OS/2 interfaces so will defer on those bits and leave
it at general comments.
I'd really prefer for the patch to be split up into several logically
independent patches at least. Code cleanups, optimizations, bug
fixes, new API... these are all different things and shouldn't be
rolled into one.
In the small, there are a few bits in the patch I'd not be comfortable
with commiting:
- The introduction of an unindented do {} while (0) block so that new
code can break out of the nonloop. Please use a goto and a
descriptive label instead.
- There's a case of s/status = CAIRO_STATUS_SUCCESS/status = 0/.
- Missing "Since: 1.10" in the docs (once, it says "Since: 1.6"
instead.)
- The set_hps() method should return cairo_status_t since it can fail
rather than some bogus old-HPS. Do we even need to provide access to
the old HPS at all? If we really do, then we should use a separate
getter instead of conflating setting and getting.
- The set_hps() method doesn't check for the surface being finished.
Granted, neither do any of the other os2 surface methods, but they
ought to too.
- It would be good to have some documentation about the ownership
contracts of the OS/2 objects in the surface constructors and setters.
The whole per-surface mutex and event semaphore thing in
cairo-os2-surface.c looks out of place in the backend, since cairo's
internals don't really support concurrent use of a surface, yet
cairo_os2_surface_t seems to encourage and even expect it (cf.
comments concerning the application's PM rendering thread in the
code). While this doesn't have anything to do with the patch itself,
I'm left wondering what kind of concurrency uses the OS/2 surfaces
actually see which would necessitate the semaphores.
Cheers,
Joonas
More information about the cairo
mailing list