aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--xbmc/cores/dvdplayer/DVDMessage.h6
-rw-r--r--xbmc/cores/dvdplayer/DVDMessageQueue.cpp3
-rw-r--r--xbmc/cores/dvdplayer/DVDPlayer.cpp18
-rw-r--r--xbmc/cores/dvdplayer/DVDPlayer.h4
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)