From 26af06082ab7e7b6003c92592b1634534c83518a Mon Sep 17 00:00:00 2001 From: Jiyeon Kim Date: Tue, 16 Apr 2013 21:07:50 +0900 Subject: [PATCH] MediaSlider was broken occasionally during rebuffering [Title] MediaSlider was broken occasionally during rebuffering [Problem] MediaSlider was broken when seeking and resume in MediaPlayer [Cause] TimeRanges are buffering ranges in gstreamer and it represented start point and end point of buffering. Normally TimeRagnes length is one, but some times TimeRanges is bigger than 1. And that time, there exists difference between first and second timeRanges. [Solution] If there exists difference between first end value of timeRange and second start value of timeRange, second start value is set to first end value. Change-Id: I545cbec95faaae319c52b481e5256dc9e3acfbdd --- Source/WebCore/platform/efl/RenderThemeEfl.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/Source/WebCore/platform/efl/RenderThemeEfl.cpp b/Source/WebCore/platform/efl/RenderThemeEfl.cpp index 691851d..5dc5e20 100755 --- a/Source/WebCore/platform/efl/RenderThemeEfl.cpp +++ b/Source/WebCore/platform/efl/RenderThemeEfl.cpp @@ -1296,6 +1296,9 @@ bool RenderThemeEfl::paintMediaSliderTrack(RenderObject* object, const PaintInfo context->save(); context->setStrokeStyle(NoStroke); +#if ENABLE(TIZEN_GSTREAMER_VIDEO) + float suspendedPoint = 0; +#endif for (unsigned index = 0; index < timeRanges->length(); ++index) { ExceptionCode ignoredException; float start = timeRanges->start(index, ignoredException); @@ -1306,9 +1309,18 @@ bool RenderThemeEfl::paintMediaSliderTrack(RenderObject* object, const PaintInfo rangeRect = trackRect; rangeRect.setWidth(width); } else { +#if ENABLE(TIZEN_GSTREAMER_VIDEO) + if (suspendedPoint != start) { + start = suspendedPoint; + width = ((end - start) * totalWidth) / mediaDuration; + } +#endif rangeRect.setLocation(IntPoint(trackRect.x() + start / mediaDuration* totalWidth, trackRect.y())); rangeRect.setSize(IntSize(width, trackRect.height())); } +#if ENABLE(TIZEN_GSTREAMER_VIDEO) + suspendedPoint = timeRanges->end(index, ignoredException); +#endif // Don't bother drawing empty range. if (rangeRect.isEmpty()) -- 2.7.4