[Libreoffice-commits] core.git: 11 commits - desktop/source distro-configs/LibreOfficeiOS.conf ios/UnitTest libreofficekit/qa vcl/quartz

Libreoffice Gerrit user logerrit at kemper.freedesktop.org
Fri Oct 5 17:26:50 UTC 2018


 desktop/source/lib/init.cxx                     |    4 
 distro-configs/LibreOfficeiOS.conf              |    1 
 ios/UnitTest/UnitTest.xcodeproj/project.pbxproj |  340 ++++++++++++++++++++++++
 libreofficekit/qa/tilebench/tilebench.cxx       |   10 
 vcl/quartz/salgdi.cxx                           |   38 ++
 vcl/quartz/salgdicommon.cxx                     |  157 -----------
 vcl/quartz/salvd.cxx                            |    2 
 7 files changed, 392 insertions(+), 160 deletions(-)

New commits:
commit bb1d53946cd813ed63c9cce2a70a999ac6367063
Author:     Tor Lillqvist <tml at collabora.com>
AuthorDate: Fri Oct 5 18:58:45 2018 +0300
Commit:     Tor Lillqvist <tml at collabora.com>
CommitDate: Fri Oct 5 20:21:05 2018 +0300

    Bin some ancient debug tracing stuff from TiledLibreOffice days
    
    Change-Id: I3928c6e9240ad28a65aeb4fecb07268f789faf67

diff --git a/vcl/quartz/salgdicommon.cxx b/vcl/quartz/salgdicommon.cxx
index 2d952244847e..3db3f20336d5 100644
--- a/vcl/quartz/salgdicommon.cxx
+++ b/vcl/quartz/salgdicommon.cxx
@@ -42,40 +42,8 @@
 #endif
 #include <sft.hxx>
 
-
-#if defined(IOS) && defined(DBG_UTIL)
-
-// Variables in TiledView.m
-extern int DBG_DRAW_ROUNDS, DBG_DRAW_COUNTER, DBG_DRAW_DEPTH;
-
-#define DBG_DRAW_OPERATION(s,v) \
-    do { \
-        if (DBG_DRAW_ROUNDS >= 0) { \
-            if (DBG_DRAW_COUNTER++ > DBG_DRAW_ROUNDS) \
-                return v; \
-            SAL_DEBUG("===> " << s << " " << DBG_DRAW_COUNTER); \
-        } \
-    } while (false)
-
-#define DBG_DRAW_OPERATION_EXIT(s) \
-    do { \
-        if (DBG_DRAW_ROUNDS >= 0) \
-            SAL_DEBUG("<=== " << s << " " << DBG_DRAW_COUNTER); \
-    } while (false)
-
-#define DBG_DRAW_OPERATION_EXIT_EARLY(s) DBG_DRAW_OPERATION_EXIT(s << " exit early " << __LINE__)
-
-#else
-
-#define DBG_DRAW_OPERATION(s,v) /* empty */
-#define DBG_DRAW_OPERATION_EXIT(s) /* empty */
-#define DBG_DRAW_OPERATION_EXIT_EARLY(s) /* empty */
-
-#endif
-
 using namespace vcl;
 
