class QWidget { }; class QThread { }; class QTime { public: QTime() { } QTime addMSecs( int ms ) ; unsigned ds; }; typedef struct xine_stream_s xine_stream_t; int xine_get_pos_length (xine_stream_t *stream, int *pos_stream, int *pos_time, int *length_time); void xine_usec_sleep(unsigned usec); class KXineWidget : public QWidget, private QThread { QTime getLengthInfo(); static QTime msToTime(int msec); xine_stream_t* m_xineStream; }; QTime KXineWidget::getLengthInfo() { int pos; int time; int length; int t = 0; int ret = 0; while(((ret = xine_get_pos_length(m_xineStream, &pos, &time, &length)) == 0) && (++t < 5)) xine_usec_sleep(100000); if ( (ret != 0) && (length > 0) ) { return msToTime(length); } } QTime KXineWidget::msToTime(int msec) { QTime t; t = t.addMSecs(msec); return t; }