diff options
| author | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2011-08-11 16:21:51 +0000 |
|---|---|---|
| committer | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2011-08-11 16:21:51 +0000 |
| commit | 2e76b1f79a8207718adc5b02a19be0ba86015d31 (patch) | |
| tree | f9c7cfc10e81cc7997dd3344e39f7bc6d8a83c4f /src/plugins/Transports/mms | |
| parent | 346e73641a966045d9dbdc1461ae1b8a188e6539 (diff) | |
| download | qmmp-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')
| -rw-r--r-- | src/plugins/Transports/mms/mmsstreamreader.cpp | 11 |
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(); |
