mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
6c9a5ecfd9
Adds a new timer for the RemotePrintJob to notify the nsPagePrintTimer when the last page has finished printing in the parent. Changed the page delay timer to reset the watch dog count on every page to prevent timeouts due to remote printing.
81 lines
2.1 KiB
C++
81 lines
2.1 KiB
C++
/* -*- Mode: C++; tab-width: 2; 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/. */
|
|
#ifndef nsPagePrintTimer_h___
|
|
#define nsPagePrintTimer_h___
|
|
|
|
// Timer Includes
|
|
#include "nsITimer.h"
|
|
|
|
#include "nsIDocumentViewerPrint.h"
|
|
#include "nsPrintObject.h"
|
|
#include "mozilla/Attributes.h"
|
|
#include "nsThreadUtils.h"
|
|
|
|
class nsPrintEngine;
|
|
|
|
//---------------------------------------------------
|
|
//-- Page Timer Class
|
|
//---------------------------------------------------
|
|
class nsPagePrintTimer final : public nsRunnable,
|
|
public nsITimerCallback
|
|
{
|
|
public:
|
|
|
|
NS_DECL_ISUPPORTS_INHERITED
|
|
|
|
nsPagePrintTimer(nsPrintEngine* aPrintEngine,
|
|
nsIDocumentViewerPrint* aDocViewerPrint,
|
|
uint32_t aDelay)
|
|
: mPrintEngine(aPrintEngine)
|
|
, mDocViewerPrint(aDocViewerPrint)
|
|
, mDelay(aDelay)
|
|
, mFiringCount(0)
|
|
, mPrintObj(nullptr)
|
|
, mWatchDogCount(0)
|
|
, mDone(false)
|
|
{
|
|
mDocViewerPrint->IncrementDestroyRefCount();
|
|
}
|
|
|
|
NS_DECL_NSITIMERCALLBACK
|
|
|
|
nsresult Start(nsPrintObject* aPO);
|
|
|
|
NS_IMETHOD Run() override;
|
|
|
|
void Stop();
|
|
|
|
void WaitForRemotePrint();
|
|
void RemotePrintFinished();
|
|
|
|
private:
|
|
~nsPagePrintTimer();
|
|
|
|
nsresult StartTimer(bool aUseDelay);
|
|
nsresult StartWatchDogTimer();
|
|
void StopWatchDogTimer();
|
|
void Fail();
|
|
|
|
nsPrintEngine* mPrintEngine;
|
|
nsCOMPtr<nsIDocumentViewerPrint> mDocViewerPrint;
|
|
nsCOMPtr<nsITimer> mTimer;
|
|
nsCOMPtr<nsITimer> mWatchDogTimer;
|
|
nsCOMPtr<nsITimer> mWaitingForRemotePrint;
|
|
uint32_t mDelay;
|
|
uint32_t mFiringCount;
|
|
nsPrintObject * mPrintObj;
|
|
uint32_t mWatchDogCount;
|
|
bool mDone;
|
|
|
|
static const uint32_t WATCH_DOG_INTERVAL = 1000;
|
|
static const uint32_t WATCH_DOG_MAX_COUNT = 10;
|
|
};
|
|
|
|
|
|
nsresult
|
|
NS_NewPagePrintTimer(nsPagePrintTimer **aResult);
|
|
|
|
#endif /* nsPagePrintTimer_h___ */
|