author | Stephen A Pohl <spohl.mozilla.bugs@gmail.com> |
Wed, 13 Feb 2019 14:16:39 -0500 | |
changeset 458976 | 69e057ca6ad8 |
parent 458975 | fbe70e26f7ff |
child 458977 | f405cc68a129 |
push id | 35553 |
push user | shindli@mozilla.com |
push date | Thu, 14 Feb 2019 04:41:18 +0000 |
treeherder | mozilla-central@f0ea53f47215 [default view] [failures only] |
perfherder | [talos] [build metrics] [platform microbench] (compared to previous push) |
reviewers | mstange |
bugs | 1523944 |
milestone | 67.0a1 |
first release with | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
last release without | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
--- a/widget/cocoa/nsCocoaWindow.h +++ b/widget/cocoa/nsCocoaWindow.h @@ -81,16 +81,18 @@ typedef struct _nsCocoaWindowList { - (void)disableSetNeedsDisplay; - (void)enableSetNeedsDisplay; - (NSRect)getAndResetNativeDirtyRect; - (void)setUseMenuStyle:(BOOL)aValue; +- (void)releaseJSObjects; + @end @interface NSWindow (Undocumented) // If a window has been explicitly removed from the "window cache" (to // deactivate it), it's sometimes necessary to "reset" it to reactivate it // (and put it back in the "window cache"). One way to do this, which Apple // often uses, is to set the "window number" to '-1' and then back to its
--- a/widget/cocoa/nsCocoaWindow.mm +++ b/widget/cocoa/nsCocoaWindow.mm @@ -160,16 +160,17 @@ nsCocoaWindow::nsCocoaWindow() } } void nsCocoaWindow::DestroyNativeWindow() { NS_OBJC_BEGIN_TRY_ABORT_BLOCK; if (!mWindow) return; + [mWindow releaseJSObjects]; // We want to unhook the delegate here because we don't want events // sent to it after this object has been destroyed. [mWindow setDelegate:nil]; [mWindow close]; mWindow = nil; [mDelegate autorelease]; NS_OBJC_END_TRY_ABORT_BLOCK; @@ -3116,16 +3117,20 @@ static const NSString* kStateCollectionB retval = [NSArray arrayWithArray:holder]; } return retval; NS_OBJC_END_TRY_ABORT_BLOCK_NIL; } +- (void)releaseJSObjects { + [mTouchBar releaseJSObjects]; +} + @end // This class allows us to exercise control over the window's title bar. This // allows for a "unified toolbar" look without having to extend the content // area into the title bar. // // Drawing the unified gradient in the titlebar and the toolbar works like this: // 1) In the style sheet we set the toolbar's -moz-appearance to toolbar.
--- a/widget/cocoa/nsTouchBar.h +++ b/widget/cocoa/nsTouchBar.h @@ -168,11 +168,13 @@ typedef NSString* NSTouchBarItemIdentifi sharingServicesForItems:(NSArray*)aItems proposedSharingServices:(NSArray<NSSharingService*>*)aProposedServices; /** * Retrieves TouchBarInput icons. */ + (NSImage*)getTouchBarIconNamed:(NSString*)aImageName; +- (void)releaseJSObjects; + @end // nsTouchBar #endif // nsTouchBar_h_
--- a/widget/cocoa/nsTouchBar.mm +++ b/widget/cocoa/nsTouchBar.mm @@ -187,16 +187,20 @@ static char sIdentifierAssociationKey; if (!input) { return; } nsCOMPtr<nsITouchBarInputCallback> callback = [input callback]; callback->OnCommand(); } +- (void)releaseJSObjects { + mTouchBarHelper = nil; +} + #pragma mark - TouchBar Utilities + (NSImage*)getTouchBarIconNamed:(NSString*)aImageName { nsCOMPtr<nsIFile> resDir; nsAutoCString resPath; NSString* pathToImage; nsresult rv = NS_GetSpecialDirectory(NS_GRE_DIR, getter_AddRefs(resDir));