canvas' drawwindow is broken on Intel Mac

RESOLVED FIXED

Status

()

Core
Canvas: 2D
--
critical
RESOLVED FIXED
12 years ago
12 years ago

People

(Reporter: Brade, Assigned: Brade)

Tracking

({fixed1.8.1, verified1.8.0.5})

Trunk
PowerPC
Mac OS X
fixed1.8.1, verified1.8.0.5
Points:
---
Bug Flags:
blocking1.8.1 ?
blocking1.8.0.5 +

Firefox Tracking Flags

(Not tracked)

Details

(Whiteboard: [need testcase])

Attachments

(1 attachment)

(Assignee)

Description

12 years ago
The colors are all wrong when calling DrawWindow() on an Intel Mac.  The problem seems to be that nsCanvasRenderingContext2D::DrawNativeSurfaces() assumes that the byte order in the native image matches the machine's byte order (which is not the case on Intel Mac).

patch coming...
(Assignee)

Updated

12 years ago
Status: NEW → ASSIGNED
Hardware: Other → Macintosh
(Assignee)

Comment 1

12 years ago
Created attachment 222128 [details] [diff] [review]
patch v1
Attachment #222128 - Flags: review?
(Assignee)

Updated

12 years ago
Attachment #222128 - Flags: superreview?(roc)
Attachment #222128 - Flags: review?(pavlov)
Attachment #222128 - Flags: review?

Comment 2

12 years ago
From: http://developer.apple.com/documentation/MacOSX/Conceptual/universal_binary/universal_binary_tips/chapter_5_section_15.html

  "By default, NewGWorld always creates big-endian pixel formats
   (k16BE555PixelFormat or k32ARGBPixelFormat), regardless of the
   endian format of the system."

And:

   "For best performance, it is generally preferable for you to use
    a pixel format that corresponds to the native byte ordering of the
    system. When you pass kNativeEndianPixMap in the flags parameter to
    NewGWorld, the byte ordering of the pixel format is big-endian on
    big-endian systems, and little-endian on little-endian systems."

But kNativeEndianPixMap is not used in the Mozilla code, so big-endian it is.
Attachment #222128 - Flags: superreview?(roc) → superreview+
Comment on attachment 222128 [details] [diff] [review]
patch v1

r=me;this might re-break once mac goes cairo, but I suspect a lot of this code will change heavily then anyway.

Asking for 1.8.1; small change, fixes mac issue.
Attachment #222128 - Flags: review?(pavlov)
Attachment #222128 - Flags: review+
Attachment #222128 - Flags: approval-branch-1.8.1?
(Assignee)

Comment 4

12 years ago
Comment on attachment 222128 [details] [diff] [review]
patch v1

Given that the fix only affects Intel Mac and is just a byte-order correction, is it possible to land this for 1.5.0.x Firefox release?

We have many people requesting an Intel Mac version of our Page Saver extension but this bug makes saved images nearly useless for them.  It also affects all extensions that use canvas.drawWindow().
Attachment #222128 - Flags: approval1.8.0.5?
Attachment #222128 - Flags: approval1.8.0.4?
(Assignee)

Comment 5

12 years ago
fix checked into trunk
Status: ASSIGNED → RESOLVED
Last Resolved: 12 years ago
Resolution: --- → FIXED
Comment on attachment 222128 [details] [diff] [review]
patch v1

We have 1.8.0.4 in-hand already, unfortunately this is not a stop-ship and missed the boat
Attachment #222128 - Flags: approval1.8.0.4?
Flags: blocking1.8.0.5?

Comment 7

12 years ago
(In reply to comment #1)
> Created an attachment (id=222128) [edit]
> patch v1
> 


I'm experiencing the color-problem on my MacBook Pro. Firefox 1.5.0.3 is running fine but I use "reveal" and "tab preview" and the colors of the thumbs are wrong.
In 16,7mio colors mode every thumb is very cyan and in 32768 colors mode the thumbs are magenta.

Will the fix be approved for the branches (so it will make it into an
upcoming Firefox release)?  I think many Mac-users would apreciate it.

Comment 8

12 years ago
This bug is really annoying. The tab-previews with wrong colors are pretty useless!
(Assignee)

Updated

12 years ago
Flags: blocking1.8.1?
Comment on attachment 222128 [details] [diff] [review]
patch v1

approved for 1.8.0 branch, a=dveditz for drivers
Attachment #222128 - Flags: approval1.8.0.5?
Attachment #222128 - Flags: approval1.8.0.5+
Attachment #222128 - Flags: approval-branch-1.8.1?
Attachment #222128 - Flags: approval-branch-1.8.1+
Flags: blocking1.8.0.5? → blocking1.8.0.5+
(Assignee)

Comment 10

12 years ago
Checked in:
  nsCanvasRenderingContext2D.cpp 1.22.2.9 (branch for 1.8.1+)
  nsCanvasRenderingContext2D.cpp 1.22.2.3.2.3 (branch for 1.8.0.5)
Keywords: fixed1.8.0.5, fixed1.8.1

Updated

12 years ago
Whiteboard: [need testcase]

Comment 11

12 years ago
The testcase that Ted Mielczarek attached to bug 298375 can be used to verify this bug as well.  Attachment 213143 [details]:
  https://bugzilla.mozilla.org/attachment.cgi?id=213143&action=view
(requires signed.applets.codebase_principal_support=true)
verified fixed on the 1.8.0 branch using Mozilla/5.0 (Macintosh; U; Intel Mac OS X; en-US; rv:1.8.0.5) Gecko/20060706 Firefox/1.5.0.5. I used the test case cited in Comment 11 with the about:config pref change and I do see the two red boxes.
Keywords: fixed1.8.0.5 → verified1.8.0.5
You need to log in before you can comment on or make changes to this bug.