Closed Bug 126578 Opened 23 years ago Closed 22 years ago

Excessive redrawing starting and leaving page with applet

Categories

(Core Graveyard :: Java: OJI, defect)

PowerPC
macOS
defect
Not set
normal

Tracking

(Not tracked)

VERIFIED FIXED
mozilla1.0

People

(Reporter: wilmot, Assigned: bnesse)

References

()

Details

Attachments

(1 file, 2 obsolete files)

From Bugzilla Helper:
User-Agent: Mozilla/4.0 (compatible; MSIE 5.12; Mac_PowerPC)
BuildID:    Netscape 6.2

For any applet, the entire applet gets redrawn when you click on it, and 
redraws three times when you attempt to leave the page. You can try http://
goldbug.com/mrj/properties as an example.

This happens with both the 1.0d7 and 1.0d8 versions of the Java plug-in 
for Mac OS X.

Reproducible: Always
Steps to Reproduce:
To reproduce the bug:
1) Launch Netscape 6.2 with the 1.0d8 Java plug-in on Mac OS X
2) Go to http://goldbug.com/mrj/properties
==> Notice that it redraws twice
3) Click on the applet
==> Notice that the entire applet redraws once
4) Click the "back" button in the browser
==> Notice that the applet redraws _three_times_ before
==> you leave the page. This is the worst of the redraw problems

Actual Results:  The entire applet area redraws excessively

Expected Results:  I would expect it to draw once, not multiple times.
Adding appropriate cc's, and reassigning.
Assignee: joe.chou → bnesse
I verified that this bug also occurs in Mozilla build 2002022008. The redrawing
when leaving the page is not quite as bad, but still excessive. You can try
using /Developer/Examples/Quartz Debug and turning on "Flash screen updates" to
get a better idea of where the unnecessary redraws are happening..
The checkin for bug 129168 went a long way towards fixing this. Following the
steps listed above, the only excess redraw I see now is #3. I assume this is
probably a focus issue of some sort, but don't know for certain.
Status: UNCONFIRMED → NEW
Ever confirmed: true
It appears that the remainder of the updating issues we are seeing come from the
Event Manager biting us in the rear.

At various places in nsObjectFrame on OS 9 we prepare event records for the
plugin by calling OSEventAvail(0, &event); and then plugging in our event info
(i.e. updateEvt, nullEvent, or a mozilla event).

Under OS X we remap the OSEventAvail() call to an EventAvail() call. This is bad
because, yes you've guessed it, EventAvail() gives the system time. What the
system does with this time, unfortunately, is erase the window...

Changing the definition of OSEventAvail from:
  inline Boolean OSEventAvail(EventMask mask, EventRecord* event)
      { return EventAvail(mask, event); }
to:
  inline void OSEventAvail(EventMask mask, EventRecord* event)
      { memset(event, 0, sizeof(EventRecord)); }

eliminates about 98% of the inappropriate screen redrawing.
Attached patch Possible patch (obsolete) — Splinter Review
A slightly more well rounded patch which initializes the EventRecord using
other means.
Attached patch More complete patch (obsolete) — Splinter Review
Going forward on the assumption that this is the right direction... Here is
complete patch that also covers the full page plugin code. Also includes some
whitespace cleanup and an if check that was added to nsObjectFrame, but not
pluginviewer, in bug 129151.
Attachment #73763 - Attachment is obsolete: true
This patch makes it more obvious what we are doing.
Attachment #73931 - Attachment is obsolete: true
Comment on attachment 73980 [details] [diff] [review]
Better patch (ignoring whitespace)

r=sdagley
Attachment #73980 - Flags: review+
Status: NEW → ASSIGNED
Keywords: nsbeta1
Target Milestone: --- → mozilla1.0
Blocks: 88870
Comment on attachment 73980 [details] [diff] [review]
Better patch (ignoring whitespace)

sr=beard
Attachment #73980 - Flags: superreview+
Comment on attachment 73980 [details] [diff] [review]
Better patch (ignoring whitespace)

a=asa (on behalf of drivers) for checkin to the 1.0 trunk
Attachment #73980 - Flags: approval+
Fix checked in.
Status: ASSIGNED → RESOLVED
Closed: 22 years ago
Resolution: --- → FIXED
Verified on mac os 10.1.3 (2002-03-28-08-TRUNK)
Status: RESOLVED → VERIFIED
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: