[Webkit-unassigned] [Bug 33164] New: [WinCairo] Improper Cairo Context Color Depth Sometimes Used

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Mon Jan 4 11:47:08 PST 2010


           Summary: [WinCairo] Improper Cairo Context Color Depth
                    Sometimes Used
           Product: WebKit
           Version: 528+ (Nightly build)
          Platform: PC
        OS/Version: Windows XP
            Status: NEW
          Severity: Normal
          Priority: P2
         Component: WebCore Misc.
        AssignedTo: webkit-unassigned at lists.webkit.org
        ReportedBy: bfulgham at webkit.org

I tracked down the cause of an annoying ASSERTION hit during some WebKit
operations when running under the WinCairo port.  WebKit would assert when
checking that the target bitsPerPixel was 32.

This was caused by two cases:
(1) Sometimes a device context to a 24-bits-per-pixel context was being used
(for example, when printing).
(2) Sometimes a new device context was passed that did not have a corresponding
(existing) bitmap that could be selected from 'GetCurrentObject'.

In the second case, the bitmap structure returned by GetObject was filled with
garbage, causing the assertion and possibly causing construction of extremely
large image surfaces (as the info.bmWidth/bmHeight field were filled in with
uninitialized data).

This patch corrects both problems by confirming that a valid bitmap handle is
returned by GetCurrentObject, and falling back to the default
cairo_win32_surface_create method, which constructs a standard GDI-compatible
24-bits-per-pixel surface from a raw device context handle.

We only want to pay the price of a 32-bit cairo surface for rendering when its
needed, otherwise we take no advantage of native GDI drawing operations inside

Configure bugmail: https://bugs.webkit.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.

More information about the webkit-unassigned mailing list