diff --git a/ext/libclementine-remote/remotecontrolmessages.proto b/ext/libclementine-remote/remotecontrolmessages.proto index cbce974ae..5501402ca 100644 --- a/ext/libclementine-remote/remotecontrolmessages.proto +++ b/ext/libclementine-remote/remotecontrolmessages.proto @@ -276,7 +276,7 @@ message RequestRateSong { // The message itself message Message { - optional int32 version = 1 [default=12]; + optional int32 version = 1 [default=13]; optional MsgType type = 2 [default=UNKNOWN]; // What data is in the message? optional RequestConnect request_connect = 21; diff --git a/src/networkremote/outgoingdatacreator.cpp b/src/networkremote/outgoingdatacreator.cpp index a4ef55c1c..ce28beb4a 100644 --- a/src/networkremote/outgoingdatacreator.cpp +++ b/src/networkremote/outgoingdatacreator.cpp @@ -509,11 +509,16 @@ void OutgoingDataCreator::UpdateTrackPosition() { pb::remote::Message msg; msg.set_type(pb::remote::UPDATE_TRACK_POSITION); - const int position = std::floor( + int position = std::floor( float(app_->player()->engine()->position_nanosec()) / kNsecPerSec + 0.5); + if (app_->player()->engine()->position_nanosec() > current_song_.length_nanosec()) + position = last_track_position_; + msg.mutable_response_update_track_position()->set_position(position); + last_track_position_ = position; + SendDataToClients(&msg); } diff --git a/src/networkremote/outgoingdatacreator.h b/src/networkremote/outgoingdatacreator.h index cddabca43..270835a0e 100644 --- a/src/networkremote/outgoingdatacreator.h +++ b/src/networkremote/outgoingdatacreator.h @@ -85,6 +85,7 @@ private: QTimer* track_position_timer_; int keep_alive_timeout_; QMap > download_queue_; + int last_track_position_; boost::scoped_ptr ultimate_reader_; ProviderList provider_list_;