]> git.tdb.fi Git - xinema.git/blobdiff - source/client.cpp
Locking fix
[xinema.git] / source / client.cpp
index ba0be5b44da51b11af152c59e1c6255c584ac958..8c84e26a7f371a1da9da0f9fdc7bb00488339382 100644 (file)
@@ -16,6 +16,7 @@ Client::Client(Xinema &x, Net::StreamSocket *s):
        socket->signal_end_of_file.connect(sigc::mem_fun(this, &Client::end_of_stream));
 
        xinema.signal_stream_created.connect(sigc::mem_fun(this, &Client::stream_created));
+       xinema.signal_stream_destroyed.connect(sigc::mem_fun(this, &Client::stream_destroyed));
        XineStream *stream = xinema.get_stream();
        if(stream)
                stream_created(*stream);
@@ -132,6 +133,7 @@ void Client::stream_created(XineStream &stream)
        stream.signal_duration_changed.connect(sigc::mem_fun(this, &Client::stream_duration_changed));
        stream.signal_position_changed.connect(sigc::mem_fun(this, &Client::stream_position_changed));
 
+       MutexLock lock(stream.get_mutex());
        stream_state_changed(stream.get_state());
 
        string title = stream.get_title();
@@ -142,6 +144,11 @@ void Client::stream_created(XineStream &stream)
                stream_duration_changed(dur);
 }
 
+void Client::stream_destroyed()
+{
+       send_reply("ejected");
+}
+
 void Client::stream_state_changed(XineStream::State state)
 {
        send_reply(format("state %s", state));