Modified: trunk/Source/WebCore/ChangeLog (180117 => 180118)
--- trunk/Source/WebCore/ChangeLog 2015-02-15 02:42:19 UTC (rev 180117)
+++ trunk/Source/WebCore/ChangeLog 2015-02-15 04:44:49 UTC (rev 180118)
@@ -1,3 +1,23 @@
+2015-02-14 Joseph Pecoraro <pecor...@apple.com>
+
+ IncompleteMetaDataCue leak seen on leaks bot
+ https://bugs.webkit.org/show_bug.cgi?id=141611
+
+ Reviewed by Eric Carlson.
+
+ * platform/graphics/avfoundation/InbandMetadataTextTrackPrivateAVF.h:
+ (WebCore::IncompleteMetaDataCue::IncompleteMetaDataCue): Deleted.
+ (WebCore::IncompleteMetaDataCue::~IncompleteMetaDataCue): Deleted.
+ (WebCore::IncompleteMetaDataCue::cueData): Deleted.
+ (WebCore::IncompleteMetaDataCue::startTime): Deleted.
+ Convert to a struct and hold a list of structs instead of pointers.
+
+ * platform/graphics/avfoundation/InbandMetadataTextTrackPrivateAVF.cpp:
+ (WebCore::InbandMetadataTextTrackPrivateAVF::addDataCue):
+ (WebCore::InbandMetadataTextTrackPrivateAVF::updatePendingCueEndTimes):
+ (WebCore::InbandMetadataTextTrackPrivateAVF::flushPartialCues):
+ Update use of IncompleteMetaDataCue and modernize related code.
+
2015-02-09 Brian J. Burg <b...@cs.washington.edu>
Web Inspector: remove some unnecessary Inspector prefixes from class names in Inspector namespace
Modified: trunk/Source/WebCore/platform/graphics/avfoundation/InbandMetadataTextTrackPrivateAVF.cpp (180117 => 180118)
--- trunk/Source/WebCore/platform/graphics/avfoundation/InbandMetadataTextTrackPrivateAVF.cpp 2015-02-15 02:42:19 UTC (rev 180117)
+++ trunk/Source/WebCore/platform/graphics/avfoundation/InbandMetadataTextTrackPrivateAVF.cpp 2015-02-15 04:44:49 UTC (rev 180118)
@@ -64,18 +64,16 @@
RefPtr<SerializedPlatformRepresentation> cueData = prpCueData;
m_currentCueStartTime = start;
if (end.isPositiveInfinite())
- m_incompleteCues.append(new IncompleteMetaDataCue(start, cueData));
+ m_incompleteCues.append(IncompleteMetaDataCue { cueData.get(), start });
client()->addDataCue(this, start, end, cueData, type);
}
void InbandMetadataTextTrackPrivateAVF::updatePendingCueEndTimes(const MediaTime& time)
{
if (time >= m_currentCueStartTime) {
- for (size_t i = 0; i < m_incompleteCues.size(); i++) {
- IncompleteMetaDataCue* partialCue = m_incompleteCues[i];
-
- LOG(Media, "InbandMetadataTextTrackPrivateAVF::addDataCue(%p) - updating cue: start=%s, end=%s", this, toString(partialCue->startTime()).utf8().data(), toString(time).utf8().data());
- client()->updateDataCue(this, partialCue->startTime(), time, partialCue->cueData());
+ for (auto& partialCue : m_incompleteCues) {
+ LOG(Media, "InbandMetadataTextTrackPrivateAVF::addDataCue(%p) - updating cue: start=%s, end=%s", this, toString(partialCue.startTime).utf8().data(), toString(time).utf8().data());
+ client()->updateDataCue(this, partialCue.startTime, time, partialCue.cueData);
}
} else
LOG(Media, "InbandMetadataTextTrackPrivateAVF::addDataCue negative length cue(s) ignored: start=%s, end=%s\n", toString(m_currentCueStartTime).utf8().data(), toString(time).utf8().data());
@@ -91,10 +89,8 @@
LOG(Media, "InbandMetadataTextTrackPrivateAVF::resetCueValues flushing incomplete data for cues: start=%s\n", toString(m_currentCueStartTime).utf8().data());
if (client()) {
- for (size_t i = 0; i < m_incompleteCues.size(); i++) {
- IncompleteMetaDataCue* partialCue = m_incompleteCues[i];
- client()->removeDataCue(this, partialCue->startTime(), MediaTime::positiveInfiniteTime(), partialCue->cueData());
- }
+ for (auto& partialCue : m_incompleteCues)
+ client()->removeDataCue(this, partialCue.startTime, MediaTime::positiveInfiniteTime(), partialCue.cueData);
}
m_incompleteCues.resize(0);
Modified: trunk/Source/WebCore/platform/graphics/avfoundation/InbandMetadataTextTrackPrivateAVF.h (180117 => 180118)
--- trunk/Source/WebCore/platform/graphics/avfoundation/InbandMetadataTextTrackPrivateAVF.h 2015-02-15 02:42:19 UTC (rev 180117)
+++ trunk/Source/WebCore/platform/graphics/avfoundation/InbandMetadataTextTrackPrivateAVF.h 2015-02-15 04:44:49 UTC (rev 180118)
@@ -33,21 +33,9 @@
namespace WebCore {
#if ENABLE(DATACUE_VALUE)
-class IncompleteMetaDataCue {
-public:
- IncompleteMetaDataCue(const MediaTime& time, PassRefPtr<SerializedPlatformRepresentation> cueData)
- : m_cueData(cueData)
- , m_startTime(time)
- {
- }
- ~IncompleteMetaDataCue() { }
-
- RefPtr<SerializedPlatformRepresentation> cueData() const { return m_cueData; }
- MediaTime startTime() const { return m_startTime; }
-
-private:
- RefPtr<SerializedPlatformRepresentation> m_cueData;
- MediaTime m_startTime;
+struct IncompleteMetaDataCue {
+ RefPtr<SerializedPlatformRepresentation> cueData;
+ MediaTime startTime;
};
#endif
@@ -77,7 +65,7 @@
AtomicString m_inBandMetadataTrackDispatchType;
MediaTime m_currentCueStartTime;
#if ENABLE(DATACUE_VALUE)
- Vector<IncompleteMetaDataCue*> m_incompleteCues;
+ Vector<IncompleteMetaDataCue> m_incompleteCues;
#endif
};