[MediaRenderer] Fix issues with Mute and Volume apis.
renderers[id].controller.previous();
}
-function mute(id) {
+function setMute(id) {
mute = !mute;
renderers[id].controller.mute(mute);
}
function setSpeed(id) {
- if (speed > 0.9)
- speed = 0.5;
- else
- speed = 1.0;
+ speed = (speed > 1.0) ? 1.0 : 2.0;
renderers[id].controller.setSpeed(speed);
}
function setVolume(id) {
- if (volume > 0.9)
- volume = 0.5;
- else
- volume = 1.0;
+ volume = (volume > 0.5) ? 0.5 : 1.0;
renderers[id].controller.setVolume(volume);
}
function gotoTrack(id) {
- if (track == 1)
- track = 2;
- else
- track = 1;
+ track = (track == 1) ? 2 : 1;
var renderer = renderers[id];
var controller = renderer.controller;
renderers[id].controller.gotoTrack(track);
addButton(rendererControls, event, 'Stop', 'stop(this.id)');
addButton(rendererControls, event, 'Next', 'next(this.id)');
addButton(rendererControls, event, 'Previous', 'openURI(this.id)');
- addButton(rendererControls, event, 'Mute', 'mute(this.id)');
+ addButton(rendererControls, event, 'Mute', 'setMute(this.id)');
addButton(rendererControls, event, 'setSpeed', 'setSpeed(this.id)');
addButton(rendererControls, event, 'setVolume', 'setVolume(this.id)');
addButton(rendererControls, event, 'gotoTrack', 'gotoTrack(this.id)');
picojson::array array;
GVariantIter iter;
GVariant* child;
- gint value;
+ gdouble value;
+
+ if (!values)
+ return picojson::value(array);
g_variant_iter_init(&iter, values);
- while (g_variant_iter_next(&iter, "{d}", &value))
- array.push_back(picojson::value(static_cast<double>(value)));
+ while (g_variant_iter_next(&iter, "d", &value))
+ array.push_back(picojson::value(value));
+
return picojson::value(array);
}
+void
+MediaRenderer::PropertyChanged(GDBusProxy* proxy,
+ GVariant* changed_properties,
+ GStrv invalidated_properties,
+ gpointer user_data) {
+}
+
MediaRenderer::MediaRenderer(common::Instance* instance,
const std::string& object_path)
: instance_(instance),
NULL,
&gerror);
+ g_signal_connect(
+ mprisplayer_proxy_,
+ "g-properties-changed",
+ G_CALLBACK(MediaRenderer::PropertyChanged),
+ this);
+
if (gerror) {
g_error_free(gerror);
return;
(mprismediaplayer2_player_get_current_track(mprisplayer_proxy_)));
controller_object["speed"] = picojson::value(
mprismediaplayer2_player_get_rate(mprisplayer_proxy_));
-
+ controller_object["playSpeeds"] = toJSONValueArray(
+ mprismediaplayer2_player_get_transport_play_speeds(
+ mprisplayer_proxy_));
object_["controller"] = picojson::value(controller_object);
return picojson::value(object_);
mprismediaplayer2_player_set_mute(
mprisplayer_proxy_,
- (gboolean)value.get("mute").get<double>());
+ (gboolean)value.get("mute").get<bool>());
PostResult("setMuteCompleted", value.get("asyncCallId").get<double>());
}
PostError(async_call_id);
return;
}
- mprismediaplayer2_player_set_rate(
+ mprismediaplayer2_player_set_volume(
mprisplayer_proxy_,
value.get("volume").get<double>());
PostResult("setVolumeCompleted", value.get("asyncCallId").get<double>());
void PostResult(const std::string& completed_operation,
double async_operation_id);
void PostError(double async_operation_id);
-
+ static void PropertyChanged(GDBusProxy* proxy, GVariant*, GStrv, gpointer);
CALLBACK_METHOD_WITH_ID(OnOpenURI, GObject*, GAsyncResult*, MediaRenderer);
CALLBACK_METHOD_WITH_ID(OnPrefetchURI, GObject*,
GAsyncResult*, MediaRenderer);
function handleMediaRendererLost(msg) {
var event = new CustomEvent('rendererlost');
- _addConstProperty(event, 'id', msg.lostRendererId);
+ _addConstProperty(event, 'id', msg.rendererId);
g_media_renderer_manager.dispatchEvent(event);
if (g_media_renderer_manager.onrendererlost)
g_media_renderer_manager.onrendererlost(event);
_addConstPropertyFromObject(this, 'deviceType', obj);
_addConstPropertyFromObject(this, 'protocolInfo', obj);
_addConstProperty(this, 'controller', new MediaController(obj.controller));
- this.oncontainerchanged = null;
}
MediaRenderer.prototype.openURI = function(mediaURI, metaData) {
MediaController.prototype.mute = function(mute) {
var msg = {
- 'cmd': 'mute',
+ 'cmd': 'setMute',
'rendererId': this.id,
'mute': mute
};
media_renderer_manager_->HandleNext(v);
else if (cmd == "previous")
media_renderer_manager_->HandlePrevious(v);
- else if (cmd == "mute")
+ else if (cmd == "setMute")
media_renderer_manager_->HandleMute(v);
else if (cmd == "setSpeed")
media_renderer_manager_->HandleSetSpeed(v);