diff options
-rw-r--r-- | xbmc/cores/dvdplayer/DVDMessage.h | 6 | ||||
-rw-r--r-- | xbmc/cores/dvdplayer/DVDMessageQueue.cpp | 3 | ||||
-rw-r--r-- | xbmc/cores/dvdplayer/DVDPlayer.cpp | 18 | ||||
-rw-r--r-- | xbmc/cores/dvdplayer/DVDPlayer.h | 4 |
4 files changed, 12 insertions, 19 deletions
diff --git a/xbmc/cores/dvdplayer/DVDMessage.h b/xbmc/cores/dvdplayer/DVDMessage.h index 6846ea3207..582cd2753f 100644 --- a/xbmc/cores/dvdplayer/DVDMessage.h +++ b/xbmc/cores/dvdplayer/DVDMessage.h @@ -130,10 +130,10 @@ public: /** * decrease the reference counter by one. */ - long Acquire() + CDVDMsg* Acquire() { - long count = InterlockedIncrement(&m_references); - return count; + InterlockedIncrement(&m_references); + return this; } /** diff --git a/xbmc/cores/dvdplayer/DVDMessageQueue.cpp b/xbmc/cores/dvdplayer/DVDMessageQueue.cpp index 4778042e19..d7802c5e37 100644 --- a/xbmc/cores/dvdplayer/DVDMessageQueue.cpp +++ b/xbmc/cores/dvdplayer/DVDMessageQueue.cpp @@ -290,8 +290,7 @@ void CDVDMessageQueue::WaitUntilEmpty() { CLog::Log(LOGNOTICE, "CDVDMessageQueue(%s)::WaitUntilEmpty", m_owner.c_str()); CDVDMsgGeneralSynchronize* msg = new CDVDMsgGeneralSynchronize(40000, 0); - msg->Acquire(); - Put(msg); + Put(msg->Acquire()); msg->Wait(&m_bAbortRequest, 0); msg->Release(); } diff --git a/xbmc/cores/dvdplayer/DVDPlayer.cpp b/xbmc/cores/dvdplayer/DVDPlayer.cpp index 3d0a8a6117..9e8b098556 100644 --- a/xbmc/cores/dvdplayer/DVDPlayer.cpp +++ b/xbmc/cores/dvdplayer/DVDPlayer.cpp @@ -1588,8 +1588,7 @@ void CDVDPlayer::SyncronizeDemuxer(DWORD timeout) return; CDVDMsgGeneralSynchronize* message = new CDVDMsgGeneralSynchronize(timeout, 0); - message->Acquire(); - m_messenger.Put(message); + m_messenger.Put(message->Acquire()); message->Wait(&m_bStop, 0); message->Release(); } @@ -1612,27 +1611,24 @@ void CDVDPlayer::SyncronizePlayers(DWORD sources, double pts) CDVDMsgGeneralSynchronize* message = new CDVDMsgGeneralSynchronize(timeout, sources); if (m_CurrentAudio.id >= 0) { - message->Acquire(); m_CurrentAudio.dts = DVD_NOPTS_VALUE; m_CurrentAudio.startpts = pts; - m_CurrentAudio.startsync = message; + m_CurrentAudio.startsync = message->Acquire(); } if (m_CurrentVideo.id >= 0) { - message->Acquire(); m_CurrentVideo.dts = DVD_NOPTS_VALUE; m_CurrentVideo.startpts = pts; - m_CurrentVideo.startsync = message; + m_CurrentVideo.startsync = message->Acquire(); } /* TODO - we have to rewrite the sync class, to not require all other players waiting for subtitle, should only be the oposite way if (m_CurrentSubtitle.id >= 0) { - message->Acquire(); m_CurrentSubtitle.dts = DVD_NOPTS_VALUE; m_CurrentSubtitle.startpts = pts; - m_CurrentSubtitle.startsync = message; + m_CurrentSubtitle.startsync = message->Acquire(); } */ message->Release(); @@ -2724,10 +2720,8 @@ void CDVDPlayer::FlushBuffers(bool queued) // make sure players are properly flushed, should put them in stalled state CDVDMsgGeneralSynchronize* msg = new CDVDMsgGeneralSynchronize(1000, 0); - msg->Acquire(); - m_dvdPlayerAudio.m_messageQueue.Put(msg, 1); - msg->Acquire(); - m_dvdPlayerVideo.m_messageQueue.Put(msg, 1); + m_dvdPlayerAudio.m_messageQueue.Put(msg->Acquire(), 1); + m_dvdPlayerVideo.m_messageQueue.Put(msg->Acquire(), 1); msg->Wait(&m_bStop, 0); msg->Release(); diff --git a/xbmc/cores/dvdplayer/DVDPlayer.h b/xbmc/cores/dvdplayer/DVDPlayer.h index bc603df393..ff75b9e909 100644 --- a/xbmc/cores/dvdplayer/DVDPlayer.h +++ b/xbmc/cores/dvdplayer/DVDPlayer.h @@ -64,8 +64,8 @@ public: bool inited; const StreamType type; // stuff to handle starting after seek - double startpts; - CDVDMsgGeneralSynchronize* startsync; + double startpts; + CDVDMsg* startsync; CCurrentStream(StreamType t) : type(t) |