Title: [219123] trunk/Source/WebCore
- Revision
- 219123
- Author
- an...@apple.com
- Date
- 2017-07-04 15:07:53 -0700 (Tue, 04 Jul 2017)
Log Message
RenderThemeCocoa::mediaControlsFormattedStringForDuration is leaking NSDateComponentsFormatters
https://bugs.webkit.org/show_bug.cgi?id=174138
Reviewed by Ryosuke Niwa.
Saw a random spin here during media playback. Looks like we are leaking.
* rendering/RenderThemeCocoa.h:
* rendering/RenderThemeCocoa.mm:
(WebCore::RenderThemeCocoa::mediaControlsFormattedStringForDuration):
Reuse NSDateComponentsFormatter.
Modified Paths
Diff
Modified: trunk/Source/WebCore/ChangeLog (219122 => 219123)
--- trunk/Source/WebCore/ChangeLog 2017-07-04 20:14:28 UTC (rev 219122)
+++ trunk/Source/WebCore/ChangeLog 2017-07-04 22:07:53 UTC (rev 219123)
@@ -1,5 +1,20 @@
2017-07-04 Antti Koivisto <an...@apple.com>
+ RenderThemeCocoa::mediaControlsFormattedStringForDuration is leaking NSDateComponentsFormatters
+ https://bugs.webkit.org/show_bug.cgi?id=174138
+
+ Reviewed by Ryosuke Niwa.
+
+ Saw a random spin here during media playback. Looks like we are leaking.
+
+ * rendering/RenderThemeCocoa.h:
+ * rendering/RenderThemeCocoa.mm:
+ (WebCore::RenderThemeCocoa::mediaControlsFormattedStringForDuration):
+
+ Reuse NSDateComponentsFormatter.
+
+2017-07-04 Antti Koivisto <an...@apple.com>
+
FrameView should not set RenderView::logicalWidth directly for printing
https://bugs.webkit.org/show_bug.cgi?id=174135
Modified: trunk/Source/WebCore/rendering/RenderThemeCocoa.h (219122 => 219123)
--- trunk/Source/WebCore/rendering/RenderThemeCocoa.h 2017-07-04 20:14:28 UTC (rev 219122)
+++ trunk/Source/WebCore/rendering/RenderThemeCocoa.h 2017-07-04 22:07:53 UTC (rev 219123)
@@ -26,7 +26,12 @@
#pragma once
#include "RenderTheme.h"
+#include <wtf/RetainPtr.h>
+#if ENABLE(MEDIA_CONTROLS_SCRIPT)
+OBJC_CLASS NSDateComponentsFormatter;
+#endif
+
namespace WebCore {
class RenderThemeCocoa : public RenderTheme {
@@ -39,6 +44,9 @@
#if ENABLE(VIDEO)
String mediaControlsFormattedStringForDuration(double) override;
#endif
+#if ENABLE(MEDIA_CONTROLS_SCRIPT)
+ RetainPtr<NSDateComponentsFormatter> m_durationFormatter;
+#endif
};
}
Modified: trunk/Source/WebCore/rendering/RenderThemeCocoa.mm (219122 => 219123)
--- trunk/Source/WebCore/rendering/RenderThemeCocoa.mm 2017-07-04 20:14:28 UTC (rev 219122)
+++ trunk/Source/WebCore/rendering/RenderThemeCocoa.mm 2017-07-04 22:07:53 UTC (rev 219123)
@@ -117,12 +117,14 @@
if (!std::isfinite(durationInSeconds))
return WEB_UI_STRING("indefinite time", "accessibility help text for an indefinite media controller time value");
- NSDateComponentsFormatter *durationFormatter = [NSDateComponentsFormatter new];
- durationFormatter.unitsStyle = NSDateComponentsFormatterUnitsStyleFull;
- durationFormatter.allowedUnits = NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond;
- durationFormatter.formattingContext = NSFormattingContextStandalone;
- durationFormatter.maximumUnitCount = 2;
- return [durationFormatter stringFromTimeInterval:durationInSeconds];
+ if (!m_durationFormatter) {
+ m_durationFormatter = adoptNS([NSDateComponentsFormatter new]);
+ m_durationFormatter.get().unitsStyle = NSDateComponentsFormatterUnitsStyleFull;
+ m_durationFormatter.get().allowedUnits = NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond;
+ m_durationFormatter.get().formattingContext = NSFormattingContextStandalone;
+ m_durationFormatter.get().maximumUnitCount = 2;
+ }
+ return [m_durationFormatter.get() stringFromTimeInterval:durationInSeconds];
#else
return emptyString();
#endif
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes