Changeset 104409 in webkit


Ignore:
Timestamp:
Jan 8, 2012 1:44:52 PM (12 years ago)
Author:
mitz@apple.com
Message:

REGRESSION (r103859): WKViews leak
https://bugs.webkit.org/show_bug.cgi?id=75805

The flags changed event monitor added in r103859 was retaining the WKView (as it references
self in the handler block), causing it to leak.

  • UIProcess/API/mac/WKView.mm:

(-[WKView dealloc]): Moved call to remove the flags changed event monitor from here...
(-[WKView viewDidMoveToWindow]): ...to here. Moved call to add the flags changed event
monitor to here from...
(-[WKView initWithFrame:contextRef:pageGroupRef:]): ...here.

Location:
trunk/Source/WebKit2
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit2/ChangeLog

    r104377 r104409  
     12012-01-08  Dan Bernstein  <mitz@apple.com>
     2
     3        REGRESSION (r103859): WKViews leak
     4        https://bugs.webkit.org/show_bug.cgi?id=75805
     5
     6        The flags changed event monitor added in r103859 was retaining the WKView (as it references
     7        self in the handler block), causing it to leak.
     8
     9        * UIProcess/API/mac/WKView.mm:
     10        (-[WKView dealloc]): Moved call to remove the flags changed event monitor from here...
     11        (-[WKView viewDidMoveToWindow]): ...to here. Moved call to add the flags changed event
     12        monitor to here from...
     13        (-[WKView initWithFrame:contextRef:pageGroupRef:]): ...here.
     14
    1152012-01-06  Mark Rowe  <mrowe@apple.com>
    216
  • trunk/Source/WebKit2/UIProcess/API/mac/WKView.mm

    r104022 r104409  
    226226{
    227227    _data->_page->close();
    228     [NSEvent removeMonitor:_data->_flagsChangedEventMonitor];
    229228
    230229    ASSERT(!_data->_inSecureInputState);
     
    18241823        [self _updateWindowVisibility];
    18251824        [self _updateWindowAndViewFrames];
    1826        
    1827         [self _accessibilityRegisterUIProcessTokens];           
     1825
     1826        _data->_flagsChangedEventMonitor = [NSEvent addLocalMonitorForEventsMatchingMask:NSFlagsChangedMask handler:^(NSEvent *flagsChangedEvent) {
     1827            [self _postFakeMouseMovedEventForFlagsChangedEvent:flagsChangedEvent];
     1828            return flagsChangedEvent;
     1829        }];
     1830
     1831        [self _accessibilityRegisterUIProcessTokens];
    18281832    } else {
    18291833        _data->_page->viewStateDidChange(WebPageProxy::ViewIsVisible);
    18301834        _data->_page->viewStateDidChange(WebPageProxy::ViewWindowIsActive | WebPageProxy::ViewIsInWindow);
     1835
     1836        [NSEvent removeMonitor:_data->_flagsChangedEventMonitor];
     1837        _data->_flagsChangedEventMonitor = nil;
    18311838
    18321839#if ENABLE(GESTURE_EVENTS)
     
    27042711    _data->_mouseDownEvent = nil;
    27052712    _data->_ignoringMouseDraggedEvents = NO;
    2706     _data->_flagsChangedEventMonitor = [NSEvent addLocalMonitorForEventsMatchingMask:NSFlagsChangedMask handler:^(NSEvent *flagsChangedEvent) {
    2707         [self _postFakeMouseMovedEventForFlagsChangedEvent:flagsChangedEvent];
    2708         return flagsChangedEvent;
    2709     }];
    27102713
    27112714    [self _registerDraggedTypes];
Note: See TracChangeset for help on using the changeset viewer.