-#include <msp/io/print.h>
+#include <msp/strings/format.h>
#include "xineengine.h"
#include "xinestream.h"
if(s==state)
return;
+ MutexLock lock(mutex);
state = s;
signal_state_changed.emit(state);
}
void XineStream::check_info()
{
const char *xt = xine_get_meta_info(stream, XINE_META_INFO_TITLE);
- if(xt)
+ if((xt && title.compare(xt)) || (!xt && !title.empty()))
{
- if(title.compare(xt))
- {
- title = xt;
- signal_title_changed.emit(title);
- }
- }
- else if(!title.empty())
- {
- title.clear();
+ MutexLock lock(mutex);
+ title = (xt ? xt : string());
signal_title_changed.emit(title);
}
Time::TimeDelta pos = pos_msec*Time::msec;
if(dur!=duration)
{
+ MutexLock lock(mutex);
duration = dur;
signal_duration_changed.emit(duration);
}
if(pos!=position)
{
+ MutexLock lock(mutex);
position = pos;
signal_position_changed.emit(position);
}
{
case XINE_EVENT_UI_PLAYBACK_FINISHED:
set_state(STOPPED);
- break;
- case XINE_EVENT_PROGRESS:
- {
- xine_progress_data_t *data = reinterpret_cast<xine_progress_data_t *>(event.data);
- IO::print("%s [%d%%]\n", data->description, data->percent);
- }
+ signal_finished.emit();
break;
}
}