summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan-Marek Glogowski <glogow@fbihome.de>2018-09-11 14:02:22 +0200
committerCaolán McNamara <caolanm@redhat.com>2018-10-11 09:59:40 +0200
commit376a4c754a2bf95b3033b88d68e98a562ba8632b (patch)
tree51eb0b677da35370007834af832615bd027f8e34
parentea4cef9e01b7f5882614426c231f41b522bf34c5 (diff)
tdf#118690 don't try to process all messages
Regression from commit 221b0ab1245b ("WIN use Reschedule instead of own dispatch loops"). This limit the maximum reschedule loops as the original code did. There is still a busy loop when opening the print dialog, as it was before the patch, but this at least gets printing started. Change-Id: If867329b82b13c898bb15b08584244084488a66c Reviewed-on: https://gerrit.libreoffice.org/60310 Tested-by: Jenkins Reviewed-by: Jan-Marek Glogowski <glogow@fbihome.de> (cherry picked from commit 79cb9ef524c3a6b058019da5ca6acfad7a895bf2) Reviewed-on: https://gerrit.libreoffice.org/60941 Reviewed-by: Caolán McNamara <caolanm@redhat.com> Tested-by: Caolán McNamara <caolanm@redhat.com>
-rw-r--r--vcl/win/gdi/salprn.cxx7
1 files changed, 6 insertions, 1 deletions
diff --git a/vcl/win/gdi/salprn.cxx b/vcl/win/gdi/salprn.cxx
index a682f9d33f0a..584bc83087df 100644
--- a/vcl/win/gdi/salprn.cxx
+++ b/vcl/win/gdi/salprn.cxx
@@ -1295,6 +1295,7 @@ BOOL CALLBACK SalPrintAbortProc( HDC hPrnDC, int /* nError */ )
{
SalData* pSalData = GetSalData();
WinSalPrinter* pPrinter;
+ int i = 0;
bool bWhile = true;
// Ensure we handle the mutex which will be released in WinSalInstance::DoYield
@@ -1303,6 +1304,10 @@ BOOL CALLBACK SalPrintAbortProc( HDC hPrnDC, int /* nError */ )
{
// process messages
bWhile = Application::Reschedule( true );
+ if (i > 15)
+ bWhile = false;
+ else
+ ++i;
pPrinter = pSalData->mpFirstPrinter;
while ( pPrinter )
@@ -1465,7 +1470,7 @@ bool WinSalPrinter::StartJob( const OUString* pFileName,
// As the Telecom Balloon Fax driver tends to send messages repeatedly
// we try to process first all, and then insert a dummy message
- while ( Application::Reschedule( true ) );
+ for (int i = 0; Application::Reschedule( true ) && i <= 15; ++i);
BOOL const ret = PostMessageW(GetSalData()->mpInstance->mhComWnd, SAL_MSG_DUMMY, 0, 0);
SAL_WARN_IF(0 == ret, "vcl", "ERROR: PostMessage() failed!");