Closed Bug 796183 Opened 12 years ago Closed 12 years ago

Updating/invalidation broken for plugins running OOP on OS X

Categories

(Core Graveyard :: Plug-ins, defect)

x86
macOS
defect
Not set
major

Tracking

(firefox18+ verified)

RESOLVED FIXED
Tracking Status
firefox18 + verified

People

(Reporter: smichaud, Assigned: mattwoodrow)

References

()

Details

(Keywords: regression)

Attachments

(1 file)

This started with today's mozilla-central nightly, and specifically with the patch for bug 795796 (http://hg.mozilla.org/mozilla-central/rev/beee809b7ade). To see it, load one of the Flash movies on the following page, and compare what you see with the performance in yesterday's mozilla-central nightly (or in earlier FF distros). In today's nightly, both movies update much less often than they should. http://mirrors.creativecommons.org/ I see this bug on OS X (10.7.5), but not in Windows XP. This bug is spun off from bug 785667.
Blocks: 795796
The bug happens whether or not HiDPI support is enabled. To disable HiDPI support on a Retina display, set gfx.hidpi.enabled to '-1'.
I think this is bug 795796, so it should be fixed in the next nightly.
Status: NEW → RESOLVED
Closed: 12 years ago
Resolution: --- → DUPLICATE
Oh, oops. It's a regression from that bug? Sorry.
Status: RESOLVED → REOPENED
Resolution: DUPLICATE → ---
This bug effects Flash and Silverlight, but not Java. Flash and Silverlight use Core Animation, while Java uses Invalidating Core Animation. I suspect that's the key here. Here's an example of Java animation: http://www.eskimo.com/support/java/demo/Animator/example1.html
Assignee: nobody → matt.woodrow
Status: REOPENED → NEW
Summary: Updating/invalidation broken for at least some plugins on OS X → Updating/invalidation broken for Core Animation plugins on OS X
Severity: normal → major
To make updating work properly in (non invalidating) Core Animation mode, we use a timer to invalidate the plugin "window" every 20 ms: http://hg.mozilla.org/mozilla-central/annotate/345a2a8ccb18/dom/plugins/ipc/PluginInstanceChild.cpp#l553 http://hg.mozilla.org/mozilla-central/annotate/345a2a8ccb18/dom/plugins/ipc/PluginInstanceChild.cpp#l460 I suspect the patch for bug 795796 is somehow preventing most of these invalidations from having effect. (Yes, using a timer to do this is inefficient. And for some time we've also had support for an Invalidating Core Animation mode, in which the plugin is responsible for calling NPN_InvalidateRect() whenever all/part of the plugin needs to be updated: https://wiki.mozilla.org/NPAPI:InvalidatingCoreAnimation. But Flash and Silverlight haven't yet moved to Invalidating Core Animation.)
Summary: Updating/invalidation broken for Core Animation plugins on OS X → Updating/invalidation broken for (non-invalidating) Core Animation plugins on OS X
Core Graphics plugins are also effected by this bug when they run OOP (because we "borrow" the Core Animation infrastructure (using a subclass of CALayer called CGBridgeLayer) to draw Core Animation plugins when they run out-of-process). The only example of a Core Animation plugin that I'm aware of is my Debug Events Plugin from bug 441880, which doesn't do animation. But I've heard there are others out there.
(In reply to Steven Michaud from comment #6) > But Flash and > Silverlight haven't yet moved to Invalidating Core Animation.) I don't know about Silverlight but flash certainly used ICA last time I checked
> The only example of a Core Animation plugin that I'm aware of is my Debug Events > Plugin from bug 441880 ... The only example of a Core *Graphics* plugin ...
> I don't know about Silverlight but flash certainly used ICA last time I checked In my tests for bug 785667 (the latest run about a week ago) I saw Flash and Silverlight use (non-invaliding) Core Animation.
Let me try again, though (in case I made a mistake).
(Following up comment #5) Still compiling my debugging patch. But my hunch is falling apart in other ways: Java plugins by default run in-process (which I'd forgotten). But when I set Java to run out-of-process (by setting dom.ipc.plugins.java.enabled to true), it also fails to update properly. I'll say more when I have a better hunch.
Summary: Updating/invalidation broken for (non-invalidating) Core Animation plugins on OS X → Updating/invalidation broken for plugins running OOP on OS X
I was wrong about which plugins use Core Animation and Invalidating Core Animation. I must have misremembered. Flash does use Invalidating Core Animation. The version I tested with (which I think is current) is 11.4.402.265. Silverlight and Java use (non invalidating) Core Animation.
Thanks for looking into this Steven.
Attachment #667197 - Flags: review?(roc)
Depends on: 797173
Status: NEW → RESOLVED
Closed: 12 years ago12 years ago
Resolution: --- → FIXED
Mozilla/5.0 (Macintosh; Intel Mac OS X 10.7; rv:18.0) Gecko/20100101 Firefox/18.0 Verified as fixed on Firefox 18 beta 2 - flash movies and Silverlight animations are properly updating.
QA Contact: simona.marcu
Product: Core → Core Graveyard
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: