1 // Copyright (c) 2014 Intel Corporation. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include "xwalk/tizen/browser/media/murphy_resource.h"
7 #include "xwalk/tizen/browser/media/browser_mediaplayer_manager.h"
11 const char kMediaStreamName[] = "audio_playback";
13 static void NotifyCallback(mrp_res_context_t* context,
14 const mrp_res_resource_set_t* resource_set,
15 void* callback_data) {
16 tizen::MurphyResource* resource =
17 static_cast<tizen::MurphyResource*> (callback_data);
18 tizen::BrowserMediaPlayerManager* manager = resource->media_player_manager();
22 manager->ResourceNotifyCallback(resource_set->state, resource->player_id());
23 resource->SetResourceState(resource_set->state);
30 MurphyResource::MurphyResource(
31 BrowserMediaPlayerManager* manager,
32 MediaPlayerID player_id,
33 const std::string& app_id,
34 const std::string& app_class,
35 MurphyResourceManager* resource_manager)
37 player_id_(player_id),
38 resource_manager_(resource_manager),
39 resource_state_(MRP_RES_RESOURCE_PENDING) {
40 mrp_res_context_t* context = resource_manager_->GetContext();
44 resource_set_ = mrp_res_create_resource_set(context,
45 app_class.c_str(), NotifyCallback, this);
49 mrp_res_resource_t* resource = mrp_res_create_resource(
50 resource_set_, kMediaStreamName, true, true);
52 mrp_res_attribute_t* attr = mrp_res_get_attribute_by_name(resource, "role");
54 mrp_res_set_attribute_string(attr, app_class.c_str());
56 attr = mrp_res_get_attribute_by_name(resource, "name");
58 mrp_res_set_attribute_string(attr, app_id.c_str());
60 mrp_res_release_resource_set(resource_set_);
63 void MurphyResource::AcquireResource() {
64 if (!resource_manager_ || !resource_set_)
68 mrp_res_acquire_resource_set(resource_set_);
71 void MurphyResource::ReleaseResource() {
72 if (!resource_manager_ || !resource_set_)
76 mrp_res_release_resource_set(resource_set_);
79 MurphyResource::~MurphyResource() {
82 if (!resource_manager_ || !resource_set_)
85 // Delete resource set (and the resource inside it)
86 mrp_res_delete_resource_set(resource_set_);