Modified: tags/Safari-534.49.1/Source/WebCore/platform/mac/CursorMac.mm (92411 => 92412)
--- tags/Safari-534.49.1/Source/WebCore/platform/mac/CursorMac.mm 2011-08-04 21:13:11 UTC (rev 92411)
+++ tags/Safari-534.49.1/Source/WebCore/platform/mac/CursorMac.mm 2011-08-04 21:29:08 UTC (rev 92412)
@@ -52,21 +52,17 @@
return 0;
}
-// Leak these cursors intentionally, that way we won't waste time trying to clean them
-// up at process exit time.
-static NSCursor* leakNamedCursor(const char* name, int x, int y)
+static RetainPtr<NSCursor> createNamedCursor(const char* name, int x, int y)
{
BEGIN_BLOCK_OBJC_EXCEPTIONS;
- NSString* resourceName = [[NSString alloc] initWithUTF8String:name];
- NSImage* cursorImage = [[NSImage alloc] initWithContentsOfFile:
- [[NSBundle bundleForClass:[WebCoreCursorBundle class]]
- pathForResource:resourceName ofType:@"png"]];
- [resourceName release];
- NSCursor* cursor = 0;
+ RetainPtr<NSString> resourceName(AdoptNS, [[NSString alloc] initWithUTF8String:name]);
+ RetainPtr<NSImage> cursorImage(AdoptNS, [[NSImage alloc] initWithContentsOfFile:[[NSBundle bundleForClass:[WebCoreCursorBundle class]] pathForResource:resourceName.get() ofType:@"png"]]);
+
+ RetainPtr<NSCursor> cursor;
+
if (cursorImage) {
NSPoint hotSpotPoint = {x, y}; // workaround for 4213314
- cursor = [[NSCursor alloc] initWithImage:cursorImage hotSpot:hotSpotPoint];
- [cursorImage release];
+ cursor.adoptNS([[NSCursor alloc] initWithImage:cursorImage.get() hotSpot:hotSpotPoint]);
}
return cursor;
END_BLOCK_OBJC_EXCEPTIONS;
@@ -83,67 +79,67 @@
m_platformCursor = [NSCursor arrowCursor];
break;
case Cursor::Cross:
- m_platformCursor = leakNamedCursor("crossHairCursor", 11, 11);
+ m_platformCursor = createNamedCursor("crossHairCursor", 11, 11);
break;
case Cursor::Hand:
- m_platformCursor = leakNamedCursor("linkCursor", 6, 1);
+ m_platformCursor = createNamedCursor("linkCursor", 6, 1);
break;
case Cursor::IBeam:
m_platformCursor = [NSCursor IBeamCursor];
break;
case Cursor::Wait:
- m_platformCursor = leakNamedCursor("waitCursor", 7, 7);
+ m_platformCursor = createNamedCursor("waitCursor", 7, 7);
break;
case Cursor::Help:
- m_platformCursor = leakNamedCursor("helpCursor", 8, 8);
+ m_platformCursor = createNamedCursor("helpCursor", 8, 8);
break;
case Cursor::Move:
case Cursor::MiddlePanning:
- m_platformCursor = leakNamedCursor("moveCursor", 7, 7);
+ m_platformCursor = createNamedCursor("moveCursor", 7, 7);
break;
case Cursor::EastResize:
case Cursor::EastPanning:
- m_platformCursor = leakNamedCursor("eastResizeCursor", 14, 7);
+ m_platformCursor = createNamedCursor("eastResizeCursor", 14, 7);
break;
case Cursor::NorthResize:
case Cursor::NorthPanning:
- m_platformCursor = leakNamedCursor("northResizeCursor", 7, 1);
+ m_platformCursor = createNamedCursor("northResizeCursor", 7, 1);
break;
case Cursor::NorthEastResize:
case Cursor::NorthEastPanning:
- m_platformCursor = leakNamedCursor("northEastResizeCursor", 14, 1);
+ m_platformCursor = createNamedCursor("northEastResizeCursor", 14, 1);
break;
case Cursor::NorthWestResize:
case Cursor::NorthWestPanning:
- m_platformCursor = leakNamedCursor("northWestResizeCursor", 0, 0);
+ m_platformCursor = createNamedCursor("northWestResizeCursor", 0, 0);
break;
case Cursor::SouthResize:
case Cursor::SouthPanning:
- m_platformCursor = leakNamedCursor("southResizeCursor", 7, 14);
+ m_platformCursor = createNamedCursor("southResizeCursor", 7, 14);
break;
case Cursor::SouthEastResize:
case Cursor::SouthEastPanning:
- m_platformCursor = leakNamedCursor("southEastResizeCursor", 14, 14);
+ m_platformCursor = createNamedCursor("southEastResizeCursor", 14, 14);
break;
case Cursor::SouthWestResize:
case Cursor::SouthWestPanning:
- m_platformCursor = leakNamedCursor("southWestResizeCursor", 1, 14);
+ m_platformCursor = createNamedCursor("southWestResizeCursor", 1, 14);
break;
case Cursor::WestResize:
- m_platformCursor = leakNamedCursor("westResizeCursor", 1, 7);
+ m_platformCursor = createNamedCursor("westResizeCursor", 1, 7);
break;
case Cursor::NorthSouthResize:
- m_platformCursor = leakNamedCursor("northSouthResizeCursor", 7, 7);
+ m_platformCursor = createNamedCursor("northSouthResizeCursor", 7, 7);
break;
case Cursor::EastWestResize:
case Cursor::WestPanning:
- m_platformCursor = leakNamedCursor("eastWestResizeCursor", 7, 7);
+ m_platformCursor = createNamedCursor("eastWestResizeCursor", 7, 7);
break;
case Cursor::NorthEastSouthWestResize:
- m_platformCursor = leakNamedCursor("northEastSouthWestResizeCursor", 7, 7);
+ m_platformCursor = createNamedCursor("northEastSouthWestResizeCursor", 7, 7);
break;
case Cursor::NorthWestSouthEastResize:
- m_platformCursor = leakNamedCursor("northWestSouthEastResizeCursor", 7, 7);
+ m_platformCursor = createNamedCursor("northWestSouthEastResizeCursor", 7, 7);
break;
case Cursor::ColumnResize:
m_platformCursor = [NSCursor resizeLeftRightCursor];
@@ -152,37 +148,37 @@
m_platformCursor = [NSCursor resizeUpDownCursor];
break;
case Cursor::VerticalText:
- m_platformCursor = leakNamedCursor("verticalTextCursor", 7, 7);
+ m_platformCursor = createNamedCursor("verticalTextCursor", 7, 7);
break;
case Cursor::Cell:
- m_platformCursor = leakNamedCursor("cellCursor", 7, 7);
+ m_platformCursor = createNamedCursor("cellCursor", 7, 7);
break;
case Cursor::ContextMenu:
- m_platformCursor = leakNamedCursor("contextMenuCursor", 3, 2);
+ m_platformCursor = createNamedCursor("contextMenuCursor", 3, 2);
break;
case Cursor::Alias:
- m_platformCursor = leakNamedCursor("aliasCursor", 11, 3);
+ m_platformCursor = createNamedCursor("aliasCursor", 11, 3);
break;
case Cursor::Progress:
- m_platformCursor = leakNamedCursor("progressCursor", 3, 2);
+ m_platformCursor = createNamedCursor("progressCursor", 3, 2);
break;
case Cursor::NoDrop:
- m_platformCursor = leakNamedCursor("noDropCursor", 3, 1);
+ m_platformCursor = createNamedCursor("noDropCursor", 3, 1);
break;
case Cursor::Copy:
- m_platformCursor = leakNamedCursor("copyCursor", 3, 2);
+ m_platformCursor = createNamedCursor("copyCursor", 3, 2);
break;
case Cursor::None:
- m_platformCursor = leakNamedCursor("noneCursor", 7, 7);
+ m_platformCursor = createNamedCursor("noneCursor", 7, 7);
break;
case Cursor::NotAllowed:
- m_platformCursor = leakNamedCursor("notAllowedCursor", 11, 11);
+ m_platformCursor = createNamedCursor("notAllowedCursor", 11, 11);
break;
case Cursor::ZoomIn:
- m_platformCursor = leakNamedCursor("zoomInCursor", 7, 7);
+ m_platformCursor = createNamedCursor("zoomInCursor", 7, 7);
break;
case Cursor::ZoomOut:
- m_platformCursor = leakNamedCursor("zoomOutCursor", 7, 7);
+ m_platformCursor = createNamedCursor("zoomOutCursor", 7, 7);
break;
case Cursor::Grab:
m_platformCursor = [NSCursor openHandCursor];