From 3975779fc246351e5db79352379d2247e905b1e1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stephan=20A=C3=9Fmus?= Date: Tue, 14 Sep 2010 20:18:34 +0000 Subject: [PATCH] Use the exact time the event was supposed to fire, not the current real time. If I understand things correctly, using the mechanism to send a MessageEvent is just there to invoke SetPerformanceTime() within the PlaybackManager BLooper (I could be mistaken). Need to check whether this fixes a drift in audio and video I am often observing. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38655 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- .../mediaplayer/media_node_framework/PlaybackManager.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/apps/mediaplayer/media_node_framework/PlaybackManager.cpp b/src/apps/mediaplayer/media_node_framework/PlaybackManager.cpp index 7b8f231c90..e9690301a6 100644 --- a/src/apps/mediaplayer/media_node_framework/PlaybackManager.cpp +++ b/src/apps/mediaplayer/media_node_framework/PlaybackManager.cpp @@ -208,12 +208,13 @@ PlaybackManager::MessageReceived(BMessage* message) break; } -// bigtime_t eventTime; -// message->FindInt64("time", &eventTime); - bigtime_t now = system_time(); + bigtime_t eventTime; + message->FindInt64("time", &eventTime); +// bigtime_t now = system_time(); fPerformanceTimeEvent = NULL; - SetPerformanceTime(TimeForRealTime(now)); +// SetPerformanceTime(TimeForRealTime(now)); + SetPerformanceTime(TimeForRealTime(eventTime)); //TRACE("MSG_EVENT: rt: %lld, pt: %lld\n", now, fPerformanceTime); //printf("MSG_EVENT: et: %lld, rt: %lld, pt: %lld\n", eventTime, now, fPerformanceTime); break;