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

Unified Diff: ppapi/native_client/src/trusted/plugin/pnacl_streaming_translate_thread.cc

Issue 10843009: Better handling of surfaway/reload in PNaCl translation (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 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
Index: ppapi/native_client/src/trusted/plugin/pnacl_streaming_translate_thread.cc
diff --git a/ppapi/native_client/src/trusted/plugin/pnacl_streaming_translate_thread.cc b/ppapi/native_client/src/trusted/plugin/pnacl_streaming_translate_thread.cc
index 3f4a968ad96c3fbc2a9175dfb60b7785b170a5af..64d6bd45620138a8a0ea06c7a7134bd0cc0a11f9 100644
--- a/ppapi/native_client/src/trusted/plugin/pnacl_streaming_translate_thread.cc
+++ b/ppapi/native_client/src/trusted/plugin/pnacl_streaming_translate_thread.cc
@@ -17,7 +17,12 @@ PnaclStreamingTranslateThread::PnaclStreamingTranslateThread() : done_(false) {
NaClXCondVarCtor(&buffer_cond_);
}
-PnaclStreamingTranslateThread::~PnaclStreamingTranslateThread() {}
+PnaclStreamingTranslateThread::~PnaclStreamingTranslateThread() {
+ PLUGIN_PRINTF(("~PnaclTranslateThread (translate_thread=%p)\n", this));
+ SetSubprocessesShouldDie();
+ NaClThreadJoin(translate_thread_.get());
+ PLUGIN_PRINTF(("~PnaclTranslateThread joined\n"));
+}
void PnaclStreamingTranslateThread::RunTranslate(
const pp::CompletionCallback& finish_callback,
@@ -103,6 +108,7 @@ void PnaclStreamingTranslateThread::DoTranslate() {
PluginReverseInterface* llc_reverse =
llc_subprocess->service_runtime()->rev_interface();
llc_reverse->AddTempQuotaManagedFile(obj_file_->identifier());
+ RegisterReverseInterface(llc_reverse);
if (!llc_subprocess->InvokeSrpcMethod("StreamInit",
"h",
@@ -142,6 +148,10 @@ void PnaclStreamingTranslateThread::DoTranslate() {
} else {
NaClXMutexUnlock(&cond_mu_);
}
+ if (SubprocessesShouldDie()) {
+ TranslateFailed("Stopped by coordinator.");
+ return;
+ }
}
PLUGIN_PRINTF(("PnaclTranslateThread done with chunks\n"));
// Finish llc.
@@ -162,6 +172,7 @@ void PnaclStreamingTranslateThread::DoTranslate() {
lib_dependencies.c_str()));
// Shut down the llc subprocess.
+ RegisterReverseInterface(NULL);
llc_subprocess.reset(NULL);
if (SubprocessesShouldDie()) {
TranslateFailed("stopped by coordinator.");

Powered by Google App Engine
This is Rietveld 408576698