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

Unified Diff: media/mojo/services/mojo_media_application.cc

Issue 1200323003: media: Quit MojoMediaApplication when no service is bound. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase only Created 5 years, 5 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « media/mojo/services/mojo_media_application.h ('k') | media/mojo/services/mojo_renderer_service.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: media/mojo/services/mojo_media_application.cc
diff --git a/media/mojo/services/mojo_media_application.cc b/media/mojo/services/mojo_media_application.cc
index 72871e83de7cfe04bf2e2a3866aef6b86fb80546..fe5bdde13f9ee483449da807f9a26755855985f9 100644
--- a/media/mojo/services/mojo_media_application.cc
+++ b/media/mojo/services/mojo_media_application.cc
@@ -4,6 +4,7 @@
#include "media/mojo/services/mojo_media_application.h"
+#include "base/command_line.h"
#include "base/logging.h"
#include "media/mojo/services/mojo_cdm_service.h"
#include "media/mojo/services/mojo_renderer_service.h"
@@ -13,6 +14,10 @@
namespace media {
const char kMojoMediaAppUrl[] = "mojo:media";
+const int kIdleTimeoutInSeconds = 30;
+
+// Switch to enable fast application destruction (for testing).
+const char kFastAppDestruction[] = "fast-media-app-destruction";
// static
GURL MojoMediaApplication::AppUrl() {
@@ -24,18 +29,28 @@ scoped_ptr<mojo::ApplicationDelegate> MojoMediaApplication::CreateApp() {
return scoped_ptr<mojo::ApplicationDelegate>(new MojoMediaApplication());
}
-MojoMediaApplication::MojoMediaApplication() {
+MojoMediaApplication::MojoMediaApplication()
+ : app_impl_(nullptr),
+ release_delay_(base::TimeDelta::FromSeconds(kIdleTimeoutInSeconds)) {
}
MojoMediaApplication::~MojoMediaApplication() {
}
void MojoMediaApplication::Initialize(mojo::ApplicationImpl* app) {
+ app_impl_ = app;
+
logging::LoggingSettings settings;
settings.logging_dest = logging::LOG_TO_SYSTEM_DEBUG_LOG;
logging::InitLogging(settings);
// Display process ID, thread ID and timestamp in logs.
logging::SetLogItems(true, true, true, false);
+
+ // Put this check here instead of in the constructor because |this| can be
+ // constructed before the command line is initialized.
+ // See ApplicationRunner::InitBaseCommandLine().
+ if (base::CommandLine::ForCurrentProcess()->HasSwitch(kFastAppDestruction))
+ release_delay_ = base::TimeDelta();
}
bool MojoMediaApplication::ConfigureIncomingConnection(
@@ -49,14 +64,18 @@ void MojoMediaApplication::Create(
mojo::ApplicationConnection* connection,
mojo::InterfaceRequest<mojo::ContentDecryptionModule> request) {
// The created object is owned by the pipe.
- new MojoCdmService(&cdm_service_context_, request.Pass());
+ new MojoCdmService(
+ request.Pass(), &cdm_service_context_,
+ app_impl_->app_lifetime_helper()->CreateAppRefCount(release_delay_));
}
void MojoMediaApplication::Create(
mojo::ApplicationConnection* connection,
mojo::InterfaceRequest<mojo::MediaRenderer> request) {
// The created object is owned by the pipe.
- new MojoRendererService(&cdm_service_context_, request.Pass());
+ new MojoRendererService(
+ request.Pass(), &cdm_service_context_,
+ app_impl_->app_lifetime_helper()->CreateAppRefCount(release_delay_));
}
} // namespace media
« no previous file with comments | « media/mojo/services/mojo_media_application.h ('k') | media/mojo/services/mojo_renderer_service.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698