-
 static const basegfx::B2DPoint aHalfPointOfs ( 0.5, 0.5 );
 
 static void AddPolygonToPath( CGMutablePathRef xPath,
@@ -604,8 +572,6 @@ bool AquaSalGraphics::drawAlphaBitmap( const SalTwoRect& rTR,
                                        const SalBitmap& rSrcBitmap,
                                        const SalBitmap& rAlphaBmp )
 {
-    DBG_DRAW_OPERATION("drawAlphaBitmap", true);
-
     if (rTR.mnSrcWidth != rTR.mnDestWidth || rTR.mnSrcHeight != rTR.mnDestHeight)
     {
         // TODO - would be better to scale it by the native code
@@ -614,18 +580,12 @@ bool AquaSalGraphics::drawAlphaBitmap( const SalTwoRect& rTR,
 
     // An image mask can't have a depth > 8 bits (should be 1 to 8 bits)
     if( rAlphaBmp.GetBitCount() > 8 )
-    {
-        DBG_DRAW_OPERATION_EXIT_EARLY("drawAlphaBitmap");
         return false;
-    }
 
     // are these two tests really necessary? (see vcl/unx/source/gdi/salgdi2.cxx)
     // horizontal/vertical mirroring not implemented yet
     if( rTR.mnDestWidth < 0 || rTR.mnDestHeight < 0 )
-    {
-        DBG_DRAW_OPERATION_EXIT_EARLY("drawAlphaBitmap");
         return false;
-    }
 
     const QuartzSalBitmap& rSrcSalBmp = static_cast<const QuartzSalBitmap&>(rSrcBitmap);
     const QuartzSalBitmap& rMaskSalBmp = static_cast<const QuartzSalBitmap&>(rAlphaBmp);
@@ -633,10 +593,7 @@ bool AquaSalGraphics::drawAlphaBitmap( const SalTwoRect& rTR,
                                                          rTR.mnSrcY, rTR.mnSrcWidth,
                                                          rTR.mnSrcHeight );
     if( !xMaskedImage )
-    {
-        DBG_DRAW_OPERATION_EXIT_EARLY("drawAlphaBitmap");
         return false;
-    }
 
     if ( CheckContext() )
     {
@@ -649,7 +606,6 @@ bool AquaSalGraphics::drawAlphaBitmap( const SalTwoRect& rTR,
     SAL_INFO( "vcl.cg", "CGImageRelease(" << xMaskedImage << ")");
     CGImageRelease(xMaskedImage);
 
-    DBG_DRAW_OPERATION_EXIT("drawAlphaBitmap");
     return true;
 }
 
@@ -657,13 +613,8 @@ bool AquaSalGraphics::drawTransformedBitmap(
     const basegfx::B2DPoint& rNull, const basegfx::B2DPoint& rX, const basegfx::B2DPoint& rY,
     const SalBitmap& rSrcBitmap, const SalBitmap* pAlphaBmp )
 {
-    DBG_DRAW_OPERATION("drawTransformedBitmap", true);
-
     if( !CheckContext() )
-    {
-        DBG_DRAW_OPERATION_EXIT_EARLY("drawTransformedBitmap");
         return true;
-    }
 
     // get the Quartz image
     CGImageRef xImage = nullptr;
@@ -676,10 +627,7 @@ bool AquaSalGraphics::drawTransformedBitmap(
     else
         xImage = rSrcSalBmp.CreateWithMask( *pMaskSalBmp, 0, 0, static_cast<int>(aSize.Width()), static_cast<int>(aSize.Height()) );
     if( !xImage )
-    {
-        DBG_DRAW_OPERATION_EXIT_EARLY("drawTransformedBitmap");
         return false;
-    }
 
     // setup the image transformation
     // using the rNull,rX,rY points as destinations for the (0,0),(0,Width),(Height,0) source points
@@ -710,20 +658,14 @@ bool AquaSalGraphics::drawTransformedBitmap(
     const CGRect aDstRect = CGRectApplyAffineTransform( aSrcRect, aCGMat );
     RefreshRect( aDstRect );
 
-    DBG_DRAW_OPERATION_EXIT("drawTransformedBitmap");
     return true;
 }
 
 bool AquaSalGraphics::drawAlphaRect( long nX, long nY, long nWidth,
                                      long nHeight, sal_uInt8 nTransparency )
 {
-    DBG_DRAW_OPERATION("drawAlphaRect", true);
-
     if( !CheckContext() )
-    {
-        DBG_DRAW_OPERATION_EXIT_EARLY("drawAlphaRect");
         return true;
-    }
 
     // save the current state
     SAL_INFO( "vcl.cg", "CGContextSaveGState(" << mrContext << ") " << ++mnContextStackDepth );
@@ -750,28 +692,19 @@ bool AquaSalGraphics::drawAlphaRect( long nX, long nY, long nWidth,
     CGContextRestoreGState(mrContext);
     RefreshRect( aRect );
 
-    DBG_DRAW_OPERATION_EXIT("drawAlphaRect");
     return true;
 }
 
 void AquaSalGraphics::drawBitmap( const SalTwoRect& rPosAry, const SalBitmap& rSalBitmap )
 {
-    DBG_DRAW_OPERATION("drawBitmap",);
-
     if( !CheckContext() )
-    {
-        DBG_DRAW_OPERATION_EXIT_EARLY("drawBitmap");
         return;
-    }
 
     const QuartzSalBitmap& rBitmap = static_cast<const QuartzSalBitmap&>(rSalBitmap);
     CGImageRef xImage = rBitmap.CreateCroppedImage( static_cast<int>(rPosAry.mnSrcX), static_cast<int>(rPosAry.mnSrcY),
                                                     static_cast<int>(rPosAry.mnSrcWidth), static_cast<int>(rPosAry.mnSrcHeight) );
     if( !xImage )
-    {
-        DBG_DRAW_OPERATION_EXIT_EARLY("drawBitmap");
         return;
-    }
 
     const CGRect aDstRect = CGRectMake(rPosAry.mnDestX, rPosAry.mnDestY, rPosAry.mnDestWidth, rPosAry.mnDestHeight);
     SAL_INFO( "vcl.cg", "CGContextDrawImage(" << mrContext << "," << aDstRect << "," << xImage << ")" );
@@ -780,30 +713,20 @@ void AquaSalGraphics::drawBitmap( const SalTwoRect& rPosAry, const SalBitmap& rS
     SAL_INFO( "vcl.cg", "CGImageRelease(" << xImage << ")" );
     CGImageRelease( xImage );
     RefreshRect( aDstRect );
-
-    DBG_DRAW_OPERATION_EXIT("drawBitmap");
 }
 
 void AquaSalGraphics::drawBitmap( const SalTwoRect& rPosAry, const SalBitmap& rSalBitmap,
                                   const SalBitmap& rTransparentBitmap )
 {
-    DBG_DRAW_OPERATION("drawBitmap",);
-
     if( !CheckContext() )
-    {
-        DBG_DRAW_OPERATION_EXIT_EARLY("drawBitmap");
         return;
-    }
 
     const QuartzSalBitmap& rBitmap = static_cast<const QuartzSalBitmap&>(rSalBitmap);
     const QuartzSalBitmap& rMask = static_cast<const QuartzSalBitmap&>(rTransparentBitmap);
     CGImageRef xMaskedImage( rBitmap.CreateWithMask( rMask, rPosAry.mnSrcX, rPosAry.mnSrcY,
                                                      rPosAry.mnSrcWidth, rPosAry.mnSrcHeight ) );
     if( !xMaskedImage )
-    {
-        DBG_DRAW_OPERATION_EXIT_EARLY("drawBitmap");
         return;
-    }
 
     const CGRect aDstRect = CGRectMake(rPosAry.mnDestX, rPosAry.mnDestY, rPosAry.mnDestWidth, rPosAry.mnDestHeight);
     SAL_INFO( "vcl.cg", "CGContextDrawImage(" << mrContext << "," << aDstRect << "," << xMaskedImage << ")" );
@@ -811,8 +734,6 @@ void AquaSalGraphics::drawBitmap( const SalTwoRect& rPosAry, const SalBitmap& rS
     SAL_INFO( "vcl.cg", "CGImageRelease(" << xMaskedImage << ")" );
     CGImageRelease( xMaskedImage );
     RefreshRect( aDstRect );
-
-    DBG_DRAW_OPERATION_EXIT("drawBitmap");
 }
 
 #ifndef IOS
@@ -869,22 +790,16 @@ bool AquaSalGraphics::drawEPS( long nX, long nY, long nWidth, long nHeight,
 
 void AquaSalGraphics::drawLine( long nX1, long nY1, long nX2, long nY2 )
 {
-    DBG_DRAW_OPERATION("drawLine",);
-
     if( nX1 == nX2 && nY1 == nY2 )
     {
         // #i109453# platform independent code expects at least one pixel to be drawn
         drawPixel( nX1, nY1 );
 
-        DBG_DRAW_OPERATION_EXIT_EARLY("drawLine");
         return;
     }
 
     if( !CheckContext() )
-    {
-        DBG_DRAW_OPERATION_EXIT_EARLY("drawLine");
         return;
-    }
 
     SAL_INFO( "vcl.cg", "CGContextBeginPath(" << mrContext << ")" );
     CGContextBeginPath( mrContext );
@@ -898,29 +813,19 @@ void AquaSalGraphics::drawLine( long nX1, long nY1, long nX2, long nY2 )
     tools::Rectangle aRefreshRect( nX1, nY1, nX2, nY2 );
     (void) aRefreshRect;
     // Is a call to RefreshRect( aRefreshRect ) missing here?
-
-    DBG_DRAW_OPERATION_EXIT("drawLine");
 }
 
 void AquaSalGraphics::drawMask( const SalTwoRect& rPosAry, const SalBitmap& rSalBitmap, Color nMaskColor )
 {
-    DBG_DRAW_OPERATION("drawMask",);
-
     if( !CheckContext() )
-    {
-        DBG_DRAW_OPERATION_EXIT_EARLY("drawMask");
         return;
-    }
 
     const QuartzSalBitmap& rBitmap = static_cast<const QuartzSalBitmap&>(rSalBitmap);
     CGImageRef xImage = rBitmap.CreateColorMask( rPosAry.mnSrcX, rPosAry.mnSrcY,
                                                  rPosAry.mnSrcWidth, rPosAry.mnSrcHeight,
                                                  nMaskColor );
     if( !xImage )
-    {
-        DBG_DRAW_OPERATION_EXIT_EARLY("drawMask");
         return;
-    }
 
     const CGRect aDstRect = CGRectMake(rPosAry.mnDestX, rPosAry.mnDestY, rPosAry.mnDestWidth, rPosAry.mnDestHeight);
     SAL_INFO( "vcl.cg", "CGContextDrawImage(" << mrContext << "," << aDstRect << "," << xImage << ")" );
@@ -928,8 +833,6 @@ void AquaSalGraphics::drawMask( const SalTwoRect& rPosAry, const SalBitmap& rSal
     SAL_INFO( "vcl.cg", "CGImageRelease(" << xImage << ")" );
     CGImageRelease( xImage );
     RefreshRect( aDstRect );
-
-    DBG_DRAW_OPERATION_EXIT("drawMask");
 }
 
 void AquaSalGraphics::drawPixel( long nX, long nY )
@@ -954,21 +857,13 @@ bool AquaSalGraphics::drawPolyLine(
     double fMiterMinimumAngle,
     bool bPixelSnapHairline)
 {
-    DBG_DRAW_OPERATION("drawPolyLine", true);
-
     // short circuit if there is nothing to do
     if(0 == rPolyLine.count())
-    {
-        DBG_DRAW_OPERATION_EXIT_EARLY("drawPolyLine");
         return true;
-    }
 
 #ifdef IOS
     if( !CheckContext() )
-    {
-        DBG_DRAW_OPERATION_EXIT_EARLY("drawPolyLine");
         return false;
-    }
 #endif
 
     // Transform to DeviceCoordinates, get DeviceLineWidth, execute PixelSnapHairline
@@ -978,10 +873,7 @@ bool AquaSalGraphics::drawPolyLine(
     // the fallback (own geometry preparation)
     // #i104886# linejoin-mode and thus the above only applies to "fat" lines
     if( (basegfx::B2DLineJoin::NONE == eLineJoin) && (aLineWidths.getX() > 1.3) )
-    {
-        DBG_DRAW_OPERATION_EXIT_EARLY("drawPolyLine");
         return false;
-    }
 
     // Transform to DeviceCoordinates, get DeviceLineWidth, execute PixelSnapHairline
     basegfx::B2DPolygon aPolyLine(rPolyLine);
@@ -1063,7 +955,6 @@ bool AquaSalGraphics::drawPolyLine(
     SAL_INFO( "vcl.cg", "CGPathRelease(" << xPath << ")" );
     CGPathRelease( xPath );
 
-    DBG_DRAW_OPERATION_EXIT("drawPolyLine");
     return true;
 }
 
@@ -1077,22 +968,14 @@ bool AquaSalGraphics::drawPolyPolygon(
     const basegfx::B2DPolyPolygon& rPolyPolygon,
     double fTransparency)
 {
-    DBG_DRAW_OPERATION("drawPolyPolygon", true);
-
     // short circuit if there is nothing to do
     const int nPolyCount = rPolyPolygon.count();
     if( nPolyCount <= 0 )
-    {
-        DBG_DRAW_OPERATION_EXIT_EARLY("drawPolyPolygon");
         return true;
-    }
 
     // ignore invisible polygons
     if( (fTransparency >= 1.0) || (fTransparency < 0) )
-    {
-        DBG_DRAW_OPERATION_EXIT_EARLY("drawPolyPolygon");
         return true;
-    }
 
     // Fallback: Transform to DeviceCoordinates
     basegfx::B2DPolyPolygon aPolyPolygon(rPolyPolygon);
@@ -1131,7 +1014,6 @@ bool AquaSalGraphics::drawPolyPolygon(
             SAL_WARN( "vcl.quartz", "Neither pen nor brush visible" );
             SAL_INFO( "vcl.cg", "CGPathRelease(" << xPath << ")" );
             CGPathRelease( xPath );
-            DBG_DRAW_OPERATION_EXIT_EARLY("drawPolyPolygon");
             return true;
         }
 
@@ -1159,25 +1041,16 @@ bool AquaSalGraphics::drawPolyPolygon(
     SAL_INFO( "vcl.cg", "CGPathRelease(" << xPath << ")" );
     CGPathRelease( xPath );
 
-    DBG_DRAW_OPERATION_EXIT("drawPolyPolygon");
     return true;
 }
 
 void AquaSalGraphics::drawPolyPolygon( sal_uInt32 nPolyCount, const sal_uInt32 *pPoints, PCONSTSALPOINT  *ppPtAry )
 {
-    DBG_DRAW_OPERATION("drawPolyPolygon",);
-
     if( nPolyCount <= 0 )
-    {
-        DBG_DRAW_OPERATION_EXIT_EARLY("drawPolyPolygon");
         return;
-    }
 
     if( !CheckContext() )
-    {
-        DBG_DRAW_OPERATION_EXIT_EARLY("drawPolyPolygon");
         return;
-    }
 
     // find bound rect
     long leftX = 0, topY = 0, maxWidth = 0, maxHeight = 0;
@@ -1224,7 +1097,6 @@ void AquaSalGraphics::drawPolyPolygon( sal_uInt32 nPolyCount, const sal_uInt32 *
     else
     {
         SAL_WARN( "vcl.quartz", "Neither pen nor brush visible" );
-        DBG_DRAW_OPERATION_EXIT_EARLY("drawPolyPolygon");
         return;
     }
 
@@ -1289,25 +1161,15 @@ void AquaSalGraphics::drawPolyPolygon( sal_uInt32 nPolyCount, const sal_uInt32 *
     CGContextDrawPath( mrContext, eMode );
 
     RefreshRect( leftX, topY, maxWidth, maxHeight );
-
-    DBG_DRAW_OPERATION_EXIT("drawPolyPolygon");
 }
 
 void AquaSalGraphics::drawPolygon( sal_uInt32 nPoints, const SalPoint *pPtAry )
 {
-    DBG_DRAW_OPERATION("drawPolygon",);
-
     if( nPoints <= 1 )
-    {
-        DBG_DRAW_OPERATION_EXIT_EARLY("drawPolygon");
         return;
-    }
 
     if( !CheckContext() )
-    {
-        DBG_DRAW_OPERATION_EXIT_EARLY("drawPolygon");
         return;
-    }
 
     long nX = 0, nY = 0, nWidth = 0, nHeight = 0;
     getBoundRect( nPoints, pPtAry, nX, nY, nWidth, nHeight );
@@ -1365,8 +1227,6 @@ void AquaSalGraphics::drawPolygon( sal_uInt32 nPoints, const SalPoint *pPtAry )
     SAL_INFO( "vcl.cg", "CGContextDrawPath(" << mrContext << "," << eMode << ")" );
     CGContextDrawPath( mrContext, eMode );
     RefreshRect( nX, nY, nWidth, nHeight );
-
-    DBG_DRAW_OPERATION_EXIT("drawPolygon");
 }
 
 bool AquaSalGraphics::drawPolygonBezier( sal_uInt32, const SalPoint*, const PolyFlags* )
@@ -1382,13 +1242,8 @@ bool AquaSalGraphics::drawPolyPolygonBezier( sal_uInt32, const sal_uInt32*,
 
 void AquaSalGraphics::drawRect( long nX, long nY, long nWidth, long nHeight )
 {
-    DBG_DRAW_OPERATION("drawRect",);
-
     if( !CheckContext() )
-    {
-        DBG_DRAW_OPERATION_EXIT_EARLY("drawRect");
         return;
-    }
 
     CGRect aRect( CGRectMake(nX, nY, nWidth, nHeight) );
     if( IsPenVisible() )
@@ -1410,25 +1265,15 @@ void AquaSalGraphics::drawRect( long nX, long nY, long nWidth, long nHeight )
         CGContextStrokeRect( mrContext, aRect );
     }
     RefreshRect( nX, nY, nWidth, nHeight );
-
-    DBG_DRAW_OPERATION_EXIT("drawRect");
 }
 
 void AquaSalGraphics::drawPolyLine( sal_uInt32 nPoints, const SalPoint *pPtAry )
 {
-    DBG_DRAW_OPERATION("drawPolyLine",);
-
     if( nPoints < 1 )
-    {
-        DBG_DRAW_OPERATION_EXIT_EARLY("drawPolyLine");
         return;
-    }
 
     if( !CheckContext() )
-    {
-        DBG_DRAW_OPERATION_EXIT_EARLY("drawPolyLine");
         return;
-    }
 
     long nX = 0, nY = 0, nWidth = 0, nHeight = 0;
     getBoundRect( nPoints, pPtAry, nX, nY, nWidth, nHeight );
@@ -1451,8 +1296,6 @@ void AquaSalGraphics::drawPolyLine( sal_uInt32 nPoints, const SalPoint *pPtAry )
     CGContextStrokePath(mrContext);
 
     RefreshRect( nX, nY, nWidth, nHeight );
-
-    DBG_DRAW_OPERATION_EXIT("drawPolyLine");
 }
 
 sal_uInt16 AquaSalGraphics::GetBitCount() const
commit 528057887e92b46e26d91639d82e2b15a747ccad
Author:     Tor Lillqvist <tml at collabora.com>
AuthorDate: Fri Oct 5 17:38:22 2018 +0300
Commit:     Tor Lillqvist <tml at collabora.com>
CommitDate: Fri Oct 5 20:21:05 2018 +0300

    SAL_WRN and SAL_INFO tweaks
    
    Also add an assertion and some verbose debug output (in #if 0).
    
    Change-Id: If4907a682ee7359d71078f72ca2f483c80fc4a58

diff --git a/vcl/quartz/salgdi.cxx b/vcl/quartz/salgdi.cxx
index 36569d626d3b..b9cdd2c5195a 100644
--- a/vcl/quartz/salgdi.cxx
+++ b/vcl/quartz/salgdi.cxx
@@ -396,7 +396,7 @@ void AquaSalGraphics::DrawTextLayout(const GenericSalLayout& rLayout)
 #ifdef IOS
     if (!CheckContext())
     {
-        SAL_WARN("vcl.cg", "AquaSalGraphics::DrawTextLayout() without context");
+        SAL_WARN("vcl.quartz", "AquaSalGraphics::DrawTextLayout() without context");
         return;
     }
 #endif
@@ -404,7 +404,10 @@ void AquaSalGraphics::DrawTextLayout(const GenericSalLayout& rLayout)
     const CoreTextStyle& rStyle = *static_cast<const CoreTextStyle*>(&rLayout.GetFont());
     const FontSelectPattern& rFontSelect = rStyle.GetFontSelectPattern();
     if (rFontSelect.mnHeight == 0)
+    {
+        SAL_WARN("vcl.quartz", "AquaSalGraphics::DrawTextLayout(): rFontSelect.mnHeight is zero!?");
         return;
+    }
 
     CTFontRef pFont = static_cast<CTFontRef>(CFDictionaryGetValue(rStyle.GetStyleDict(), kCTFontAttributeName));
     CGAffineTransform aRotMatrix = CGAffineTransformMakeRotation(-rStyle.mfFontRotation);
@@ -443,13 +446,39 @@ void AquaSalGraphics::DrawTextLayout(const GenericSalLayout& rLayout)
     }
 
     if (aGlyphIds.empty())
+    {
+        SAL_WARN("vcl.quartz", "aGlyphIds is empty!?");
         return;
+    }
+
+    assert(aGlyphIds.size() == aGlyphPos.size());
+#if 0
+    std::cerr << "aGlyphIds:[";
+    for (unsigned i = 0; i < aGlyphIds.size(); i++)
+    {
+        if (i > 0)
+            std::cerr << ",";
+        std::cerr << aGlyphIds[i];
+    }
+    std::cerr << "]\n";
+    std::cerr << "aGlyphPos:[";
+    for (unsigned i = 0; i < aGlyphPos.size(); i++)
+    {
+        if (i > 0)
+            std::cerr << ",";
+        std::cerr << aGlyphPos[i];
+    }
+    std::cerr << "]\n";
+#endif
 
+    SAL_INFO("vcl.cg", "CGContextSaveGState(" << mrContext << ") " << ++mnContextStackDepth );
     CGContextSaveGState(mrContext);
 
     // The view is vertically flipped (no idea why), flip it back.
+    SAL_INFO("vcl.cg", "CGContextScaleCTM(" << mrContext << ",1,-1)");
     CGContextScaleCTM(mrContext, 1.0, -1.0);
     CGContextSetShouldAntialias(mrContext, !mbNonAntialiasedText);
+    SAL_INFO("vcl.cg", "CGContextSetFillColor(" << mrContext << "," << maTextColor << ")");
     CGContextSetFillColor(mrContext, maTextColor.AsArray());
 
     auto aIt = aGlyphOrientation.cbegin();
@@ -462,15 +491,22 @@ void AquaSalGraphics::DrawTextLayout(const GenericSalLayout& rLayout)
         size_t nStartIndex = std::distance(aGlyphOrientation.cbegin(), aIt);
         size_t nLen = std::distance(aIt, aNext);
 
+        SAL_INFO("vcl.cg", "CGContextSaveGState(" << mrContext << ") " << ++mnContextStackDepth );
         CGContextSaveGState(mrContext);
         if (rStyle.mfFontRotation && !bUprightGlyph)
+        {
+            SAL_INFO("vcl.cg", "CGContextRotateCTM(" << mrContext << "," << rStyle.mfFontRotation << ")");
             CGContextRotateCTM(mrContext, rStyle.mfFontRotation);
+        }
+        SAL_INFO("vcl.cg", "CTFontDrawGlyphs() @" << nStartIndex << ":" << nLen << "," << mrContext);
         CTFontDrawGlyphs(pFont, &aGlyphIds[nStartIndex], &aGlyphPos[nStartIndex], nLen, mrContext);
+        SAL_INFO("vcl.cg", "CGContextRestoreGState(" << mrContext << ") " << mnContextStackDepth-- );
         CGContextRestoreGState(mrContext);
 
         aIt = aNext;
     }
 
+    SAL_INFO( "vcl.cg", "CGContextRestoreGState(" << mrContext << ") " << mnContextStackDepth-- );
     CGContextRestoreGState(mrContext);
 }
 
diff --git a/vcl/quartz/salvd.cxx b/vcl/quartz/salvd.cxx
index 7b3c68155ffe..77fee8f13d8a 100644
--- a/vcl/quartz/salvd.cxx
+++ b/vcl/quartz/salvd.cxx
@@ -208,7 +208,7 @@ void AquaSalVirtualDevice::ReleaseGraphics( SalGraphics* )
 bool AquaSalVirtualDevice::SetSize( long nDX, long nDY )
 {
     SAL_INFO( "vcl.virdev", "AquaSalVirtualDevice::SetSize() this=" << this <<
-              " (" << nDX << "x" << nDY << ") mbForeignContext=" << mbForeignContext );
+              " (" << nDX << "x" << nDY << ") mbForeignContext=" << (mbForeignContext ? "YES" : "NO"));
 
     if( mbForeignContext )
     {
commit 5b37c499986aab625c9eaaeb742ae492ba5b6c37
Author:     Tor Lillqvist <tml at collabora.com>
AuthorDate: Fri Oct 5 17:37:23 2018 +0300
Commit:     Tor Lillqvist <tml at collabora.com>
CommitDate: Fri Oct 5 20:21:05 2018 +0300

    Add more vcl sources for easier breakpointing
    
    Change-Id: I3dccdd3253bf6e3e451b9ed53786eefaa02d451e

diff --git a/ios/UnitTest/UnitTest.xcodeproj/project.pbxproj b/ios/UnitTest/UnitTest.xcodeproj/project.pbxproj
index d567a8347534..78f19b221090 100644
--- a/ios/UnitTest/UnitTest.xcodeproj/project.pbxproj
+++ b/ios/UnitTest/UnitTest.xcodeproj/project.pbxproj
@@ -109,6 +109,89 @@
 		BEA20D6E2166596F0032F67B /* svpdata.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = svpdata.cxx; path = ../../vcl/headless/svpdata.cxx; sourceTree = "<group>"; };
 		BEA20D6F2166596F0032F67B /* svpdummies.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = svpdummies.cxx; path = ../../vcl/headless/svpdummies.cxx; sourceTree = "<group>"; };
 		BEA20D702166596F0032F67B /* svpprn.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = svpprn.cxx; path = ../../vcl/headless/svpprn.cxx; sourceTree = "<group>"; };
+		BEA20DC221678BB60032F67B /* lokcharthelper.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = lokcharthelper.cxx; path = ../../sfx2/source/view/lokcharthelper.cxx; sourceTree = "<group>"; };
+		BEA20DC4216797C00032F67B /* pdffontcache.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = pdffontcache.hxx; path = ../../vcl/source/gdi/pdffontcache.hxx; sourceTree = "<group>"; };
+		BEA20DC5216797C00032F67B /* impgraph.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = impgraph.cxx; path = ../../vcl/source/gdi/impgraph.cxx; sourceTree = "<group>"; };
+		BEA20DC6216797C00032F67B /* base14.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = base14.cxx; path = ../../vcl/source/gdi/base14.cxx; sourceTree = "<group>"; };
+		BEA20DC7216797C00032F67B /* bmpfast.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = bmpfast.cxx; path = ../../vcl/source/gdi/bmpfast.cxx; sourceTree = "<group>"; };
+		BEA20DC8216797C00032F67B /* vectorgraphicdata.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = vectorgraphicdata.cxx; path = ../../vcl/source/gdi/vectorgraphicdata.cxx; sourceTree = "<group>"; };
+		BEA20DC9216797C00032F67B /* pdfwriter_impl2.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = pdfwriter_impl2.cxx; path = ../../vcl/source/gdi/pdfwriter_impl2.cxx; sourceTree = "<group>"; };
+		BEA20DCA216797C00032F67B /* mapmod.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = mapmod.cxx; path = ../../vcl/source/gdi/mapmod.cxx; sourceTree = "<group>"; };
+		BEA20DCB216797C00032F67B /* bitmap3.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = bitmap3.cxx; path = ../../vcl/source/gdi/bitmap3.cxx; sourceTree = "<group>"; };
+		BEA20DCC216797C00032F67B /* pdfwriter.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = pdfwriter.cxx; path = ../../vcl/source/gdi/pdfwriter.cxx; sourceTree = "<group>"; };
+		BEA20DCD216797C00032F67B /* salmisc.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = salmisc.cxx; path = ../../vcl/source/gdi/salmisc.cxx; sourceTree = "<group>"; };
+		BEA20DCE216797C00032F67B /* impvect.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = impvect.hxx; path = ../../vcl/source/gdi/impvect.hxx; sourceTree = "<group>"; };
+		BEA20DCF216797C00032F67B /* oldprintadaptor.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = oldprintadaptor.cxx; path = ../../vcl/source/gdi/oldprintadaptor.cxx; sourceTree = "<group>"; };
+		BEA20DD0216797C00032F67B /* extoutdevdata.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = extoutdevdata.cxx; path = ../../vcl/source/gdi/extoutdevdata.cxx; sourceTree = "<group>"; };
+		BEA20DD1216797C10032F67B /* cvtgrf.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = cvtgrf.cxx; path = ../../vcl/source/gdi/cvtgrf.cxx; sourceTree = "<group>"; };
+		BEA20DD2216797C10032F67B /* graphictools.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = graphictools.cxx; path = ../../vcl/source/gdi/graphictools.cxx; sourceTree = "<group>"; };
+		BEA20DD3216797C10032F67B /* gdimetafiletools.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = gdimetafiletools.cxx; path = ../../vcl/source/gdi/gdimetafiletools.cxx; sourceTree = "<group>"; };
+		BEA20DD4216797C10032F67B /* genVerticalOrientationData.pl */ = {isa = PBXFileReference; lastKnownFileType = text.script.perl; name = genVerticalOrientationData.pl; path = ../../vcl/source/gdi/genVerticalOrientationData.pl; sourceTree = "<group>"; };
+		BEA20DD5216797C10032F67B /* bmpacc3.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = bmpacc3.cxx; path = ../../vcl/source/gdi/bmpacc3.cxx; sourceTree = "<group>"; };
+		BEA20DD6216797C10032F67B /* print.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = print.cxx; path = ../../vcl/source/gdi/print.cxx; sourceTree = "<group>"; };
+		BEA20DD7216797C10032F67B /* configsettings.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = configsettings.cxx; path = ../../vcl/source/gdi/configsettings.cxx; sourceTree = "<group>"; };
+		BEA20DD8216797C10032F67B /* print3.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = print3.cxx; path = ../../vcl/source/gdi/print3.cxx; sourceTree = "<group>"; };
+		BEA20DD9216797C10032F67B /* graph.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = graph.cxx; path = ../../vcl/source/gdi/graph.cxx; sourceTree = "<group>"; };
+		BEA20DDA216797C10032F67B /* octree.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = octree.cxx; path = ../../vcl/source/gdi/octree.cxx; sourceTree = "<group>"; };
+		BEA20DDB216797C10032F67B /* scrptrun.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = scrptrun.cxx; path = ../../vcl/source/gdi/scrptrun.cxx; sourceTree = "<group>"; };
+		BEA20DDC216797C10032F67B /* regionband.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = regionband.cxx; path = ../../vcl/source/gdi/regionband.cxx; sourceTree = "<group>"; };
+		BEA20DDD216797C10032F67B /* gdimtf.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = gdimtf.cxx; path = ../../vcl/source/gdi/gdimtf.cxx; sourceTree = "<group>"; };
+		BEA20DDE216797C10032F67B /* pdfextoutdevdata.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = pdfextoutdevdata.cxx; path = ../../vcl/source/gdi/pdfextoutdevdata.cxx; sourceTree = "<group>"; };
+		BEA20DDF216797C10032F67B /* pdffontcache.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = pdffontcache.cxx; path = ../../vcl/source/gdi/pdffontcache.cxx; sourceTree = "<group>"; };
+		BEA20DE0216797C10032F67B /* textlayout.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = textlayout.cxx; path = ../../vcl/source/gdi/textlayout.cxx; sourceTree = "<group>"; };
+		BEA20DE1216797C10032F67B /* virdev.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = virdev.cxx; path = ../../vcl/source/gdi/virdev.cxx; sourceTree = "<group>"; };
+		BEA20DE2216797C10032F67B /* embeddedfontshelper.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = embeddedfontshelper.cxx; path = ../../vcl/source/gdi/embeddedfontshelper.cxx; sourceTree = "<group>"; };
+		BEA20DE3216797C10032F67B /* salgdiimpl.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = salgdiimpl.cxx; path = ../../vcl/source/gdi/salgdiimpl.cxx; sourceTree = "<group>"; };
+		BEA20DE4216797C10032F67B /* gfxlink.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = gfxlink.cxx; path = ../../vcl/source/gdi/gfxlink.cxx; sourceTree = "<group>"; };
+		BEA20DE5216797C10032F67B /* alpha.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = alpha.cxx; path = ../../vcl/source/gdi/alpha.cxx; sourceTree = "<group>"; };
+		BEA20DE6216797C10032F67B /* hatch.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = hatch.cxx; path = ../../vcl/source/gdi/hatch.cxx; sourceTree = "<group>"; };
+		BEA20DE7216797C10032F67B /* svmconverter.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = svmconverter.cxx; path = ../../vcl/source/gdi/svmconverter.cxx; sourceTree = "<group>"; };
+		BEA20DE8216797C10032F67B /* pngwrite.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = pngwrite.cxx; path = ../../vcl/source/gdi/pngwrite.cxx; sourceTree = "<group>"; };
+		BEA20DE9216797C10032F67B /* gradient.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = gradient.cxx; path = ../../vcl/source/gdi/gradient.cxx; sourceTree = "<group>"; };
+		BEA20DEA216797C10032F67B /* pngread.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = pngread.cxx; path = ../../vcl/source/gdi/pngread.cxx; sourceTree = "<group>"; };
+		BEA20DEB216797C10032F67B /* salgdilayout.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = salgdilayout.cxx; path = ../../vcl/source/gdi/salgdilayout.cxx; sourceTree = "<group>"; };
+		BEA20DEC216797C20032F67B /* bitmapex.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = bitmapex.cxx; path = ../../vcl/source/gdi/bitmapex.cxx; sourceTree = "<group>"; };
+		BEA20DED216797C20032F67B /* lineinfo.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = lineinfo.cxx; path = ../../vcl/source/gdi/lineinfo.cxx; sourceTree = "<group>"; };
+		BEA20DEE216797C20032F67B /* animate.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = animate.cxx; path = ../../vcl/source/gdi/animate.cxx; sourceTree = "<group>"; };
+		BEA20DEF216797C20032F67B /* bmpacc.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = bmpacc.cxx; path = ../../vcl/source/gdi/bmpacc.cxx; sourceTree = "<group>"; };
+		BEA20DF0216797C20032F67B /* pdfwriter_impl.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = pdfwriter_impl.cxx; path = ../../vcl/source/gdi/pdfwriter_impl.cxx; sourceTree = "<group>"; };
+		BEA20DF1216797C20032F67B /* wall.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = wall.cxx; path = ../../vcl/source/gdi/wall.cxx; sourceTree = "<group>"; };
+		BEA20DF2216797C20032F67B /* impvect.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = impvect.cxx; path = ../../vcl/source/gdi/impvect.cxx; sourceTree = "<group>"; };
+		BEA20DF3216797C20032F67B /* impanmvw.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = impanmvw.cxx; path = ../../vcl/source/gdi/impanmvw.cxx; sourceTree = "<group>"; };
+		BEA20DF4216797C20032F67B /* print2.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = print2.cxx; path = ../../vcl/source/gdi/print2.cxx; sourceTree = "<group>"; };
+		BEA20DF5216797C20032F67B /* metaact.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = metaact.cxx; path = ../../vcl/source/gdi/metaact.cxx; sourceTree = "<group>"; };
+		BEA20DF6216797C20032F67B /* CommonSalLayout.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = CommonSalLayout.cxx; path = ../../vcl/source/gdi/CommonSalLayout.cxx; sourceTree = "<group>"; };
+		BEA20DF7216797C20032F67B /* pdfwriter_impl.hxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = pdfwriter_impl.hxx; path = ../../vcl/source/gdi/pdfwriter_impl.hxx; sourceTree = "<group>"; };
+		BEA20DF8216797C20032F67B /* dibtools.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = dibtools.cxx; path = ../../vcl/source/gdi/dibtools.cxx; sourceTree = "<group>"; };
+		BEA20DF9216797C20032F67B /* sallayout.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = sallayout.cxx; path = ../../vcl/source/gdi/sallayout.cxx; sourceTree = "<group>"; };
+		BEA20DFA216797C20032F67B /* bmpacc2.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = bmpacc2.cxx; path = ../../vcl/source/gdi/bmpacc2.cxx; sourceTree = "<group>"; };
+		BEA20DFB216797C20032F67B /* regband.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = regband.cxx; path = ../../vcl/source/gdi/regband.cxx; sourceTree = "<group>"; };
+		BEA20DFC216797C20032F67B /* jobset.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = jobset.cxx; path = ../../vcl/source/gdi/jobset.cxx; sourceTree = "<group>"; };
+		BEA20DFD216797C20032F67B /* VerticalOrientationData.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = VerticalOrientationData.cxx; path = ../../vcl/source/gdi/VerticalOrientationData.cxx; sourceTree = "<group>"; };
+		BEA20DFE216797C20032F67B /* region.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = region.cxx; path = ../../vcl/source/gdi/region.cxx; sourceTree = "<group>"; };
+		BEA20DFF216797C20032F67B /* salnativewidgets-none.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "salnativewidgets-none.cxx"; path = "../../vcl/source/gdi/salnativewidgets-none.cxx"; sourceTree = "<group>"; };
+		BEA20E012167A47B0032F67B /* gradient.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = gradient.cxx; path = ../../vcl/source/outdev/gradient.cxx; sourceTree = "<group>"; };
+		BEA20E022167A47C0032F67B /* polygon.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = polygon.cxx; path = ../../vcl/source/outdev/polygon.cxx; sourceTree = "<group>"; };
+		BEA20E032167A47C0032F67B /* text.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = text.cxx; path = ../../vcl/source/outdev/text.cxx; sourceTree = "<group>"; };
+		BEA20E042167A47C0032F67B /* outdevstate.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = outdevstate.cxx; path = ../../vcl/source/outdev/outdevstate.cxx; sourceTree = "<group>"; };
+		BEA20E052167A47C0032F67B /* wallpaper.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = wallpaper.cxx; path = ../../vcl/source/outdev/wallpaper.cxx; sourceTree = "<group>"; };
+		BEA20E062167A47C0032F67B /* line.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = line.cxx; path = ../../vcl/source/outdev/line.cxx; sourceTree = "<group>"; };
+		BEA20E072167A47C0032F67B /* curvedshapes.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = curvedshapes.cxx; path = ../../vcl/source/outdev/curvedshapes.cxx; sourceTree = "<group>"; };
+		BEA20E082167A47C0032F67B /* map.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = map.cxx; path = ../../vcl/source/outdev/map.cxx; sourceTree = "<group>"; };
+		BEA20E092167A47C0032F67B /* clipping.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = clipping.cxx; path = ../../vcl/source/outdev/clipping.cxx; sourceTree = "<group>"; };
+		BEA20E0A2167A47C0032F67B /* bitmap.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = bitmap.cxx; path = ../../vcl/source/outdev/bitmap.cxx; sourceTree = "<group>"; };
+		BEA20E0B2167A47C0032F67B /* font.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = font.cxx; path = ../../vcl/source/outdev/font.cxx; sourceTree = "<group>"; };
+		BEA20E0C2167A47C0032F67B /* hatch.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = hatch.cxx; path = ../../vcl/source/outdev/hatch.cxx; sourceTree = "<group>"; };
+		BEA20E0D2167A47C0032F67B /* nativecontrols.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = nativecontrols.cxx; path = ../../vcl/source/outdev/nativecontrols.cxx; sourceTree = "<group>"; };
+		BEA20E0E2167A47C0032F67B /* polyline.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = polyline.cxx; path = ../../vcl/source/outdev/polyline.cxx; sourceTree = "<group>"; };
+		BEA20E0F2167A47C0032F67B /* rect.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = rect.cxx; path = ../../vcl/source/outdev/rect.cxx; sourceTree = "<group>"; };
+		BEA20E102167A47C0032F67B /* outdevstatestack.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = outdevstatestack.cxx; path = ../../vcl/source/outdev/outdevstatestack.cxx; sourceTree = "<group>"; };
+		BEA20E112167A47C0032F67B /* textline.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = textline.cxx; path = ../../vcl/source/outdev/textline.cxx; sourceTree = "<group>"; };
+		BEA20E122167A47C0032F67B /* outdev.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = outdev.cxx; path = ../../vcl/source/outdev/outdev.cxx; sourceTree = "<group>"; };
+		BEA20E132167A47C0032F67B /* transparent.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = transparent.cxx; path = ../../vcl/source/outdev/transparent.cxx; sourceTree = "<group>"; };
+		BEA20E142167A47C0032F67B /* vclreferencebase.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = vclreferencebase.cxx; path = ../../vcl/source/outdev/vclreferencebase.cxx; sourceTree = "<group>"; };
+		BEA20E152167A47C0032F67B /* mask.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = mask.cxx; path = ../../vcl/source/outdev/mask.cxx; sourceTree = "<group>"; };
+		BEA20E162167A47C0032F67B /* pixel.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = pixel.cxx; path = ../../vcl/source/outdev/pixel.cxx; sourceTree = "<group>"; };
 /* End PBXFileReference section */
 
 /* Begin PBXFrameworksBuildPhase section */
@@ -194,6 +277,7 @@
 		BEA20D2A2163C2210032F67B /* Core */ = {
 			isa = PBXGroup;
 			children = (
+				BEA20DC021678B960032F67B /* sfx2 */,
 				BEA20D2B2163C2360032F67B /* vcl */,
 			);
 			name = Core;
@@ -203,8 +287,10 @@
 			isa = PBXGroup;
 			children = (
 				BEA20D342164BA8B0032F67B /* app */,
+				BEA20DC3216797A00032F67B /* gdi */,
 				BEA20D642166594D0032F67B /* headless */,
 				BEA20D512164BAF00032F67B /* ios */,
+				BEA20E002167A4550032F67B /* outdev */,
 				BEA20D332164BA7C0032F67B /* quartz */,
 			);
 			name = vcl;
@@ -285,6 +371,118 @@
 			name = headless;
 			sourceTree = "<group>";
 		};
+		BEA20DC021678B960032F67B /* sfx2 */ = {
+			isa = PBXGroup;
+			children = (
+				BEA20DC121678B9E0032F67B /* view */,
+			);
+			name = sfx2;
+			sourceTree = "<group>";
+		};
+		BEA20DC121678B9E0032F67B /* view */ = {
+			isa = PBXGroup;
+			children = (
+				BEA20DC221678BB60032F67B /* lokcharthelper.cxx */,
+			);
+			name = view;
+			sourceTree = "<group>";
+		};
+		BEA20DC3216797A00032F67B /* gdi */ = {
+			isa = PBXGroup;
+			children = (
+				BEA20DE5216797C10032F67B /* alpha.cxx */,
+				BEA20DEE216797C20032F67B /* animate.cxx */,
+				BEA20DC6216797C00032F67B /* base14.cxx */,
+				BEA20DCB216797C00032F67B /* bitmap3.cxx */,
+				BEA20DEC216797C20032F67B /* bitmapex.cxx */,
+				BEA20DEF216797C20032F67B /* bmpacc.cxx */,
+				BEA20DFA216797C20032F67B /* bmpacc2.cxx */,
+				BEA20DD5216797C10032F67B /* bmpacc3.cxx */,
+				BEA20DC7216797C00032F67B /* bmpfast.cxx */,
+				BEA20DF6216797C20032F67B /* CommonSalLayout.cxx */,
+				BEA20DD7216797C10032F67B /* configsettings.cxx */,
+				BEA20DD1216797C10032F67B /* cvtgrf.cxx */,
+				BEA20DF8216797C20032F67B /* dibtools.cxx */,
+				BEA20DE2216797C10032F67B /* embeddedfontshelper.cxx */,
+				BEA20DD0216797C00032F67B /* extoutdevdata.cxx */,
+				BEA20DD3216797C10032F67B /* gdimetafiletools.cxx */,
+				BEA20DDD216797C10032F67B /* gdimtf.cxx */,
+				BEA20DD4216797C10032F67B /* genVerticalOrientationData.pl */,
+				BEA20DE4216797C10032F67B /* gfxlink.cxx */,
+				BEA20DE9216797C10032F67B /* gradient.cxx */,
+				BEA20DD9216797C10032F67B /* graph.cxx */,
+				BEA20DD2216797C10032F67B /* graphictools.cxx */,
+				BEA20DE6216797C10032F67B /* hatch.cxx */,
+				BEA20DF3216797C20032F67B /* impanmvw.cxx */,
+				BEA20DC5216797C00032F67B /* impgraph.cxx */,
+				BEA20DF2216797C20032F67B /* impvect.cxx */,
+				BEA20DCE216797C00032F67B /* impvect.hxx */,
+				BEA20DFC216797C20032F67B /* jobset.cxx */,
+				BEA20DED216797C20032F67B /* lineinfo.cxx */,
+				BEA20DCA216797C00032F67B /* mapmod.cxx */,
+				BEA20DF5216797C20032F67B /* metaact.cxx */,
+				BEA20DDA216797C10032F67B /* octree.cxx */,
+				BEA20DCF216797C00032F67B /* oldprintadaptor.cxx */,
+				BEA20DDE216797C10032F67B /* pdfextoutdevdata.cxx */,
+				BEA20DDF216797C10032F67B /* pdffontcache.cxx */,
+				BEA20DC4216797C00032F67B /* pdffontcache.hxx */,
+				BEA20DF0216797C20032F67B /* pdfwriter_impl.cxx */,
+				BEA20DF7216797C20032F67B /* pdfwriter_impl.hxx */,
+				BEA20DC9216797C00032F67B /* pdfwriter_impl2.cxx */,
+				BEA20DCC216797C00032F67B /* pdfwriter.cxx */,
+				BEA20DEA216797C10032F67B /* pngread.cxx */,
+				BEA20DE8216797C10032F67B /* pngwrite.cxx */,
+				BEA20DD6216797C10032F67B /* print.cxx */,
+				BEA20DF4216797C20032F67B /* print2.cxx */,
+				BEA20DD8216797C10032F67B /* print3.cxx */,
+				BEA20DFB216797C20032F67B /* regband.cxx */,
+				BEA20DFE216797C20032F67B /* region.cxx */,
+				BEA20DDC216797C10032F67B /* regionband.cxx */,
+				BEA20DE3216797C10032F67B /* salgdiimpl.cxx */,
+				BEA20DEB216797C10032F67B /* salgdilayout.cxx */,
+				BEA20DF9216797C20032F67B /* sallayout.cxx */,
+				BEA20DCD216797C00032F67B /* salmisc.cxx */,
+				BEA20DFF216797C20032F67B /* salnativewidgets-none.cxx */,
+				BEA20DDB216797C10032F67B /* scrptrun.cxx */,
+				BEA20DE7216797C10032F67B /* svmconverter.cxx */,
+				BEA20DE0216797C10032F67B /* textlayout.cxx */,
+				BEA20DC8216797C00032F67B /* vectorgraphicdata.cxx */,
+				BEA20DFD216797C20032F67B /* VerticalOrientationData.cxx */,
+				BEA20DE1216797C10032F67B /* virdev.cxx */,
+				BEA20DF1216797C20032F67B /* wall.cxx */,
+			);
+			name = gdi;
+			sourceTree = "<group>";
+		};
+		BEA20E002167A4550032F67B /* outdev */ = {
+			isa = PBXGroup;
+			children = (
+				BEA20E0A2167A47C0032F67B /* bitmap.cxx */,
+				BEA20E092167A47C0032F67B /* clipping.cxx */,
+				BEA20E072167A47C0032F67B /* curvedshapes.cxx */,
+				BEA20E0B2167A47C0032F67B /* font.cxx */,
+				BEA20E012167A47B0032F67B /* gradient.cxx */,
+				BEA20E0C2167A47C0032F67B /* hatch.cxx */,
+				BEA20E062167A47C0032F67B /* line.cxx */,
+				BEA20E082167A47C0032F67B /* map.cxx */,
+				BEA20E152167A47C0032F67B /* mask.cxx */,
+				BEA20E0D2167A47C0032F67B /* nativecontrols.cxx */,
+				BEA20E122167A47C0032F67B /* outdev.cxx */,
+				BEA20E042167A47C0032F67B /* outdevstate.cxx */,
+				BEA20E102167A47C0032F67B /* outdevstatestack.cxx */,
+				BEA20E162167A47C0032F67B /* pixel.cxx */,
+				BEA20E022167A47C0032F67B /* polygon.cxx */,
+				BEA20E0E2167A47C0032F67B /* polyline.cxx */,
+				BEA20E0F2167A47C0032F67B /* rect.cxx */,
+				BEA20E032167A47C0032F67B /* text.cxx */,
+				BEA20E112167A47C0032F67B /* textline.cxx */,
+				BEA20E132167A47C0032F67B /* transparent.cxx */,
+				BEA20E142167A47C0032F67B /* vclreferencebase.cxx */,
+				BEA20E052167A47C0032F67B /* wallpaper.cxx */,
+			);
+			name = outdev;
+			sourceTree = "<group>";
+		};
 /* End PBXGroup section */
 
 /* Begin PBXNativeTarget section */
commit 88f7147c1ab9d1feeb5c14d67ffa1b623df5dc50
Author:     Tor Lillqvist <tml at collabora.com>
AuthorDate: Fri Oct 5 17:36:03 2018 +0300
Commit:     Tor Lillqvist <tml at collabora.com>
CommitDate: Fri Oct 5 20:21:05 2018 +0300

    We should call pDevice->SetBackground(Wallpaper(COL_TRANSPARENT)) also on iOS
    
    Change-Id: Id42d3b84ab97ec1efd9551e4d9cc5fd16ab77c80

diff --git a/desktop/source/lib/init.cxx b/desktop/source/lib/init.cxx
index d28bad27d375..477a3feb8180 100644
--- a/desktop/source/lib/init.cxx
+++ b/desktop/source/lib/init.cxx
@@ -2098,6 +2098,8 @@ static void doc_paintTile(LibreOfficeKitDocument* pThis,
     // the Size argument is irrelevant, I hope
     ScopedVclPtrInstance<VirtualDevice> pDevice(&aData, Size(1, 1), DeviceFormat::DEFAULT);
 
+    pDevice->SetBackground(Wallpaper(COL_TRANSPARENT));
+
     pDevice->SetOutputSizePixel(Size(nCanvasWidth, nCanvasHeight));
 
     pDoc->paintTile(*pDevice.get(), nCanvasWidth, nCanvasHeight,
commit 62e5bcd8b76d0cbe38804e54be5c08c5933ee238
Author:     Tor Lillqvist <tml at collabora.com>
AuthorDate: Fri Oct 5 15:14:23 2018 +0300
Commit:     Tor Lillqvist <tml at collabora.com>
CommitDate: Fri Oct 5 20:21:05 2018 +0300

    Use LOK_FEATURE_NO_TILED_ANNOTATIONS here, like in Online
    
    Change-Id: Ib34b83bc14f17dbb2bf3e89140edb734697710a8

diff --git a/libreofficekit/qa/tilebench/tilebench.cxx b/libreofficekit/qa/tilebench/tilebench.cxx
index 2e0146da9f38..60b471bcad92 100644
--- a/libreofficekit/qa/tilebench/tilebench.cxx
+++ b/libreofficekit/qa/tilebench/tilebench.cxx
@@ -380,6 +380,8 @@ int main( int argc, char* argv[] )
 
     Document *pDocument = nullptr;
 
+    pOffice->setOptionalFeatures(LOK_FEATURE_NO_TILED_ANNOTATIONS);
+
     aTimes.emplace_back("load document");
     if (doc_url != nullptr)
         pDocument = pOffice->documentLoad(doc_url);
commit 272cfc8593bc21436f503aaa1d577d4ede549194
Author:     Tor Lillqvist <tml at collabora.com>
AuthorDate: Thu Oct 4 18:01:52 2018 +0300
Commit:     Tor Lillqvist <tml at collabora.com>
CommitDate: Fri Oct 5 20:21:05 2018 +0300

    Add sources in vcl/headless for easier breakpointing
    
    Change-Id: I02c73c040eafd77628d94f6045c48f02b650f8d6

diff --git a/ios/UnitTest/UnitTest.xcodeproj/project.pbxproj b/ios/UnitTest/UnitTest.xcodeproj/project.pbxproj
index 150dd30dc57b..d567a8347534 100644
--- a/ios/UnitTest/UnitTest.xcodeproj/project.pbxproj
+++ b/ios/UnitTest/UnitTest.xcodeproj/project.pbxproj
@@ -97,6 +97,18 @@
 		BEA20D502164BAB80032F67B /* svmain.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = svmain.cxx; path = ../../vcl/source/app/svmain.cxx; sourceTree = "<group>"; };
 		BEA20D522164BB0D0032F67B /* iosinst.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = iosinst.cxx; path = ../../vcl/ios/iosinst.cxx; sourceTree = "<group>"; };
 		BEA20D532164BB0E0032F67B /* dummies.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = dummies.cxx; path = ../../vcl/ios/dummies.cxx; sourceTree = "<group>"; };
+		BEA20D652166596F0032F67B /* svpvd.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = svpvd.cxx; path = ../../vcl/headless/svpvd.cxx; sourceTree = "<group>"; };
+		BEA20D662166596F0032F67B /* svpframe.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = svpframe.cxx; path = ../../vcl/headless/svpframe.cxx; sourceTree = "<group>"; };
+		BEA20D672166596F0032F67B /* svpbmp.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = svpbmp.cxx; path = ../../vcl/headless/svpbmp.cxx; sourceTree = "<group>"; };
+		BEA20D682166596F0032F67B /* svpcairotextrender.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = svpcairotextrender.cxx; path = ../../vcl/headless/svpcairotextrender.cxx; sourceTree = "<group>"; };
+		BEA20D692166596F0032F67B /* svpgdi.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = svpgdi.cxx; path = ../../vcl/headless/svpgdi.cxx; sourceTree = "<group>"; };
+		BEA20D6A2166596F0032F67B /* svpglyphcache.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = svpglyphcache.cxx; path = ../../vcl/headless/svpglyphcache.cxx; sourceTree = "<group>"; };
+		BEA20D6B2166596F0032F67B /* svpinst.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = svpinst.cxx; path = ../../vcl/headless/svpinst.cxx; sourceTree = "<group>"; };
+		BEA20D6C2166596F0032F67B /* svptext.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = svptext.cxx; path = ../../vcl/headless/svptext.cxx; sourceTree = "<group>"; };
+		BEA20D6D2166596F0032F67B /* headlessinst.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = headlessinst.cxx; path = ../../vcl/headless/headlessinst.cxx; sourceTree = "<group>"; };
+		BEA20D6E2166596F0032F67B /* svpdata.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = svpdata.cxx; path = ../../vcl/headless/svpdata.cxx; sourceTree = "<group>"; };
+		BEA20D6F2166596F0032F67B /* svpdummies.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = svpdummies.cxx; path = ../../vcl/headless/svpdummies.cxx; sourceTree = "<group>"; };
+		BEA20D702166596F0032F67B /* svpprn.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = svpprn.cxx; path = ../../vcl/headless/svpprn.cxx; sourceTree = "<group>"; };
 /* End PBXFileReference section */
 
 /* Begin PBXFrameworksBuildPhase section */
@@ -191,6 +203,7 @@
 			isa = PBXGroup;
 			children = (
 				BEA20D342164BA8B0032F67B /* app */,
+				BEA20D642166594D0032F67B /* headless */,
 				BEA20D512164BAF00032F67B /* ios */,
 				BEA20D332164BA7C0032F67B /* quartz */,
 			);
@@ -253,6 +266,25 @@
 			name = ios;
 			sourceTree = "<group>";
 		};
+		BEA20D642166594D0032F67B /* headless */ = {
+			isa = PBXGroup;
+			children = (
+				BEA20D6D2166596F0032F67B /* headlessinst.cxx */,
+				BEA20D672166596F0032F67B /* svpbmp.cxx */,
+				BEA20D682166596F0032F67B /* svpcairotextrender.cxx */,
+				BEA20D6E2166596F0032F67B /* svpdata.cxx */,
+				BEA20D6F2166596F0032F67B /* svpdummies.cxx */,
+				BEA20D662166596F0032F67B /* svpframe.cxx */,
+				BEA20D692166596F0032F67B /* svpgdi.cxx */,
+				BEA20D6A2166596F0032F67B /* svpglyphcache.cxx */,
+				BEA20D6B2166596F0032F67B /* svpinst.cxx */,
+				BEA20D702166596F0032F67B /* svpprn.cxx */,
+				BEA20D6C2166596F0032F67B /* svptext.cxx */,
+				BEA20D652166596F0032F67B /* svpvd.cxx */,
+			);
+			name = headless;
+			sourceTree = "<group>";
+		};
 /* End PBXGroup section */
 
 /* Begin PBXNativeTarget section */
commit 29b0e31c941c84cf5261c0d356f8b350ace6975c
Author:     Tor Lillqvist <tml at collabora.com>
AuthorDate: Wed Oct 3 12:23:26 2018 +0300
Commit:     Tor Lillqvist <tml at collabora.com>
CommitDate: Fri Oct 5 20:21:05 2018 +0300

    Add more source files from vcl for breakpointing convenience
    
    Change-Id: I61b030d277a7fbcc1fd714b3edafc7922c59483a

diff --git a/ios/UnitTest/UnitTest.xcodeproj/project.pbxproj b/ios/UnitTest/UnitTest.xcodeproj/project.pbxproj
index acba7f726b65..150dd30dc57b 100644
--- a/ios/UnitTest/UnitTest.xcodeproj/project.pbxproj
+++ b/ios/UnitTest/UnitTest.xcodeproj/project.pbxproj
@@ -69,6 +69,34 @@
 		BEA20D302163C2570032F67B /* salgdicommon.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = salgdicommon.cxx; path = ../../vcl/quartz/salgdicommon.cxx; sourceTree = "<group>"; };
 		BEA20D312163C2570032F67B /* salbmp.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = salbmp.cxx; path = ../../vcl/quartz/salbmp.cxx; sourceTree = "<group>"; };
 		BEA20D322163C2570032F67B /* salgdi.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = salgdi.cxx; path = ../../vcl/quartz/salgdi.cxx; sourceTree = "<group>"; };
+		BEA20D372164BAB80032F67B /* salusereventlist.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = salusereventlist.cxx; path = ../../vcl/source/app/salusereventlist.cxx; sourceTree = "<group>"; };
+		BEA20D382164BAB80032F67B /* dbggui.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = dbggui.cxx; path = ../../vcl/source/app/dbggui.cxx; sourceTree = "<group>"; };
+		BEA20D392164BAB80032F67B /* IconThemeInfo.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = IconThemeInfo.cxx; path = ../../vcl/source/app/IconThemeInfo.cxx; sourceTree = "<group>"; };
+		BEA20D3A2164BAB80032F67B /* timer.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = timer.cxx; path = ../../vcl/source/app/timer.cxx; sourceTree = "<group>"; };
+		BEA20D3B2164BAB80032F67B /* customweld.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = customweld.cxx; path = ../../vcl/source/app/customweld.cxx; sourceTree = "<group>"; };
+		BEA20D3C2164BAB80032F67B /* vclevent.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = vclevent.cxx; path = ../../vcl/source/app/vclevent.cxx; sourceTree = "<group>"; };
+		BEA20D3D2164BAB80032F67B /* settings.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = settings.cxx; path = ../../vcl/source/app/settings.cxx; sourceTree = "<group>"; };
+		BEA20D3E2164BAB80032F67B /* salplug.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = salplug.cxx; path = ../../vcl/source/app/salplug.cxx; sourceTree = "<group>"; };
+		BEA20D3F2164BAB80032F67B /* i18nhelp.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = i18nhelp.cxx; path = ../../vcl/source/app/i18nhelp.cxx; sourceTree = "<group>"; };
+		BEA20D402164BAB80032F67B /* sound.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = sound.cxx; path = ../../vcl/source/app/sound.cxx; sourceTree = "<group>"; };
+		BEA20D412164BAB80032F67B /* svapp.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = svapp.cxx; path = ../../vcl/source/app/svapp.cxx; sourceTree = "<group>"; };
+		BEA20D422164BAB80032F67B /* idle.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = idle.cxx; path = ../../vcl/source/app/idle.cxx; sourceTree = "<group>"; };
+		BEA20D432164BAB80032F67B /* help.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = help.cxx; path = ../../vcl/source/app/help.cxx; sourceTree = "<group>"; };
+		BEA20D442164BAB80032F67B /* IconThemeSelector.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = IconThemeSelector.cxx; path = ../../vcl/source/app/IconThemeSelector.cxx; sourceTree = "<group>"; };
+		BEA20D452164BAB80032F67B /* brand.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = brand.cxx; path = ../../vcl/source/app/brand.cxx; sourceTree = "<group>"; };
+		BEA20D462164BAB80032F67B /* IconThemeScanner.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = IconThemeScanner.cxx; path = ../../vcl/source/app/IconThemeScanner.cxx; sourceTree = "<group>"; };
+		BEA20D472164BAB80032F67B /* session.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = session.cxx; path = ../../vcl/source/app/session.cxx; sourceTree = "<group>"; };
+		BEA20D482164BAB80032F67B /* unohelp.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = unohelp.cxx; path = ../../vcl/source/app/unohelp.cxx; sourceTree = "<group>"; };
+		BEA20D492164BAB80032F67B /* svdata.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = svdata.cxx; path = ../../vcl/source/app/svdata.cxx; sourceTree = "<group>"; };
+		BEA20D4A2164BAB80032F67B /* dndhelp.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = dndhelp.cxx; path = ../../vcl/source/app/dndhelp.cxx; sourceTree = "<group>"; };
+		BEA20D4B2164BAB80032F67B /* salvtables.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = salvtables.cxx; path = ../../vcl/source/app/salvtables.cxx; sourceTree = "<group>"; };
+		BEA20D4C2164BAB80032F67B /* scheduler.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = scheduler.cxx; path = ../../vcl/source/app/scheduler.cxx; sourceTree = "<group>"; };
+		BEA20D4D2164BAB80032F67B /* ITiledRenderable.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = ITiledRenderable.cxx; path = ../../vcl/source/app/ITiledRenderable.cxx; sourceTree = "<group>"; };
+		BEA20D4E2164BAB80032F67B /* stdtext.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = stdtext.cxx; path = ../../vcl/source/app/stdtext.cxx; sourceTree = "<group>"; };
+		BEA20D4F2164BAB80032F67B /* unohelp2.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = unohelp2.cxx; path = ../../vcl/source/app/unohelp2.cxx; sourceTree = "<group>"; };
+		BEA20D502164BAB80032F67B /* svmain.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = svmain.cxx; path = ../../vcl/source/app/svmain.cxx; sourceTree = "<group>"; };
+		BEA20D522164BB0D0032F67B /* iosinst.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = iosinst.cxx; path = ../../vcl/ios/iosinst.cxx; sourceTree = "<group>"; };
+		BEA20D532164BB0E0032F67B /* dummies.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = dummies.cxx; path = ../../vcl/ios/dummies.cxx; sourceTree = "<group>"; };
 /* End PBXFileReference section */
 
 /* Begin PBXFrameworksBuildPhase section */
@@ -162,6 +190,16 @@
 		BEA20D2B2163C2360032F67B /* vcl */ = {
 			isa = PBXGroup;
 			children = (
+				BEA20D342164BA8B0032F67B /* app */,
+				BEA20D512164BAF00032F67B /* ios */,
+				BEA20D332164BA7C0032F67B /* quartz */,
+			);
+			name = vcl;
+			sourceTree = "<group>";
+		};
+		BEA20D332164BA7C0032F67B /* quartz */ = {
+			isa = PBXGroup;
+			children = (
 				BEA20D2D2163C2570032F67B /* ctfonts.cxx */,
 				BEA20D312163C2570032F67B /* salbmp.cxx */,
 				BEA20D322163C2570032F67B /* salgdi.cxx */,
@@ -170,7 +208,49 @@
 				BEA20D2F2163C2570032F67B /* salvd.cxx */,
 				BEA20D2E2163C2570032F67B /* utils.cxx */,
 			);
-			name = vcl;
+			name = quartz;
+			sourceTree = "<group>";
+		};
+		BEA20D342164BA8B0032F67B /* app */ = {
+			isa = PBXGroup;
+			children = (
+				BEA20D452164BAB80032F67B /* brand.cxx */,
+				BEA20D3B2164BAB80032F67B /* customweld.cxx */,
+				BEA20D382164BAB80032F67B /* dbggui.cxx */,
+				BEA20D4A2164BAB80032F67B /* dndhelp.cxx */,
+				BEA20D432164BAB80032F67B /* help.cxx */,
+				BEA20D3F2164BAB80032F67B /* i18nhelp.cxx */,
+				BEA20D392164BAB80032F67B /* IconThemeInfo.cxx */,
+				BEA20D462164BAB80032F67B /* IconThemeScanner.cxx */,
+				BEA20D442164BAB80032F67B /* IconThemeSelector.cxx */,
+				BEA20D422164BAB80032F67B /* idle.cxx */,
+				BEA20D4D2164BAB80032F67B /* ITiledRenderable.cxx */,
+				BEA20D3E2164BAB80032F67B /* salplug.cxx */,
+				BEA20D372164BAB80032F67B /* salusereventlist.cxx */,
+				BEA20D4B2164BAB80032F67B /* salvtables.cxx */,
+				BEA20D4C2164BAB80032F67B /* scheduler.cxx */,
+				BEA20D472164BAB80032F67B /* session.cxx */,
+				BEA20D3D2164BAB80032F67B /* settings.cxx */,
+				BEA20D402164BAB80032F67B /* sound.cxx */,
+				BEA20D4E2164BAB80032F67B /* stdtext.cxx */,
+				BEA20D412164BAB80032F67B /* svapp.cxx */,
+				BEA20D492164BAB80032F67B /* svdata.cxx */,
+				BEA20D502164BAB80032F67B /* svmain.cxx */,
+				BEA20D3A2164BAB80032F67B /* timer.cxx */,
+				BEA20D482164BAB80032F67B /* unohelp.cxx */,
+				BEA20D4F2164BAB80032F67B /* unohelp2.cxx */,
+				BEA20D3C2164BAB80032F67B /* vclevent.cxx */,
+			);
+			name = app;
+			sourceTree = "<group>";
+		};
+		BEA20D512164BAF00032F67B /* ios */ = {
+			isa = PBXGroup;
+			children = (
+				BEA20D532164BB0E0032F67B /* dummies.cxx */,
+				BEA20D522164BB0D0032F67B /* iosinst.cxx */,
+			);
+			name = ios;
 			sourceTree = "<group>";
 		};
 /* End PBXGroup section */
commit 2b9d6a6c567d44bcdd337e92b5f9b8238fd76d26
Author:     Tor Lillqvist <tml at collabora.com>
AuthorDate: Wed Oct 3 10:22:22 2018 +0300
Commit:     Tor Lillqvist <tml at collabora.com>
CommitDate: Fri Oct 5 20:21:05 2018 +0300

    Don't disable dbgutil here, let the developer choose in their autogen.input
    
    Change-Id: If6149dce7a0467a73720e9ea40e54705518f3316

diff --git a/distro-configs/LibreOfficeiOS.conf b/distro-configs/LibreOfficeiOS.conf
index b87327d97a35..96524c42b76e 100644
--- a/distro-configs/LibreOfficeiOS.conf
+++ b/distro-configs/LibreOfficeiOS.conf
@@ -15,7 +15,6 @@
 --disable-compiler-plugins
 --disable-cups
 --disable-database-connectivity
---disable-dbgutil
 --disable-dconf
 --disable-dependency-tracking
 --disable-extensions
commit 27491822195e131d04cf117dcd84b7059f281309
Author:     Tor Lillqvist <tml at collabora.com>
AuthorDate: Wed Oct 3 09:04:51 2018 +0300
Commit:     Tor Lillqvist <tml at collabora.com>
CommitDate: Fri Oct 5 20:21:05 2018 +0300

    Call also initializeForRendering() and registerCallback()
    
    ... to make the LibreOfficeKit usage more like a real app, to make
    sure that calling these doesn't cause any change in behaviour. (It
    didn't, as far as I could see.)
    
    Change-Id: Idded20c06031b46d5194ffeeb17309f2dbcdbaac

diff --git a/libreofficekit/qa/tilebench/tilebench.cxx b/libreofficekit/qa/tilebench/tilebench.cxx
index ee325c429267..2e0146da9f38 100644
--- a/libreofficekit/qa/tilebench/tilebench.cxx
+++ b/libreofficekit/qa/tilebench/tilebench.cxx
@@ -72,6 +72,7 @@ static void dumpTile(const int nWidth, const int nHeight, const int mode, const
     static int counter = 0;
     NSString *path = [NSString stringWithFormat:@"%@/dump_tile_%d.ppm", documentsDirectory, counter++];
     std::ofstream ofs([path UTF8String]);
+    std::cerr << "---> Dumping tile\n";
 #endif
     ofs << "P6\n"
         << nWidth << " "
@@ -312,6 +313,11 @@ static void testDialog( Document *pDocument, const char *uno_cmd )
     pDocument->destroyView(view);
 }
 
+static void documentCallback(const int type, const char* p, void* data)
+{
+    std::cerr << "Document callback " << type << ": " << (p ? p : "(null)") << "\n";
+}
+
 int main( int argc, char* argv[] )
 {
     int arg = 2;
@@ -381,6 +387,8 @@ int main( int argc, char* argv[] )
 
     if (pDocument)
     {
+        pDocument->initializeForRendering("{\".uno:Author\":{\"type\":\"string\",\"value\":\"Local Host #0\"}}");
+        pDocument->registerCallback(documentCallback, 0);
         if (!strcmp(mode, "--tile"))
         {
             const int max_parts = (argc > arg ? atoi(argv[arg++]) : -1);
commit 61f1d1564c8a058f6b040f7cb392c4884e4613e2
Author:     Tor Lillqvist <tml at collabora.com>
AuthorDate: Wed Oct 3 09:03:48 2018 +0300
Commit:     Tor Lillqvist <tml at collabora.com>
CommitDate: Fri Oct 5 20:21:05 2018 +0300

    Add files from vcl/quartz for easy breakpointing
    
    Change-Id: Iccf4b7156677c6db7e675b2c7a6926d8395d025a

diff --git a/ios/UnitTest/UnitTest.xcodeproj/project.pbxproj b/ios/UnitTest/UnitTest.xcodeproj/project.pbxproj
index 8a49473ded43..acba7f726b65 100644
--- a/ios/UnitTest/UnitTest.xcodeproj/project.pbxproj
+++ b/ios/UnitTest/UnitTest.xcodeproj/project.pbxproj
@@ -62,6 +62,13 @@
 		BE535623215D189E0068B3B7 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
 		BEA1A6FD215D1D9700A9323B /* libz.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = usr/lib/libz.tbd; sourceTree = SDKROOT; };
 		BEA1A6FF215D1D9F00A9323B /* libiconv.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libiconv.tbd; path = usr/lib/libiconv.tbd; sourceTree = SDKROOT; };
+		BEA20D2C2163C2570032F67B /* salgdiutils.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = salgdiutils.cxx; path = ../../vcl/quartz/salgdiutils.cxx; sourceTree = "<group>"; };
+		BEA20D2D2163C2570032F67B /* ctfonts.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = ctfonts.cxx; path = ../../vcl/quartz/ctfonts.cxx; sourceTree = "<group>"; };
+		BEA20D2E2163C2570032F67B /* utils.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = utils.cxx; path = ../../vcl/quartz/utils.cxx; sourceTree = "<group>"; };
+		BEA20D2F2163C2570032F67B /* salvd.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = salvd.cxx; path = ../../vcl/quartz/salvd.cxx; sourceTree = "<group>"; };
+		BEA20D302163C2570032F67B /* salgdicommon.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = salgdicommon.cxx; path = ../../vcl/quartz/salgdicommon.cxx; sourceTree = "<group>"; };
+		BEA20D312163C2570032F67B /* salbmp.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = salbmp.cxx; path = ../../vcl/quartz/salbmp.cxx; sourceTree = "<group>"; };
+		BEA20D322163C2570032F67B /* salgdi.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = salgdi.cxx; path = ../../vcl/quartz/salgdi.cxx; sourceTree = "<group>"; };
 /* End PBXFileReference section */
 
 /* Begin PBXFrameworksBuildPhase section */
@@ -103,6 +110,7 @@
 		BE535608215D189A0068B3B7 = {
 			isa = PBXGroup;
 			children = (
+				BEA20D2A2163C2210032F67B /* Core */,
 				BE535613215D189A0068B3B7 /* UnitTest */,
 				BE535612215D189A0068B3B7 /* Products */,
 				BEA1A6FC215D1D9700A9323B /* Frameworks */,
@@ -143,6 +151,28 @@
 			name = Frameworks;
 			sourceTree = "<group>";
 		};
+		BEA20D2A2163C2210032F67B /* Core */ = {
+			isa = PBXGroup;
+			children = (
+				BEA20D2B2163C2360032F67B /* vcl */,
+			);
+			name = Core;
+			sourceTree = "<group>";
+		};
+		BEA20D2B2163C2360032F67B /* vcl */ = {
+			isa = PBXGroup;
+			children = (
+				BEA20D2D2163C2570032F67B /* ctfonts.cxx */,
+				BEA20D312163C2570032F67B /* salbmp.cxx */,
+				BEA20D322163C2570032F67B /* salgdi.cxx */,
+				BEA20D302163C2570032F67B /* salgdicommon.cxx */,
+				BEA20D2C2163C2570032F67B /* salgdiutils.cxx */,
+				BEA20D2F2163C2570032F67B /* salvd.cxx */,
+				BEA20D2E2163C2570032F67B /* utils.cxx */,
+			);
+			name = vcl;
+			sourceTree = "<group>";
+		};
 /* End PBXGroup section */
 
 /* Begin PBXNativeTarget section */
commit 65da08ea8efef28fc45694d0606e51bb425f1d65
Author:     Tor Lillqvist <tml at collabora.com>
AuthorDate: Tue Oct 2 21:33:03 2018 +0300
Commit:     Tor Lillqvist <tml at collabora.com>
CommitDate: Fri Oct 5 20:21:04 2018 +0300

    Call SetOutputSizePixel() in the iOS case, too
    
    Change-Id: I844901f38ec1d93f4183e0678741fecdc7636139

diff --git a/desktop/source/lib/init.cxx b/desktop/source/lib/init.cxx
index 67b10ce4c934..d28bad27d375 100644
--- a/desktop/source/lib/init.cxx
+++ b/desktop/source/lib/init.cxx
@@ -2098,6 +2098,8 @@ static void doc_paintTile(LibreOfficeKitDocument* pThis,
     // the Size argument is irrelevant, I hope
     ScopedVclPtrInstance<VirtualDevice> pDevice(&aData, Size(1, 1), DeviceFormat::DEFAULT);
 
+    pDevice->SetOutputSizePixel(Size(nCanvasWidth, nCanvasHeight));
+
     pDoc->paintTile(*pDevice.get(), nCanvasWidth, nCanvasHeight,
                     nTilePosX, nTilePosY, nTileWidth, nTileHeight);
 


More information about the Libreoffice-commits mailing list