diff --git a/lib/python/Plugins/Extensions/MediaPlayer/plugin.py b/lib/python/Plugins/Extensions/MediaPlayer/plugin.py
-index 75fba2d..da5ebd4 100644
+index 3fe66af..d366e6e 100755
--- a/lib/python/Plugins/Extensions/MediaPlayer/plugin.py
+++ b/lib/python/Plugins/Extensions/MediaPlayer/plugin.py
@@ -7,7 +7,7 @@ from Screens.HelpMenu import HelpableScreen
ALLOW_SUSPEND = True
ENABLE_RESUME_SUPPORT = True
-@@ -201,6 +201,10 @@ class MediaPlayer(Screen, InfoBarBase, InfoBarSeek, InfoBarAudioSelection, InfoB
+@@ -199,6 +199,10 @@ class MediaPlayer(Screen, InfoBarBase, InfoBarSeek, InfoBarAudioSelection, InfoB
InfoBarSeek.__init__(self, actionmap = "MediaPlayerSeekActions")
self.onClose.append(self.delMPTimer)
self.onClose.append(self.__onClose)
-@@ -234,6 +238,14 @@ class MediaPlayer(Screen, InfoBarBase, InfoBarSeek, InfoBarAudioSelection, InfoB
+@@ -232,6 +236,14 @@ class MediaPlayer(Screen, InfoBarBase, InfoBarSeek, InfoBarAudioSelection, InfoB
iPlayableService.evUser+13: self["coverArt"].embeddedCoverArt
})
def doNothing(self):
pass
-@@ -762,6 +774,7 @@ class MediaPlayer(Screen, InfoBarBase, InfoBarSeek, InfoBarAudioSelection, InfoB
+@@ -759,6 +771,7 @@ class MediaPlayer(Screen, InfoBarBase, InfoBarSeek, InfoBarAudioSelection, InfoB
self.playlist.updateList()
if len(self.playlist) == 1:
self.changeEntry(0)
def addPlaylistParser(self, parser, extension):
self.playlistparsers[extension] = parser
diff --git a/lib/python/Screens/InfoBarGenerics.py b/lib/python/Screens/InfoBarGenerics.py
-index 07fbac8..6ca65e3 100755
+index 80cc196..7abb2ee 100755
--- a/lib/python/Screens/InfoBarGenerics.py
+++ b/lib/python/Screens/InfoBarGenerics.py
@@ -957,14 +957,17 @@ class InfoBarSeek:
self.doSeekRelative(-1)
elif self.isStateForward(seekstate):
speed = seekstate[1]
-diff --git a/lib/service/servicemp3.cpp b/lib/service/servicemp3.cpp
-old mode 100644
-new mode 100755
-index be55d0c..7ce34c1
---- a/lib/service/servicemp3.cpp
-+++ b/lib/service/servicemp3.cpp
-@@ -235,6 +235,7 @@ eServiceMP3::eServiceMP3(eServiceReference ref)
- CONNECT(m_pump.recv_msg, eServiceMP3::gstPoll);
- m_aspect = m_width = m_height = m_framerate = m_progressive = -1;
-
-+ m_cur_rate=1.0;
- m_state = stIdle;
- eDebug("eServiceMP3::construct!");
-
-@@ -517,6 +518,9 @@ RESULT eServiceMP3::unpause()
- if (!m_gst_playbin || m_state != stRunning)
- return -1;
-
-+ if(m_cur_rate!=1.0)
-+ trickSeek(1);
-+
- gst_element_set_state(m_gst_playbin, GST_STATE_PLAYING);
-
- return 0;
-@@ -552,7 +556,7 @@ RESULT eServiceMP3::seekToImpl(pts_t to)
- {
- /* convert pts to nanoseconds */
- gint64 time_nanoseconds = to * 11111LL;
-- if (!gst_element_seek (m_gst_playbin, 1.0, GST_FORMAT_TIME, GST_SEEK_FLAG_FLUSH,
-+ if (!gst_element_seek (m_gst_playbin, m_cur_rate, GST_FORMAT_TIME, GST_SEEK_FLAG_FLUSH,
- GST_SEEK_TYPE_SET, time_nanoseconds,
- GST_SEEK_TYPE_NONE, GST_CLOCK_TIME_NONE))
- {
-@@ -589,19 +593,23 @@ RESULT eServiceMP3::trickSeek(gdouble ratio)
- if (!ratio)
- return seekRelative(0, 0);
-
-+ eSingleLocker l(m_subs_to_pull_lock);
-+
- GstEvent *s_event;
- int flags;
- flags = GST_SEEK_FLAG_NONE;
- flags |= GST_SEEK_FLAG_FLUSH;
- // flags |= GstSeekFlags (GST_SEEK_FLAG_ACCURATE);
-- flags |= GST_SEEK_FLAG_KEY_UNIT;
-+// flags |= GST_SEEK_FLAG_KEY_UNIT;
- // flags |= GstSeekFlags (GST_SEEK_FLAG_SEGMENT);
- // flags |= GstSeekFlags (GST_SEEK_FLAG_SKIP);
-
- GstFormat fmt = GST_FORMAT_TIME;
-- gint64 pos, len;
-+ pts_t pos;
-+ gint64 len;
- gst_element_query_duration(m_gst_playbin, &fmt, &len);
-- gst_element_query_position(m_gst_playbin, &fmt, &pos);
-+ getPlayPosition(pos);
-+ pos=pos*11111;
-
- if ( ratio >= 0 )
- {
-@@ -619,7 +627,11 @@ RESULT eServiceMP3::trickSeek(gdouble ratio)
- eDebug("eServiceMP3::trickSeek failed");
- return -1;
- }
--
-+ m_subtitle_pages.clear();
-+ m_prev_decoder_time = -1;
-+ m_decoder_time_valid_state = 0;
-+ m_subs_to_pull = 0;
-+ m_cur_rate=ratio;
- return 0;
- }
-
-diff --git a/lib/service/servicemp3.h b/lib/service/servicemp3.h
-old mode 100644
-new mode 100755
-index f3cc6dd..07eb321
---- a/lib/service/servicemp3.h
-+++ b/lib/service/servicemp3.h
-@@ -265,6 +265,7 @@ private:
- gint m_aspect, m_width, m_height, m_framerate, m_progressive;
- std::string m_useragent;
- RESULT trickSeek(gdouble ratio);
-+ double m_cur_rate;
- };
-
- #endif
+