aboutsummaryrefslogtreecommitdiff
path: root/src/plugins/Transports/mms/mmsstreamreader.cpp
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2011-08-11 16:21:51 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2011-08-11 16:21:51 +0000
commit2e76b1f79a8207718adc5b02a19be0ba86015d31 (patch)
treef9c7cfc10e81cc7997dd3344e39f7bc6d8a83c4f /src/plugins/Transports/mms/mmsstreamreader.cpp
parent346e73641a966045d9dbdc1461ae1b8a188e6539 (diff)
downloadqmmp-2e76b1f79a8207718adc5b02a19be0ba86015d31.tar.gz
qmmp-2e76b1f79a8207718adc5b02a19be0ba86015d31.tar.bz2
qmmp-2e76b1f79a8207718adc5b02a19be0ba86015d31.zip
added buffer to mms reader
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@2297 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src/plugins/Transports/mms/mmsstreamreader.cpp')
-rw-r--r--src/plugins/Transports/mms/mmsstreamreader.cpp11
1 files changed, 8 insertions, 3 deletions
diff --git a/src/plugins/Transports/mms/mmsstreamreader.cpp b/src/plugins/Transports/mms/mmsstreamreader.cpp
index 4d4ce34af..b50450a83 100644
--- a/src/plugins/Transports/mms/mmsstreamreader.cpp
+++ b/src/plugins/Transports/mms/mmsstreamreader.cpp
@@ -1,5 +1,5 @@
/***************************************************************************
- * Copyright (C) 2006-2008 by Ilya Kotov *
+ * Copyright (C) 2006-2011 by Ilya Kotov *
* forkotov02@hotmail.ru *
* *
* This program is free software; you can redistribute it and/or modify *
@@ -135,6 +135,8 @@ qint64 MMSStreamReader::bytesAvailable() const
void MMSStreamReader::run()
{
+ int to_read = 1024;
+ char prebuf[to_read];
m_handle = mmsx_connect (0, 0, m_url.toLocal8Bit().constData(), 128 * 1024);
if(!m_handle)
{
@@ -155,13 +157,15 @@ void MMSStreamReader::run()
forever
{
m_mutex.lock();
- int to_read = 1024;
+
if(m_buffer_at + to_read > m_buffer_size)
{
m_buffer_size = m_buffer_at + to_read;
m_buffer = (char *)realloc(m_buffer, m_buffer_size);
}
- len = mmsx_read (0, m_handle, m_buffer + m_buffer_at, to_read);
+ m_mutex.unlock();
+ len = mmsx_read (0, m_handle, prebuf, to_read);
+ m_mutex.lock();
if(len < 0)
{
m_mutex.unlock();
@@ -173,6 +177,7 @@ void MMSStreamReader::run()
}
break;
}
+ memcpy(m_buffer + m_buffer_at, prebuf, len);
m_buffer_at += len;
if(!m_ready)
checkBuffer();