Reviewed by Darin.
authortomernic <tomernic@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 11 May 2006 01:04:45 +0000 (01:04 +0000)
committertomernic <tomernic@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 11 May 2006 01:04:45 +0000 (01:04 +0000)
commitb899ba9827133cbf6fc8678a5f3de74a458a9a7c
tree661a8fcbb1e7248ec57393138d80586b7d381579
parentc8ab1d964a592a2c2260726d6165220a2661e13c
    Reviewed by Darin.

        <rdar://problem/4542808> REGRESSION: benchjs test 1 has slowed by over 150% (8740)
        <http://bugzilla.opendarwin.org/show_bug.cgi?id=8740>

        * Misc/WebNSWindowExtras.h:
        * Misc/WebNSWindowExtras.m:
        (+[NSWindow _webkit_enableWindowDisplayThrottle]):
        Overrides certain NSWindow methods so that window autodisplay can be throttled to 60Hz.

        (disableWindowDisplayThrottleApplierFunction):
        CFDictionary applier function for when the throttle is disabled.  Cancels all pending window displays,
        and calls -displayIfNeeded on each window with a pending display.

        (+[NSWindow _webkit_disableWindowDisplayThrottle]):
        Restores default NSWindow method implementations and clears pending window displays.

        (swizzleInstanceMethod):
        Helper function to swizzle ObjC method implementations.

        (replacementPostWindowNeedsDisplay):
        Don't call into -[NSWindow _postWindowNeedsDisplay] if requestWindowDisplay() returns NO (this is the
        function that throttles display).

        (replacementClose):
        Clean up the WindowDisplayInfo struct for the window, since it's about to go away.

        (getWindowDisplayInfo):
        Gets the WindowDisplayInfo struct for the window, or creates it if absent.

        (requestWindowDisplay):
        Returns YES if a display is allowed right now.  Returns NO otherwise, and schedules a timer to try the
        display again.

        (cancelPendingWindowDisplay):
        Cancels the pending display for the window, if any.

        (-[NSWindow _webkit_doPendingPostWindowNeedsDisplay:]):
        Try to call _postWindowNeedsDisplay again.

        * WebView/WebFrameView.m:
        (-[WebFrameView initWithFrame:]):
        If the secret "WebKitThrottleWindowDisplay" default is set, then enable the NSWindow throttle.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@14293 268f45cc-cd09-0410-ab3c-d52691b4dbfc
WebKit/ChangeLog
WebKit/Misc/WebNSWindowExtras.h
WebKit/Misc/WebNSWindowExtras.m
WebKit/WebView/WebFrameView.m