]> git.tdb.fi Git - xinema.git/blobdiff - source/xinestream.cpp
Use filename as a fallback title if the stream doesn't have one
[xinema.git] / source / xinestream.cpp
index 8099f3b3eb453b0fd4f8ccf9b661b19166d420d9..4fc2e88fa1f569bcf2ef811117d2a02eb8bbef11 100644 (file)
@@ -7,7 +7,9 @@ using namespace Msp;
 
 XineStream::XineStream(XineEngine &e, const string &mrl):
        engine(e),
+       filename(mrl.substr(mrl.rfind('/')+1)),
        state(STOPPED),
+       title(filename),
        current_audio(0),
        current_spu(OFF),
        channels_changed(false)
@@ -22,6 +24,11 @@ XineStream::XineStream(XineEngine &e, const string &mrl):
        engine.add_stream(*this);
 }
 
+const string &XineStream::get_title() const
+{
+       return title.empty() ? filename : title;
+}
+
 XineStream::~XineStream()
 {
        engine.remove_stream(*this);
@@ -120,7 +127,7 @@ void XineStream::update_info()
        {
                MutexLock lock(mutex);
                title = (xt ? xt : string());
-               signal_title_changed.emit(title);
+               signal_title_changed.emit(get_title());
        }
 
        int dur_msec, pos_msec;
@@ -172,16 +179,20 @@ void XineStream::update_channels()
        audio_channels.resize(n_audio);
        for(unsigned i=0; i<n_audio; ++i)
        {
-               xine_get_audio_lang(stream, i, langbuf);
-               audio_channels[i].assign(langbuf);
+               if(xine_get_audio_lang(stream, i, langbuf))
+                       audio_channels[i].assign(langbuf);
+               else
+                       audio_channels[i].assign("unknown");
        }
 
        unsigned n_spu = xine_get_stream_info(stream, XINE_STREAM_INFO_MAX_SPU_CHANNEL);
        spu_channels.resize(n_spu);
        for(unsigned i=0; i<n_spu; ++i)
        {
-               xine_get_spu_lang(stream, i, langbuf);
-               spu_channels[i].assign(langbuf);
+               if(xine_get_spu_lang(stream, i, langbuf))
+                       spu_channels[i].assign(langbuf);
+               else
+                       spu_channels[i].assign("unknown");
        }
 
        signal_channels_changed.emit();