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

Unified Diff: chrome/browser/printing/print_dialog_gtk.cc

Issue 7639014: Linux: Simplify printing code and make it more reliable during shutdown. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 9 years, 4 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 | « chrome/browser/printing/print_dialog_gtk.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/printing/print_dialog_gtk.cc
===================================================================
--- chrome/browser/printing/print_dialog_gtk.cc (revision 96079)
+++ chrome/browser/printing/print_dialog_gtk.cc (working copy)
@@ -16,7 +16,6 @@
#include "base/file_util.h"
#include "base/file_util_proxy.h"
#include "base/logging.h"
-#include "base/synchronization/waitable_event.h"
#include "base/utf_string_conversions.h"
#include "chrome/browser/ui/browser_list.h"
#include "chrome/browser/ui/browser_window.h"
@@ -133,7 +132,6 @@
}
void PrintDialogGtk::UseDefaultSettings() {
- DCHECK(!save_document_event_.get());
DCHECK(!page_setup_);
// |gtk_settings_| is a new object.
@@ -216,8 +214,6 @@
void PrintDialogGtk::ShowDialog(
PrintingContextCairo::PrintSettingsCallback* callback) {
- DCHECK(!save_document_event_.get());
-
callback_ = callback;
GtkWindow* parent = BrowserList::GetLastActive()->window()->GetNativeHandle();
@@ -256,17 +252,30 @@
// The document printing tasks can outlive the PrintingContext that created
// this dialog.
AddRef();
- DCHECK(!save_document_event_.get());
- save_document_event_.reset(new base::WaitableEvent(false, false));
- BrowserThread::PostTask(
- BrowserThread::FILE, FROM_HERE,
- NewRunnableMethod(this,
- &PrintDialogGtk::SaveDocumentToDisk,
- metafile,
- document_name));
- // Wait for SaveDocumentToDisk() to finish.
- save_document_event_->Wait();
+ bool error = false;
+ if (!file_util::CreateTemporaryFile(&path_to_pdf_)) {
+ LOG(ERROR) << "Creating temporary file failed";
+ error = true;
+ }
+
+ if (!error && !metafile->SaveTo(path_to_pdf_)) {
+ LOG(ERROR) << "Saving metafile failed";
+ file_util::Delete(path_to_pdf_, false);
+ error = true;
+ }
+
+ if (error) {
+ // Matches AddRef() above.
+ Release();
+ } else {
+ // No errors, continue printing.
+ BrowserThread::PostTask(
+ BrowserThread::UI, FROM_HERE,
+ NewRunnableMethod(this,
+ &PrintDialogGtk::SendDocumentToPrinter,
+ document_name));
+ }
}
void PrintDialogGtk::AddRefToDialog() {
@@ -335,38 +344,6 @@
}
}
-void PrintDialogGtk::SaveDocumentToDisk(const printing::Metafile* metafile,
- const string16& document_name) {
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE));
-
- bool error = false;
- if (!file_util::CreateTemporaryFile(&path_to_pdf_)) {
- LOG(ERROR) << "Creating temporary file failed";
- error = true;
- }
-
- if (!error && !metafile->SaveTo(path_to_pdf_)) {
- LOG(ERROR) << "Saving metafile failed";
- file_util::Delete(path_to_pdf_, false);
- error = true;
- }
-
- // Done saving, let PrintDialogGtk::PrintDocument() continue.
- save_document_event_->Signal();
-
- if (error) {
- // Matches AddRef() in PrintDocument();
- Release();
- } else {
- // No errors, continue printing.
- BrowserThread::PostTask(
- BrowserThread::UI, FROM_HERE,
- NewRunnableMethod(this,
- &PrintDialogGtk::SendDocumentToPrinter,
- document_name));
- }
-}
-
void PrintDialogGtk::SendDocumentToPrinter(const string16& document_name) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
« no previous file with comments | « chrome/browser/printing/print_dialog_gtk.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698