diff options
author | Stephan Bergmann <sbergman@redhat.com> | 2018-10-08 11:21:45 +0200 |
---|---|---|
committer | Stephan Bergmann <sbergman@redhat.com> | 2018-10-08 13:36:58 +0200 |
commit | e659c6a1857fbb8e5a6e8ff60fe241483eea32dd (patch) | |
tree | d8b96a542cf2f91147bbc5d525a41ddbd7d8c2a6 | |
parent | b2d156b6ef3845a2f1f390b1c9b7c202187e6b85 (diff) |
Work around odd macOS 10.14 graphicsContextWithWindow failure
When running on macOS 10.14, both master and libreoffice-6-1 (at least) started
to fail CppunitTest_vcl_bitmap_render_test with
> /Users/stephan/Software/lo2/core/vcl/qa/cppunit/bitmaprender/BitmapRenderTest.cxx:90: Assertion
> Test name: BitmapRenderTest::testTdf113918
> equality assertion failed
> - Expected: mcBlueOrIndex: 255, mcGreen: 255, mcRed: 255, mcAlpha: 0
> - Actual : mcBlueOrIndex: 1, mcGreen: 112, mcRed: 15, mcAlpha: 0
in --enable-debug/--enable-dbgutil builds.
I tracked that down to the OSL_DEBUG_LEVEL>0--only call to
Scheduler::ProcessEventsToIdle in test::BootstrapFixture::setUp
(test/source/bootstrapfixture.cxx). If that call is also included in non-debug
(i.e., OSL_DEBUG_LEVEL=0) builds, or if it is removed from all builds and
instead an unsuspecting
[NSApp nextEventMatchingMask: 0 untilDate: nil inMode: NSDefaultRunLoopMode dequeue: NO];
is added directly before the call to
pVDev->SetOutputSizePixel(Size(2480, 3508));
at the start of BitmapRenderTest::testTdf113918
(vcl/qa/cppunit/bitmaprender/BitmapRenderTest.cxx:76), the test always fails.
What happens is that, after such a nextEventMatchingMask call done, the call to
NSGraphicsContext graphicsContextWithWindow in AquaSalVirtualDevice::SetSize (as
called from the SetOutputSizePixel call in the test) returns nil, for unclear
reasons.
Until those underlying reasons are understood, change the code of SetSize to
"fall back to a bitmap context" also in case the graphicsContextWithWindow call
returned nil.
Change-Id: I604ebd2c444b58610e4ed73ec70af87b0a08e864
Reviewed-on: https://gerrit.libreoffice.org/61519
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
-rw-r--r-- | vcl/quartz/salvd.cxx | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/vcl/quartz/salvd.cxx b/vcl/quartz/salvd.cxx index 77fee8f13d8a..8de6d38ee52d 100644 --- a/vcl/quartz/salvd.cxx +++ b/vcl/quartz/salvd.cxx @@ -273,7 +273,14 @@ bool AquaSalVirtualDevice::SetSize( long nDX, long nDY ) xCGContext = [pNSContext CGContext]; } } - else + // At least on macOS 10.14 during CppunitTests (that have hidden windows), it happens + // that the above + // + // [NSGraphicsContext graphicsContextWithWindow: pNSWindow] + // + // returns nil for unclear reasons; so use the below fallback even if there is a + // pNSWindow but obtaining a graphics context for it fails: + if (xCGContext == nullptr) { // fall back to a bitmap context mnBitmapDepth = 32; |