Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(178)

Side by Side Diff: chromecast/browser/media/cast_mojo_media_application.cc

Issue 1854893002: [chromecast] Bind and run mojo media services on cma thread. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: cleaned up deps Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2016 The Chromium Authors. 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.
4
5 #include "chromecast/browser/media/cast_mojo_media_application.h"
6
7 #include "base/bind.h"
8 #include "base/bind_helpers.h"
9 #include "chromecast/browser/media/cast_mojo_media_client.h"
10 #include "media/base/media_log.h"
11 #include "media/mojo/services/service_factory_impl.h"
12 #include "mojo/shell/public/cpp/connection.h"
13
14 namespace chromecast {
15 namespace media {
16
17 CastMojoMediaApplication::CastMojoMediaApplication(
18 scoped_ptr<CastMojoMediaClient> mojo_media_client,
19 scoped_refptr<base::SingleThreadTaskRunner> media_task_runner)
20 : mojo_media_client_(std::move(mojo_media_client)),
21 media_task_runner_(media_task_runner),
22 media_log_(new ::media::MediaLog()) {
23 DCHECK(mojo_media_client_);
24 DCHECK(media_task_runner_);
25 }
26
27 CastMojoMediaApplication::~CastMojoMediaApplication() {}
28
29 void CastMojoMediaApplication::Initialize(mojo::Connector* connector,
30 const mojo::Identity& identity,
31 uint32_t /* id */) {}
32
33 bool CastMojoMediaApplication::AcceptConnection(mojo::Connection* connection) {
34 connection->AddInterface<::media::interfaces::ServiceFactory>(this);
35 return true;
36 }
37
38 void CastMojoMediaApplication::Create(
39 mojo::Connection* connection,
40 mojo::InterfaceRequest<::media::interfaces::ServiceFactory> request) {
41 if (media_task_runner_->BelongsToCurrentThread()) {
42 // The created object is owned by the pipe.
43 new ::media::ServiceFactoryImpl(
44 std::move(request), connection->GetRemoteInterfaces(), media_log_,
45 ref_factory_.CreateRef(), mojo_media_client_.get());
46 } else {
47 media_task_runner_->PostTask(
48 FROM_HERE,
49 base::Bind(&CastMojoMediaApplication::Create, base::Unretained(this),
halliwell 2016/04/05 00:01:56 I'm not familiar with the lifetime of 'this' - is
alokp 2016/04/05 05:27:16 It wasn't. In fact there was another bug that woul
50 connection, base::Passed(&request)));
51 }
52 }
53
54 } // namespace media
55 } // namespace chromecast
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698