/* -*- Mode: C++; tab-width: 20; indent-tabs-mode: nil; c-basic-offset: 2 -*- * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
PrintTargetPDF::~PrintTargetPDF() { // We get called first, then PrintTarget's dtor. That means that mStream // is destroyed before PrintTarget's dtor calls cairo_surface_destroy. This // can be a problem if Finish() hasn't been called on us, since // cairo_surface_destroy will then call cairo_surface_finish and that will // end up invoking write_func above with the by now dangling pointer mStream // that mCairoSurface stored. To prevent that from happening we must call // Flush here before mStream is deleted.
Finish();
}
// The new object takes ownership of our surface reference.
RefPtr<PrintTargetPDF> target = new PrintTargetPDF(surface, aSizeInPoints, aStream); return target.forget();
}
void PrintTargetPDF::Finish() { if (mIsFinished ||
AppShutdown::IsInOrBeyond(ShutdownPhase::AppShutdownConfirmed)) { // We don't want to call Close() on mStream more than once, and we don't // want to block shutdown if for some reason the user shuts down the // browser mid print. return;
}
PrintTarget::Finish();
mStream->Close();
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung ist noch experimentell.