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

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: Created 5 years, 6 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
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..18c8d9cda2f62879e019a7410174cb15135a3d2b 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-app-destruction";
sandersd (OOO until July 31) 2015/06/30 21:32:47 Perhaps too generic a name for a media-specific fl
xhwang 2015/07/07 20:29:24 Picked fast-media-app-destruction to make it more
// static
GURL MojoMediaApplication::AppUrl() {
@@ -24,18 +29,25 @@ 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);
+
+ if (base::CommandLine::ForCurrentProcess()->HasSwitch(kFastAppDestruction))
sandersd (OOO until July 31) 2015/06/30 21:32:47 It's a little strange to have this in Initialize()
xhwang 2015/07/07 20:29:24 No. Added comment to explain that.
+ release_delay_ = base::TimeDelta();
}
bool MojoMediaApplication::ConfigureIncomingConnection(
@@ -49,14 +61,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

Powered by Google App Engine
This is Rietveld 408576698