From 2e76b1f79a8207718adc5b02a19be0ba86015d31 Mon Sep 17 00:00:00 2001 From: trialuser02 Date: Thu, 11 Aug 2011 16:21:51 +0000 Subject: 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 --- src/plugins/Transports/mms/mmsstreamreader.cpp | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) (limited to 'src') 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(); -- cgit v1.2.3-13-gbd6f