connectivity/source/commontools/TIndexColumns.cxx       |   48 ++---
 connectivity/source/commontools/TIndexes.cxx            |    2 
 connectivity/source/commontools/TKeyColumns.cxx         |   72 +++----
 connectivity/source/commontools/TKeys.cxx               |    2 
 connectivity/source/commontools/dbtools2.cxx            |  146 ++++++++--------
 connectivity/source/drivers/dbase/DIndexes.cxx          |   30 +--
 connectivity/source/drivers/evoab2/NColumns.cxx         |   49 ++---
 connectivity/source/drivers/evoab2/NTables.cxx          |   28 +--
 connectivity/source/drivers/file/FColumns.cxx           |   46 ++---
 connectivity/source/drivers/firebird/Connection.cxx     |   19 --
 connectivity/source/drivers/firebird/Connection.hxx     |    6 
 connectivity/source/drivers/hsqldb/HTables.cxx          |   40 ++--
 connectivity/source/drivers/jdbc/JDriver.cxx            |    7 
 connectivity/source/drivers/mysql_jdbc/YTables.cxx      |    2 
 connectivity/source/drivers/odbc/OPreparedStatement.cxx |    2 
 connectivity/source/parse/sqliterator.cxx               |    2 
 download.lst                                            |    4 
 external/skia/Library_skia.mk                           |   18 +
 external/skia/fix-warnings.patch.1                      |    4 
 external/skia/make-api-visible.patch.1                  |   70 ++++---
 external/skia/share-grcontext.patch.1                   |   71 ++++---
 external/skia/swap-buffers-rect.patch.1                 |    8 
 external/skia/windows-raster-surface-no-copies.patch.1  |    4 
 vcl/skia/osx/gdiimpl.cxx                                |   10 -
 vcl/skia/win/gdiimpl.cxx                                |   14 -
 vcl/skia/x11/gdiimpl.cxx                                |   18 +
 26 files changed, 372 insertions(+), 350 deletions(-)

New commits:
commit 02a5df653f12696b9738f6cd5f267d3592f85209
Author:     Noel Grandin <noel.gran...@collabora.co.uk>
AuthorDate: Tue Mar 11 13:15:41 2025 +0200
Commit:     Noel Grandin <noel.gran...@collabora.co.uk>
CommitDate: Wed Mar 12 06:48:08 2025 +0100

    use more concrete UNO in connectivity
    
    Change-Id: I3842706a0b28c3bf78c8f359ca2d2226ed5f1b07
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/182769
    Tested-by: Jenkins
    Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk>

diff --git a/connectivity/source/commontools/TIndexColumns.cxx 
b/connectivity/source/commontools/TIndexColumns.cxx
index 2f3b5fb0e043..4bf9115440b5 100644
--- a/connectivity/source/commontools/TIndexColumns.cxx
+++ b/connectivity/source/commontools/TIndexColumns.cxx
@@ -65,33 +65,33 @@ css::uno::Reference< css::beans::XPropertySet > 
OIndexColumns::createObject(cons
     xResult = m_pIndex->getTable()->getConnection()->getMetaData()->getColumns(
         Catalog, aSchema, aTable, _rName);
 
-    css::uno::Reference< css::beans::XPropertySet > xRet;
-    if ( xResult.is() )
+    if ( !xResult.is() )
+        return nullptr;
+
+    rtl::Reference< OIndexColumn > xRet;
+    Reference< XRow > xRow(xResult,UNO_QUERY);
+    while( xResult->next() )
     {
-        Reference< XRow > xRow(xResult,UNO_QUERY);
-        while( xResult->next() )
+        if ( xRow->getString(4) == _rName )
         {
-            if ( xRow->getString(4) == _rName )
-            {
-                sal_Int32 nDataType = xRow->getInt(5);
-                OUString aTypeName(xRow->getString(6));
-                sal_Int32 nSize = xRow->getInt(7);
-                sal_Int32 nDec  = xRow->getInt(9);
-                sal_Int32 nNull = xRow->getInt(11);
-                OUString aColumnDef(xRow->getString(13));
+            sal_Int32 nDataType = xRow->getInt(5);
+            OUString aTypeName(xRow->getString(6));
+            sal_Int32 nSize = xRow->getInt(7);
+            sal_Int32 nDec  = xRow->getInt(9);
+            sal_Int32 nNull = xRow->getInt(11);
+            OUString aColumnDef(xRow->getString(13));
 
-                xRet = new OIndexColumn(bAsc,
-                                        _rName,
-                                        aTypeName,
-                                        aColumnDef,
-                                        nNull,
-                                        nSize,
-                                        nDec,
-                                        nDataType,
-                                        true,
-                                        aCatalog, aSchema, aTable);
-                break;
-            }
+            xRet = new OIndexColumn(bAsc,
+                                    _rName,
+                                    aTypeName,
+                                    aColumnDef,
+                                    nNull,
+                                    nSize,
+                                    nDec,
+                                    nDataType,
+                                    true,
+                                    aCatalog, aSchema, aTable);
+            break;
         }
     }
 
diff --git a/connectivity/source/commontools/TIndexes.cxx 
b/connectivity/source/commontools/TIndexes.cxx
index ceb9aac439cc..5973806f1257 100644
--- a/connectivity/source/commontools/TIndexes.cxx
+++ b/connectivity/source/commontools/TIndexes.cxx
@@ -56,7 +56,7 @@ css::uno::Reference< css::beans::XPropertySet > 
OIndexesHelper::createObject(con
     if ( !xConnection.is() )
         return nullptr;
 
-    css::uno::Reference< css::beans::XPropertySet > xRet;
+    rtl::Reference< OIndexHelper > xRet;
     OUString aName,aQualifier;
     sal_Int32 nLen = _rName.indexOf('.');
     if ( nLen != -1 )
diff --git a/connectivity/source/commontools/TKeyColumns.cxx 
b/connectivity/source/commontools/TKeyColumns.cxx
index fd976a4e2085..341e130df134 100644
--- a/connectivity/source/commontools/TKeyColumns.cxx
+++ b/connectivity/source/commontools/TKeyColumns.cxx
@@ -70,48 +70,46 @@ css::uno::Reference< css::beans::XPropertySet > 
OKeyColumnsHelper::createObject(
         }
     }
 
-    css::uno::Reference< css::beans::XPropertySet > xRet;
-
     // now describe the column _rName and set his related column
     xResult = m_pKey->getTable()->getMetaData()->getColumns(Catalog, aSchema, 
aTable, _rName);
 
-    if ( xResult.is() )
+    if ( !xResult.is() )
+        return nullptr;
+
+    Reference< XRow > xRow(xResult,UNO_QUERY);
+    if ( !xResult->next() )
+        return nullptr;
+
+    if ( xRow->getString(4) != _rName )
+        return nullptr;
+
+    sal_Int32 nDataType = xRow->getInt(5);
+    OUString aTypeName(xRow->getString(6));
+    sal_Int32 nSize = xRow->getInt(7);
+    sal_Int32 nDec  = xRow->getInt(9);
+    sal_Int32 nNull = xRow->getInt(11);
+    OUString sColumnDef;
+    try
     {
-        Reference< XRow > xRow(xResult,UNO_QUERY);
-        if ( xResult->next() )
-        {
-            if ( xRow->getString(4) == _rName )
-            {
-                sal_Int32 nDataType = xRow->getInt(5);
-                OUString aTypeName(xRow->getString(6));
-                sal_Int32 nSize = xRow->getInt(7);
-                sal_Int32 nDec  = xRow->getInt(9);
-                sal_Int32 nNull = xRow->getInt(11);
-                OUString sColumnDef;
-                try
-                {
-                    sColumnDef = xRow->getString(13);
-                }
-                catch(const SQLException&)
-                {
-                    // sometimes we get an error when asking for this param
-                }
-
-                xRet = new OKeyColumn(aRefColumnName,
-                                    _rName,
-                                    aTypeName,
-                                    sColumnDef,
-                                    nNull,
-                                    nSize,
-                                    nDec,
-                                    nDataType,
-                                    isCaseSensitive(),
-                                    aCatalog,
-                                    aSchema,
-                                    aTable);
-            }
-        }
+        sColumnDef = xRow->getString(13);
     }
+    catch(const SQLException&)
+    {
+        // sometimes we get an error when asking for this param
+    }
+
+    rtl::Reference<OKeyColumn> xRet = new OKeyColumn(aRefColumnName,
+                        _rName,
+                        aTypeName,
+                        sColumnDef,
+                        nNull,
+                        nSize,
+                        nDec,
+                        nDataType,
+                        isCaseSensitive(),
+                        aCatalog,
+                        aSchema,
+                        aTable);
 
     return xRet;
 }
diff --git a/connectivity/source/commontools/TKeys.cxx 
b/connectivity/source/commontools/TKeys.cxx
index 47fb36515de3..26389277c580 100644
--- a/connectivity/source/commontools/TKeys.cxx
+++ b/connectivity/source/commontools/TKeys.cxx
@@ -52,7 +52,7 @@ OKeysHelper::OKeysHelper(   OTableHelper* _pTable,
 
 css::uno::Reference< css::beans::XPropertySet > 
OKeysHelper::createObject(const OUString& _rName)
 {
-    css::uno::Reference< css::beans::XPropertySet > xRet;
+    rtl::Reference< OTableKeyHelper > xRet;
 
     if(!_rName.isEmpty())
     {
diff --git a/connectivity/source/commontools/dbtools2.cxx 
b/connectivity/source/commontools/dbtools2.cxx
index c85a5440238f..6526de5d3ce0 100644
--- a/connectivity/source/commontools/dbtools2.cxx
+++ b/connectivity/source/commontools/dbtools2.cxx
@@ -408,100 +408,100 @@ namespace
                                           bool _bIsCurrency,
                                           sal_Int32 _nDataType)
     {
-        Reference<XPropertySet> xProp;
         Reference<XDatabaseMetaData> xMetaData = _xConnection->getMetaData();
         Reference< XResultSet > xResult = xMetaData->getColumns(_aCatalog, 
_aSchema, _aTable, _rQueryName);
         OUString sCatalog;
         _aCatalog >>= sCatalog;
 
-        if ( xResult.is() )
+        if ( !xResult.is() )
+            return nullptr;
+
+        rtl::Reference<connectivity::sdbcx::OColumn> xProp;
+        UStringMixEqual aMixCompare(_bCase);
+        Reference< XRow > xRow(xResult,UNO_QUERY);
+        while( xResult->next() )
         {
-            UStringMixEqual aMixCompare(_bCase);
-            Reference< XRow > xRow(xResult,UNO_QUERY);
-            while( xResult->next() )
+            if ( aMixCompare(xRow->getString(4),_rName) )
             {
-                if ( aMixCompare(xRow->getString(4),_rName) )
+                sal_Int32       nField5 = xRow->getInt(5);
+                OUString aField6 = xRow->getString(6);
+                sal_Int32       nField7 = xRow->getInt(7)
+                            ,   nField9 = xRow->getInt(9)
+                            ,   nField11= xRow->getInt(11);
+                OUString sField12 = xRow->getString(12),
+                                sField13 = xRow->getString(13);
+                ::comphelper::disposeComponent(xRow);
+
+                bool bAutoIncrement = _bIsAutoIncrement
+                        ,bIsCurrency    = _bIsCurrency;
+                if ( _bQueryForInfo )
                 {
-                    sal_Int32       nField5 = xRow->getInt(5);
-                    OUString aField6 = xRow->getString(6);
-                    sal_Int32       nField7 = xRow->getInt(7)
-                                ,   nField9 = xRow->getInt(9)
-                                ,   nField11= xRow->getInt(11);
-                    OUString sField12 = xRow->getString(12),
-                                    sField13 = xRow->getString(13);
-                    ::comphelper::disposeComponent(xRow);
-
-                    bool bAutoIncrement = _bIsAutoIncrement
-                            ,bIsCurrency    = _bIsCurrency;
-                    if ( _bQueryForInfo )
+                    const OUString sQuote = 
xMetaData->getIdentifierQuoteString();
+                    OUString sQuotedName  = 
::dbtools::quoteName(sQuote,_rName);
+                    OUString sComposedName = 
composeTableNameForSelect(_xConnection, getString( _aCatalog ), _aSchema, 
_aTable );
+
+                    ColumnInformationMap aInfo((UStringMixLess(_bCase)));
+                    
collectColumnInformation(_xConnection,sComposedName,sQuotedName,aInfo);
+                    ColumnInformationMap::const_iterator aIter = aInfo.begin();
+                    if ( aIter != aInfo.end() )
                     {
-                        const OUString sQuote = 
xMetaData->getIdentifierQuoteString();
-                        OUString sQuotedName  = 
::dbtools::quoteName(sQuote,_rName);
-                        OUString sComposedName = 
composeTableNameForSelect(_xConnection, getString( _aCatalog ), _aSchema, 
_aTable );
-
-                        ColumnInformationMap aInfo((UStringMixLess(_bCase)));
-                        
collectColumnInformation(_xConnection,sComposedName,sQuotedName,aInfo);
-                        ColumnInformationMap::const_iterator aIter = 
aInfo.begin();
-                        if ( aIter != aInfo.end() )
-                        {
-                            bAutoIncrement  = aIter->second.first.first;
-                            bIsCurrency     = aIter->second.first.second;
-                            if ( DataType::OTHER == nField5 )
-                                nField5     = aIter->second.second;
-                        }
+                        bAutoIncrement  = aIter->second.first.first;
+                        bIsCurrency     = aIter->second.first.second;
+                        if ( DataType::OTHER == nField5 )
+                            nField5     = aIter->second.second;
                     }
-                    else if ( DataType::OTHER == nField5 )
-                        nField5 = _nDataType;
+                }
+                else if ( DataType::OTHER == nField5 )
+                    nField5 = _nDataType;
 
-                    if ( nField11 != ColumnValue::NO_NULLS )
+                if ( nField11 != ColumnValue::NO_NULLS )
+                {
+                    try
                     {
-                        try
+                        if ( _xPrimaryKeyColumns.is() )
                         {
-                            if ( _xPrimaryKeyColumns.is() )
-                            {
-                                if ( _xPrimaryKeyColumns->hasByName(_rName) )
-                                    nField11 = ColumnValue::NO_NULLS;
+                            if ( _xPrimaryKeyColumns->hasByName(_rName) )
+                                nField11 = ColumnValue::NO_NULLS;
 
-                            }
-                            else
+                        }
+                        else
+                        {
+                            Reference< XResultSet > xPKeys = 
xMetaData->getPrimaryKeys( _aCatalog, _aSchema, _aTable );
+                            Reference< XRow > xPKeyRow( xPKeys, 
UNO_QUERY_THROW );
+                            while( xPKeys->next() ) // there can be only one 
primary key
                             {
-                                Reference< XResultSet > xPKeys = 
xMetaData->getPrimaryKeys( _aCatalog, _aSchema, _aTable );
-                                Reference< XRow > xPKeyRow( xPKeys, 
UNO_QUERY_THROW );
-                                while( xPKeys->next() ) // there can be only 
one primary key
+                                OUString sKeyColumn = xPKeyRow->getString(4);
+                                if ( aMixCompare(_rName,sKeyColumn) )
                                 {
-                                    OUString sKeyColumn = 
xPKeyRow->getString(4);
-                                    if ( aMixCompare(_rName,sKeyColumn) )
-                                    {
-                                        nField11 = ColumnValue::NO_NULLS;
-                                        break;
-                                    }
+                                    nField11 = ColumnValue::NO_NULLS;
+                                    break;
                                 }
                             }
                         }
-                        catch(SQLException&)
-                        {
-                            TOOLS_WARN_EXCEPTION( "connectivity.commontools", 
"lcl_createSDBCXColumn" );
-                        }
                     }
-
-                    xProp = new connectivity::sdbcx::OColumn(_rName,
-                                                aField6,
-                                                sField13,
-                                                sField12,
-                                                nField11,
-                                                nField7,
-                                                nField9,
-                                                nField5,
-                                                bAutoIncrement,
-                                                false,
-                                                bIsCurrency,
-                                                _bCase,
-                                                sCatalog,
-                                                _aSchema,
-                                                _aTable);
-
-                    break;
+                    catch(SQLException&)
+                    {
+                        TOOLS_WARN_EXCEPTION( "connectivity.commontools", 
"lcl_createSDBCXColumn" );
+                    }
                 }
+
+                xProp = new connectivity::sdbcx::OColumn(_rName,
+                                            aField6,
+                                            sField13,
+                                            sField12,
+                                            nField11,
+                                            nField7,
+                                            nField9,
+                                            nField5,
+                                            bAutoIncrement,
+                                            false,
+                                            bIsCurrency,
+                                            _bCase,
+                                            sCatalog,
+                                            _aSchema,
+                                            _aTable);
+
+                break;
             }
         }
 
diff --git a/connectivity/source/drivers/dbase/DIndexes.cxx 
b/connectivity/source/drivers/dbase/DIndexes.cxx
index daee28bb9b51..1ade0679216c 100644
--- a/connectivity/source/drivers/dbase/DIndexes.cxx
+++ b/connectivity/source/drivers/dbase/DIndexes.cxx
@@ -45,23 +45,8 @@ css::uno::Reference< css::beans::XPropertySet > 
ODbaseIndexes::createObject(cons
         ::dbtools::throwGenericSQLException( sError, *m_pTable );
     }
 
-    css::uno::Reference< css::beans::XPropertySet > xRet;
     std::unique_ptr<SvStream> pFileStream = 
::connectivity::file::OFileTable::createStream_simpleError(sFile, 
StreamMode::READ | StreamMode::NOCREATE | StreamMode::SHARE_DENYWRITE);
-    if(pFileStream)
-    {
-        pFileStream->SetEndian(SvStreamEndian::LITTLE);
-        pFileStream->SetBufferSize(DINDEX_PAGE_SIZE);
-        ODbaseIndex::NDXHeader aHeader;
-
-        pFileStream->Seek(0);
-        ReadHeader(*pFileStream, aHeader);
-        pFileStream.reset();
-
-        rtl::Reference<ODbaseIndex> pIndex = new 
ODbaseIndex(m_pTable,aHeader,_rName);
-        xRet = pIndex;
-        pIndex->openIndexFile();
-    }
-    else
+    if(!pFileStream)
     {
         const OUString sError( 
m_pTable->getConnection()->getResources().getResourceStringWithSubstitution(
                 STR_COULD_NOT_LOAD_FILE,
@@ -69,7 +54,18 @@ css::uno::Reference< css::beans::XPropertySet > 
ODbaseIndexes::createObject(cons
              ) );
         ::dbtools::throwGenericSQLException( sError, *m_pTable );
     }
-    return xRet;
+
+    pFileStream->SetEndian(SvStreamEndian::LITTLE);
+    pFileStream->SetBufferSize(DINDEX_PAGE_SIZE);
+    ODbaseIndex::NDXHeader aHeader;
+
+    pFileStream->Seek(0);
+    ReadHeader(*pFileStream, aHeader);
+    pFileStream.reset();
+
+    rtl::Reference<ODbaseIndex> pIndex = new 
ODbaseIndex(m_pTable,aHeader,_rName);
+    pIndex->openIndexFile();
+    return pIndex;
 }
 
 void ODbaseIndexes::impl_refresh(  )
diff --git a/connectivity/source/drivers/evoab2/NColumns.cxx 
b/connectivity/source/drivers/evoab2/NColumns.cxx
index cbd8f7e20839..a07e12d764d7 100644
--- a/connectivity/source/drivers/evoab2/NColumns.cxx
+++ b/connectivity/source/drivers/evoab2/NColumns.cxx
@@ -42,33 +42,32 @@ css::uno::Reference< css::beans::XPropertySet > 
OEvoabColumns::createObject(cons
         sTableName,
         _rName);
 
-    css::uno::Reference< css::beans::XPropertySet > xRet;
-    if (xResult.is())
-    {
-        Reference< XRow > xRow(xResult,UNO_QUERY);
+    if (!xResult.is())
+        return nullptr;
 
-        while (xResult->next())
+    rtl::Reference< OColumn > xRet;
+    Reference< XRow > xRow(xResult,UNO_QUERY);
+    while (xResult->next())
+    {
+        if (xRow->getString(4) == _rName)
         {
-            if (xRow->getString(4) == _rName)
-            {
-                xRet = new OColumn(
-                        _rName,
-                        xRow->getString(6),
-                        xRow->getString(13),
-                        xRow->getString(12),
-                        xRow->getInt(11),
-                        xRow->getInt(7),
-                        xRow->getInt(9),
-                        xRow->getInt(5),
-                        false,
-                        false,
-                        false,
-                        true,
-                        sCatalogName,
-                        sSchemaName,
-                        sTableName);
-                break;
-            }
+            xRet = new OColumn(
+                    _rName,
+                    xRow->getString(6),
+                    xRow->getString(13),
+                    xRow->getString(12),
+                    xRow->getInt(11),
+                    xRow->getInt(7),
+                    xRow->getInt(9),
+                    xRow->getInt(5),
+                    false,
+                    false,
+                    false,
+                    true,
+                    sCatalogName,
+                    sSchemaName,
+                    sTableName);
+            break;
         }
     }
 
diff --git a/connectivity/source/drivers/evoab2/NTables.cxx 
b/connectivity/source/drivers/evoab2/NTables.cxx
index 405ce9b4040a..f124f6dbf92a 100644
--- a/connectivity/source/drivers/evoab2/NTables.cxx
+++ b/connectivity/source/drivers/evoab2/NTables.cxx
@@ -37,21 +37,21 @@ css::uno::Reference< css::beans::XPropertySet > 
OEvoabTables::createObject(const
 
     Reference< XResultSet > xResult = 
m_xMetaData->getTables(Any(),u"%"_ustr,aName,aTypes);
 
-    css::uno::Reference< css::beans::XPropertySet > xRet;
-    if(xResult.is())
+    rtl::Reference< OEvoabTable > xRet;
+    if(!xResult.is())
+        return nullptr;
+
+    Reference< XRow > xRow(xResult,UNO_QUERY);
+    if(xResult->next()) // there can be only one table with this name
     {
-        Reference< XRow > xRow(xResult,UNO_QUERY);
-        if(xResult->next()) // there can be only one table with this name
-        {
-            xRet = new OEvoabTable(
-                    this,
-                    static_cast<OEvoabCatalog&>(m_rParent).getConnection(),
-                    aName,
-                    xRow->getString(4),
-                    xRow->getString(5),
-                    u""_ustr,
-                    u""_ustr);
-        }
+        xRet = new OEvoabTable(
+                this,
+                static_cast<OEvoabCatalog&>(m_rParent).getConnection(),
+                aName,
+                xRow->getString(4),
+                xRow->getString(5),
+                u""_ustr,
+                u""_ustr);
     }
 
     ::comphelper::disposeComponent(xResult);
diff --git a/connectivity/source/drivers/file/FColumns.cxx 
b/connectivity/source/drivers/file/FColumns.cxx
index 55727c9a48f0..dbe95ed16d55 100644
--- a/connectivity/source/drivers/file/FColumns.cxx
+++ b/connectivity/source/drivers/file/FColumns.cxx
@@ -36,31 +36,31 @@ css::uno::Reference< css::beans::XPropertySet > 
OColumns::createObject(const OUS
     Reference< XResultSet > xResult = 
m_pTable->getConnection()->getMetaData()->getColumns(Any(),
     sSchemaName, sTableName, _rName);
 
-    css::uno::Reference< css::beans::XPropertySet > xRet;
-    if(xResult.is())
+    if(!xResult.is())
+        return nullptr;
+
+    rtl::Reference< sdbcx::OColumn > xRet;
+    Reference< XRow > xRow(xResult,UNO_QUERY);
+    while(xResult->next())
     {
-        Reference< XRow > xRow(xResult,UNO_QUERY);
-        while(xResult->next())
+        if(xRow->getString(4) == _rName)
         {
-            if(xRow->getString(4) == _rName)
-            {
-                xRet = new sdbcx::OColumn(_rName,
-                                            xRow->getString(6),
-                                            xRow->getString(13),
-                                            xRow->getString(12),
-                                            xRow->getInt(11),
-                                            xRow->getInt(7),
-                                            xRow->getInt(9),
-                                            xRow->getInt(5),
-                                            false,
-                                            false,
-                                            false,
-                                            
m_pTable->getConnection()->getMetaData()->supportsMixedCaseQuotedIdentifiers(),
-                                            sCatalogName,
-                                            sSchemaName,
-                                            sTableName);
-                break;
-            }
+            xRet = new sdbcx::OColumn(_rName,
+                                        xRow->getString(6),
+                                        xRow->getString(13),
+                                        xRow->getString(12),
+                                        xRow->getInt(11),
+                                        xRow->getInt(7),
+                                        xRow->getInt(9),
+                                        xRow->getInt(5),
+                                        false,
+                                        false,
+                                        false,
+                                        
m_pTable->getConnection()->getMetaData()->supportsMixedCaseQuotedIdentifiers(),
+                                        sCatalogName,
+                                        sSchemaName,
+                                        sTableName);
+            break;
         }
     }
 
diff --git a/connectivity/source/drivers/firebird/Connection.cxx 
b/connectivity/source/drivers/firebird/Connection.cxx
index d81c3625d5fa..8f2711645ca7 100644
--- a/connectivity/source/drivers/firebird/Connection.cxx
+++ b/connectivity/source/drivers/firebird/Connection.cxx
@@ -709,11 +709,11 @@ Reference< XDatabaseMetaData > SAL_CALL 
Connection::getMetaData(  )
 
     // here we have to create the class with biggest interface
     // The answer is 42 :-)
-    Reference< XDatabaseMetaData > xMetaData = m_xMetaData;
+    rtl::Reference< ODatabaseMetaData > xMetaData = m_xMetaData.get();
     if(!xMetaData.is())
     {
         xMetaData = new ODatabaseMetaData(this); // need the connection 
because it can return it
-        m_xMetaData = xMetaData;
+        m_xMetaData = xMetaData.get();
     }
 
     return xMetaData;
@@ -879,7 +879,7 @@ void Connection::disposing()
 
     disposeStatements();
 
-    m_xMetaData = css::uno::WeakReference< css::sdbc::XDatabaseMetaData>();
+    m_xMetaData.clear();
 
     ISC_STATUS_ARRAY status;            /* status vector */
     if (m_aTransactionHandle)
@@ -949,18 +949,13 @@ uno::Reference< XTablesSupplier > 
Connection::createCatalog()
     MutexGuard aGuard(m_aMutex);
 
     // m_xCatalog is a weak reference. Reuse it if it still exists.
-    Reference< XTablesSupplier > xCatalog = m_xCatalog;
-    if (xCatalog.is())
-    {
-        return xCatalog;
-    }
-    else
+    rtl::Reference< Catalog > xCatalog = m_xCatalog.get();
+    if (!xCatalog.is())
     {
         xCatalog = new Catalog(this);
-        m_xCatalog = xCatalog;
-        return m_xCatalog;
+        m_xCatalog = xCatalog.get();
     }
-
+    return xCatalog;
 }
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab cinoptions=b1,g0,N-s 
cinkeys+=0=break: */
diff --git a/connectivity/source/drivers/firebird/Connection.hxx 
b/connectivity/source/drivers/firebird/Connection.hxx
index a0a033f1f1db..524c0a7c476f 100644
--- a/connectivity/source/drivers/firebird/Connection.hxx
+++ b/connectivity/source/drivers/firebird/Connection.hxx
@@ -27,6 +27,7 @@
 #include <memory>
 #include <OTypeInfo.hxx>
 #include <unotools/tempfile.hxx>
+#include <unotools/weakref.hxx>
 
 #include <com/sun/star/beans/PropertyValue.hpp>
 #include <com/sun/star/document/DocumentEvent.hpp>
@@ -54,6 +55,7 @@ namespace connectivity::firebird
     class OStatementCommonBase;
     class FirebirdDriver;
     class ODatabaseMetaData;
+    class Catalog;
 
 
     typedef std::vector< ::connectivity::OTypeInfo>   TTypeInfoVector;
@@ -136,9 +138,9 @@ namespace connectivity::firebird
         isc_db_handle       m_aDBHandle;
         isc_tr_handle       m_aTransactionHandle;
 
-        css::uno::WeakReference< css::sdbcx::XTablesSupplier>
+        unotools::WeakReference< Catalog >
                             m_xCatalog;
-        css::uno::WeakReference< css::sdbc::XDatabaseMetaData >
+        unotools::WeakReference< ODatabaseMetaData >
                             m_xMetaData;
         /** Statements owned by this connection. */
         OWeakRefArray       m_aStatements;
diff --git a/connectivity/source/drivers/hsqldb/HTables.cxx 
b/connectivity/source/drivers/hsqldb/HTables.cxx
index 390f36e19a04..dcb1ee1a33d9 100644
--- a/connectivity/source/drivers/hsqldb/HTables.cxx
+++ b/connectivity/source/drivers/hsqldb/HTables.cxx
@@ -51,28 +51,28 @@ css::uno::Reference< css::beans::XPropertySet > 
OTables::createObject(const OUSt
         aCatalog <<= sCatalog;
     Reference< XResultSet > xResult = 
m_xMetaData->getTables(aCatalog,sSchema,sTable,sTableTypes);
 
-    css::uno::Reference< css::beans::XPropertySet > xRet;
-    if ( xResult.is() )
+    if ( !xResult.is() )
+        return nullptr;
+
+    rtl::Reference< OHSQLTable > xRet;
+    Reference< XRow > xRow(xResult,UNO_QUERY);
+    if ( xResult->next() ) // there can be only one table with this name
     {
-        Reference< XRow > xRow(xResult,UNO_QUERY);
-        if ( xResult->next() ) // there can be only one table with this name
-        {
-            sal_Int32 nPrivileges = ::dbtools::getTablePrivileges( 
m_xMetaData, sCatalog, sSchema, sTable );
-            if ( m_xMetaData->isReadOnly() )
-                nPrivileges &= ~( Privilege::INSERT | Privilege::UPDATE | 
Privilege::DELETE | Privilege::CREATE | Privilege::ALTER | Privilege::DROP );
-
-            // obtain privileges
-            xRet = new OHSQLTable( this
-                                                
,static_cast<OHCatalog&>(m_rParent).getConnection()
-                                                ,sTable
-                                                ,xRow->getString(4)
-                                                ,xRow->getString(5)
-                                                ,sSchema
-                                                ,sCatalog
-                                                ,nPrivileges);
-        }
-        ::comphelper::disposeComponent(xResult);
+        sal_Int32 nPrivileges = ::dbtools::getTablePrivileges( m_xMetaData, 
sCatalog, sSchema, sTable );
+        if ( m_xMetaData->isReadOnly() )
+            nPrivileges &= ~( Privilege::INSERT | Privilege::UPDATE | 
Privilege::DELETE | Privilege::CREATE | Privilege::ALTER | Privilege::DROP );
+
+        // obtain privileges
+        xRet = new OHSQLTable( this
+                                
,static_cast<OHCatalog&>(m_rParent).getConnection()
+                                ,sTable
+                                ,xRow->getString(4)
+                                ,xRow->getString(5)
+                                ,sSchema
+                                ,sCatalog
+                                ,nPrivileges);
     }
+    ::comphelper::disposeComponent(xResult);
 
     return xRet;
 }
diff --git a/connectivity/source/drivers/jdbc/JDriver.cxx 
b/connectivity/source/drivers/jdbc/JDriver.cxx
index f2f4bf55a08e..efbe25272bea 100644
--- a/connectivity/source/drivers/jdbc/JDriver.cxx
+++ b/connectivity/source/drivers/jdbc/JDriver.cxx
@@ -68,12 +68,11 @@ Reference< XConnection > SAL_CALL java_sql_Driver::connect( 
const OUString& url,
 {
     m_aLogger.log( LogLevel::INFO, STR_LOG_DRIVER_CONNECTING_URL, url );
 
-    Reference< XConnection > xOut;
+    rtl::Reference< java_sql_Connection > xOut;
     if ( acceptsURL(url ) )
     {
-        rtl::Reference<java_sql_Connection> pConnection = new 
java_sql_Connection( *this );
-        xOut = pConnection;
-        if ( !pConnection->construct(url,info) )
+        xOut = new java_sql_Connection( *this );
+        if ( !xOut->construct(url,info) )
             xOut.clear(); // an error occurred and the java driver didn't 
throw an exception
         else
             m_aLogger.log( LogLevel::INFO, STR_LOG_DRIVER_SUCCESS );
diff --git a/connectivity/source/drivers/mysql_jdbc/YTables.cxx 
b/connectivity/source/drivers/mysql_jdbc/YTables.cxx
index 999ff79d9e82..b333db670623 100644
--- a/connectivity/source/drivers/mysql_jdbc/YTables.cxx
+++ b/connectivity/source/drivers/mysql_jdbc/YTables.cxx
@@ -54,7 +54,7 @@ css::uno::Reference<css::beans::XPropertySet> 
OTables::createObject(const OUStri
         aCatalog <<= sCatalog;
     Reference<XResultSet> xResult = m_xMetaData->getTables(aCatalog, sSchema, 
sTable, sTableTypes);
 
-    css::uno::Reference<css::beans::XPropertySet> xRet;
+    rtl::Reference<OMySQLTable> xRet;
     if (xResult.is())
     {
         Reference<XRow> xRow(xResult, UNO_QUERY);
diff --git a/connectivity/source/drivers/odbc/OPreparedStatement.cxx 
b/connectivity/source/drivers/odbc/OPreparedStatement.cxx
index b382b34e9eb5..e0225e0f6407 100644
--- a/connectivity/source/drivers/odbc/OPreparedStatement.cxx
+++ b/connectivity/source/drivers/odbc/OPreparedStatement.cxx
@@ -231,7 +231,7 @@ Reference< XResultSet > SAL_CALL 
OPreparedStatement::executeQuery(  )
     ::osl::MutexGuard aGuard( m_aMutex );
     checkDisposed(OStatement_BASE::rBHelper.bDisposed);
 
-    Reference< XResultSet > rs;
+    rtl::Reference< OResultSet > rs;
 
     prepareStatement();
 
diff --git a/connectivity/source/parse/sqliterator.cxx 
b/connectivity/source/parse/sqliterator.cxx
index e0ea16b36ae0..4e322731a146 100644
--- a/connectivity/source/parse/sqliterator.cxx
+++ b/connectivity/source/parse/sqliterator.cxx
@@ -1587,7 +1587,7 @@ void OSQLParseTreeIterator::setSelectColumnName(const 
OUString & rColumnName,con
         // without table specified
         if ( !bFkt )
         {
-            Reference< XPropertySet> xNewColumn;
+            rtl::Reference< OParseColumn> xNewColumn;
 
             for (auto const& table : *m_pImpl->m_pTables)
             {
commit 0ce35e70da08cccb20302f1acc36521dc1b1bec2
Author:     Noel Grandin <noel.gran...@collabora.co.uk>
AuthorDate: Tue Mar 11 15:06:56 2025 +0200
Commit:     Noel Grandin <noel.gran...@collabora.co.uk>
CommitDate: Wed Mar 12 06:47:55 2025 +0100

    update to skia m133
    
    Change-Id: Id12146bfd28003acc146fc45fdea4d9e4323539e
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/182778
    Tested-by: Jenkins
    Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk>

diff --git a/download.lst b/download.lst
index 4e31ed9c1b86..1895c61fe1f0 100644
--- a/download.lst
+++ b/download.lst
@@ -631,8 +631,8 @@ RHINO_TARBALL := rhino-1.7.15.zip
 # three static lines
 # so that git cherry-pick
 # will not run into conflicts
-SKIA_SHA256SUM := 
103f63a8414a506c887cfe788f7653c130df1278b2cc1d1ae6827b2b90e59377
-SKIA_TARBALL := skia-m132-ee9db7d1348f76780fd0184b9b0243d653e36411.tar.xz
+SKIA_SHA256SUM := 
af3676facdf12d59a9ad5a0f63c60e6bb47f7d6bb243acdd0c6abc8c9b0b3c59
+SKIA_TARBALL := skia-m133-ecebe831881cdf52c65df518777210071f7970dd.tar.xz
 # three static lines
 # so that git cherry-pick
 # will not run into conflicts
diff --git a/external/skia/Library_skia.mk b/external/skia/Library_skia.mk
index e9a43a35bbdf..26e9addf824b 100644
--- a/external/skia/Library_skia.mk
+++ b/external/skia/Library_skia.mk
@@ -317,6 +317,7 @@ $(eval $(call 
gb_Library_add_generated_exception_objects,skia,\
     UnpackedTarball/skia/src/codec/SkCodecImageGenerator \
     UnpackedTarball/skia/src/codec/SkColorPalette \
     UnpackedTarball/skia/src/codec/SkExif \
+    UnpackedTarball/skia/src/codec/SkGainmapInfo \
     UnpackedTarball/skia/src/codec/SkImageGenerator_FromEncoded \
     UnpackedTarball/skia/src/codec/SkMaskSwizzler \
     UnpackedTarball/skia/src/codec/SkPixmapUtils \
@@ -341,6 +342,7 @@ $(eval $(call 
gb_Library_add_generated_exception_objects,skia,\
 $(eval $(call gb_Library_add_generated_exception_objects,skia,\
     UnpackedTarball/skia/src/codec/SkPngCodec \
     UnpackedTarball/skia/src/codec/SkPngCodecBase \
+    UnpackedTarball/skia/src/codec/SkPngCompositeChunkReader \
 ))
 
 
@@ -362,7 +364,6 @@ $(eval $(call 
gb_Library_add_generated_exception_objects,skia,\
     UnpackedTarball/skia/src/base/SkQuads \
     UnpackedTarball/skia/src/base/SkSafeMath \
     UnpackedTarball/skia/src/base/SkSemaphore \
-    UnpackedTarball/skia/src/base/SkSharedMutex \
     UnpackedTarball/skia/src/base/SkSpinlock \
     UnpackedTarball/skia/src/base/SkTDArray \
     UnpackedTarball/skia/src/base/SkTSearch \
@@ -639,7 +640,13 @@ $(eval $(call 
gb_Library_add_generated_exception_objects,skia,\
     UnpackedTarball/skia/src/encode/SkICC \
 ))
 
-# from file skia/gn/core.gni:792, target "skia_encode_png_srcs"
+# from file skia/gn/core.gni:792, target "skia_encode_png_base"
+#
+$(eval $(call gb_Library_add_generated_exception_objects,skia,\
+    UnpackedTarball/skia/src/encode/SkPngEncoderBase \
+))
+
+# from file skia/gn/core.gni:800, target "skia_encode_png_srcs"
 #
 $(eval $(call gb_Library_add_generated_exception_objects,skia,\
     UnpackedTarball/skia/src/encode/SkPngEncoderImpl \
@@ -710,6 +717,12 @@ $(eval $(call 
gb_Library_add_generated_exception_objects,skia,\
     UnpackedTarball/skia/src/effects/imagefilters/SkShaderImageFilter \
 ))
 
+# from file skia/gn/ports.gni:130, target "skia_ports_typeface_proxy_sources"
+#
+$(eval $(call gb_Library_add_generated_exception_objects,skia,\
+    UnpackedTarball/skia/src/ports/SkTypeface_proxy \
+))
+
 # from file skia/gn/sksl.gni:42, target "skia_sksl_sources"
 #
 $(eval $(call gb_Library_add_generated_exception_objects,skia,\
@@ -846,7 +859,6 @@ $(eval $(call 
gb_Library_add_generated_exception_objects,skia,\
     UnpackedTarball/skia/src/utils/SkEventTracer \
     UnpackedTarball/skia/src/utils/SkFloatToDecimal \
     UnpackedTarball/skia/src/sksl/SkSLModuleDataDefault \
-    UnpackedTarball/skia/src/utils/SkJSON \
     UnpackedTarball/skia/src/utils/SkJSONWriter \
     UnpackedTarball/skia/src/utils/SkMatrix22 \
     UnpackedTarball/skia/src/utils/SkMultiPictureDocument \
diff --git a/external/skia/fix-warnings.patch.1 
b/external/skia/fix-warnings.patch.1
index cc1a6fba0a41..735f6f11aa6b 100644
--- a/external/skia/fix-warnings.patch.1
+++ b/external/skia/fix-warnings.patch.1
@@ -24,8 +24,8 @@ index f143dab013..be3cde0f4f 100644
 -    virtual void activate(bool isActive) {}
 +    virtual void activate(bool /*isActive*/) {}
  
-     const DisplayParams& getDisplayParams() { return fDisplayParams; }
-     virtual void setDisplayParams(const DisplayParams& params) = 0;
+     const DisplayParams* getDisplayParams() { return fDisplayParams.get(); }
+     virtual void setDisplayParams(std::unique_ptr<const DisplayParams>) = 0;
 --- skia/include/core/SkSamplingOptions.h.orig 2022-05-22 12:25:06.112544528 
+0200
 +++ skia/include/core/SkSamplingOptions.h      2022-05-22 12:25:09.207636134 
+0200
 @@ -97,7 +97,7 @@
diff --git a/external/skia/make-api-visible.patch.1 
b/external/skia/make-api-visible.patch.1
index 776f987a60f6..6285b4f8f9b5 100644
--- a/external/skia/make-api-visible.patch.1
+++ b/external/skia/make-api-visible.patch.1
@@ -8,7 +8,7 @@ diff -ur skia.org/tools/window/WindowContext.h 
skia/tools/window/WindowContext.h
 -class WindowContext {
 +class SK_API WindowContext {
  public:
-     WindowContext(const DisplayParams&);
+     WindowContext(std::unique_ptr<const DisplayParams>);
 
 diff -ur skia.org/tools/window/mac/GaneshMetalWindowContext_mac.h 
skia/tools/window/mac/GaneshMetalWindowContext_mac.h
 --- skia.org/tools/window/mac/GaneshMetalWindowContext_mac.h   2024-10-12 
15:57:21
@@ -21,12 +21,14 @@ diff -ur 
skia.org/tools/window/mac/GaneshMetalWindowContext_mac.h skia/tools/win
  #include <memory>
 
  namespace skwindow {
-@@ -15,7 +16,7 @@
- struct DisplayParams;
+@@ -15,8 +16,8 @@
+ class DisplayParams;
  struct MacWindowInfo;
 
--std::unique_ptr<WindowContext> MakeGaneshMetalForMac(const MacWindowInfo&, 
const DisplayParams&);
-+SK_API std::unique_ptr<WindowContext> MakeGaneshMetalForMac(const 
MacWindowInfo&, const DisplayParams&);
+-std::unique_ptr<WindowContext> MakeGaneshMetalForMac(const MacWindowInfo&,
+-                                                     std::unique_ptr<const 
DisplayParams>);
++SK_API std::unique_ptr<WindowContext> MakeGaneshMetalForMac(const 
MacWindowInfo&,
++                                                     std::unique_ptr<const 
DisplayParams>);
  }  // namespace skwindow
 
  #endif
@@ -41,12 +43,14 @@ diff -ur 
skia.org/tools/window/unix/GaneshGLWindowContext_unix.h skia/tools/wind
  #include <memory>
 
  namespace skwindow {
-@@ -15,7 +16,7 @@
- struct DisplayParams;
+@@ -15,8 +16,8 @@
+ class DisplayParams;
  struct XlibWindowInfo;
 
--std::unique_ptr<WindowContext> MakeGaneshGLForXlib(const XlibWindowInfo&, 
const DisplayParams&);
-+SK_API std::unique_ptr<WindowContext> MakeGaneshGLForXlib(const 
XlibWindowInfo&, const DisplayParams&);
+-std::unique_ptr<WindowContext> MakeGaneshGLForXlib(const XlibWindowInfo&,
+-                                                   std::unique_ptr<const 
DisplayParams>);
++SK_API std::unique_ptr<WindowContext> MakeGaneshGLForXlib(const 
XlibWindowInfo&,
++                                                   std::unique_ptr<const 
DisplayParams>);
  }  // namespace skwindow
 
  #endif
@@ -61,12 +65,14 @@ diff -ur 
skia.org/tools/window/unix/GaneshVulkanWindowContext_unix.h skia/tools/
  #include <memory>
 
  namespace skwindow {
-@@ -15,7 +16,7 @@
- struct DisplayParams;
+@@ -15,8 +16,8 @@
+ class DisplayParams;
  struct XlibWindowInfo;
 
--std::unique_ptr<WindowContext> MakeGaneshVulkanForXlib(const XlibWindowInfo&, 
const DisplayParams&);
-+SK_API std::unique_ptr<WindowContext> MakeGaneshVulkanForXlib(const 
XlibWindowInfo&, const DisplayParams&);
+-std::unique_ptr<WindowContext> MakeGaneshVulkanForXlib(const XlibWindowInfo&,
+-                                                       std::unique_ptr<const 
DisplayParams>);
++SK_API std::unique_ptr<WindowContext> MakeGaneshVulkanForXlib(const 
XlibWindowInfo&,
++                                                       std::unique_ptr<const 
DisplayParams>);
  }  // namespace skwindow
 
  #endif
@@ -82,12 +88,12 @@ diff -ur 
skia.org/tools/window/unix/GraphiteDawnVulkanWindowContext_unix.h skia/
 
  namespace skwindow {
 @@ -15,7 +16,7 @@
- struct DisplayParams;
+ class DisplayParams;
  struct XlibWindowInfo;
 
 -std::unique_ptr<WindowContext> MakeGraphiteDawnVulkanForXlib(const 
XlibWindowInfo&,
 +SK_API std::unique_ptr<WindowContext> MakeGraphiteDawnVulkanForXlib(const 
XlibWindowInfo&,
-                                                              const 
DisplayParams&);
+                                                              
std::unique_ptr<const DisplayParams>);
  }  // namespace skwindow
 
 diff -ur skia.org/tools/window/unix/RasterWindowContext_unix.h 
skia/tools/window/unix/RasterWindowContext_unix.h
@@ -101,12 +107,14 @@ diff -ur 
skia.org/tools/window/unix/RasterWindowContext_unix.h skia/tools/window
  #include <memory>
 
  namespace skwindow {
-@@ -15,7 +16,7 @@
- struct DisplayParams;
+@@ -15,8 +16,8 @@
+ class DisplayParams;
  struct XlibWindowInfo;
 
--std::unique_ptr<WindowContext> MakeRasterForXlib(const XlibWindowInfo&, const 
DisplayParams&);
-+SK_API std::unique_ptr<WindowContext> MakeRasterForXlib(const 
XlibWindowInfo&, const DisplayParams&);
+-std::unique_ptr<WindowContext> MakeRasterForXlib(const XlibWindowInfo&,
+-                                                 std::unique_ptr<const 
DisplayParams>);
++SK_API std::unique_ptr<WindowContext> MakeRasterForXlib(const XlibWindowInfo&,
++                                                 std::unique_ptr<const 
DisplayParams>);
  }  // namespace skwindow
 
  #endif
@@ -123,29 +131,29 @@ diff -ur 
skia.org/tools/window/win/WindowContextFactory_win.h skia/tools/window/
  namespace skwindow {
 
  class WindowContext;
- struct DisplayParams;
+ class DisplayParams;
 
  #ifdef SK_VULKAN
--std::unique_ptr<WindowContext> MakeVulkanForWin(HWND, const DisplayParams&);
-+SK_API std::unique_ptr<WindowContext> MakeVulkanForWin(HWND, const 
DisplayParams&);
+-std::unique_ptr<WindowContext> MakeVulkanForWin(HWND, std::unique_ptr<const 
DisplayParams>);
++SK_API std::unique_ptr<WindowContext> MakeVulkanForWin(HWND, 
std::unique_ptr<const DisplayParams>);
  #if defined(SK_GRAPHITE)
- std::unique_ptr<WindowContext> MakeGraphiteVulkanForWin(HWND, const 
DisplayParams&);
+ std::unique_ptr<WindowContext> MakeGraphiteVulkanForWin(HWND, 
std::unique_ptr<const DisplayParams>);
  #endif
  #endif
 
  #ifdef SK_GL
--std::unique_ptr<WindowContext> MakeGLForWin(HWND, const DisplayParams&);
-+SK_API std::unique_ptr<WindowContext> MakeGLForWin(HWND, const 
DisplayParams&);
+-std::unique_ptr<WindowContext> MakeGLForWin(HWND, std::unique_ptr<const 
DisplayParams>);
++SK_API std::unique_ptr<WindowContext> MakeGLForWin(HWND, 
std::unique_ptr<const DisplayParams>);
  #endif
 
  #ifdef SK_ANGLE
--std::unique_ptr<WindowContext> MakeANGLEForWin(HWND, const DisplayParams&);
-+SK_API std::unique_ptr<WindowContext> MakeANGLEForWin(HWND, const 
DisplayParams&);
+-std::unique_ptr<WindowContext> MakeANGLEForWin(HWND, std::unique_ptr<const 
DisplayParams>);
++SK_API std::unique_ptr<WindowContext> MakeANGLEForWin(HWND, 
std::unique_ptr<const DisplayParams>);
  #endif
 
  #ifdef SK_DIRECT3D
--std::unique_ptr<WindowContext> MakeD3D12ForWin(HWND, const DisplayParams&);
-+SK_API std::unique_ptr<WindowContext> MakeD3D12ForWin(HWND, const 
DisplayParams&);
+-std::unique_ptr<WindowContext> MakeD3D12ForWin(HWND, std::unique_ptr<const 
DisplayParams>);
++SK_API std::unique_ptr<WindowContext> MakeD3D12ForWin(HWND, 
std::unique_ptr<const DisplayParams>);
  #endif
 
  #ifdef SK_DAWN
@@ -153,8 +161,8 @@ diff -ur 
skia.org/tools/window/win/WindowContextFactory_win.h skia/tools/window/
  #endif
  #endif
 
--std::unique_ptr<WindowContext> MakeRasterForWin(HWND, const DisplayParams&);
-+SK_API std::unique_ptr<WindowContext> MakeRasterForWin(HWND, const 
DisplayParams&);
+-std::unique_ptr<WindowContext> MakeRasterForWin(HWND, std::unique_ptr<const 
DisplayParams>);
++SK_API std::unique_ptr<WindowContext> MakeRasterForWin(HWND, 
std::unique_ptr<const DisplayParams>);
 
  }  // namespace skwindow
 
diff --git a/external/skia/share-grcontext.patch.1 
b/external/skia/share-grcontext.patch.1
index 03ced66e4c31..2526b12a1223 100644
--- a/external/skia/share-grcontext.patch.1
+++ b/external/skia/share-grcontext.patch.1
@@ -74,8 +74,8 @@ diff -ur skia.org/tools/window/MetalWindowContext.h 
skia/tools/window/MetalWindo
 diff -ur skia.org/tools/window/MetalWindowContext.mm 
skia/tools/window/MetalWindowContext.mm
 --- skia.org/tools/window/MetalWindowContext.mm        2024-10-10 
14:11:32.362258108 +0200
 +++ skia/tools/window/MetalWindowContext.mm    2024-10-10 14:11:44.341323063 
+0200
-@@ -35,50 +35,84 @@
- }
+@@ -33,54 +33,88 @@
+         , fDrawableHandle(nil) {}
 
  void MetalWindowContext::initializeContext() {
 +    fShared = fGlobalShared;
@@ -93,10 +93,10 @@ diff -ur skia.org/tools/window/MetalWindowContext.mm 
skia/tools/window/MetalWind
 +    d->fDevice.reset(MTLCreateSystemDefaultDevice());
 +    d->fQueue.reset([*d->fDevice newCommandQueue]);
 
-     if (fDisplayParams.fMSAASampleCount > 1) {
+     if (fDisplayParams->msaaSampleCount() > 1) {
          if (@available(macOS 10.11, iOS 9.0, tvOS 9.0, *)) {
--            if (![*fDevice 
supportsTextureSampleCount:fDisplayParams.fMSAASampleCount]) {
-+            if (![*d->fDevice 
supportsTextureSampleCount:fDisplayParams.fMSAASampleCount]) {
+-            if (![*fDevice 
supportsTextureSampleCount:fDisplayParams->msaaSampleCount()]) {
++            if (![*d->fDevice 
supportsTextureSampleCount:fDisplayParams->msaaSampleCount()]) {
 +                fGlobalShared.reset();
                  return;
              }
@@ -105,7 +105,7 @@ diff -ur skia.org/tools/window/MetalWindowContext.mm 
skia/tools/window/MetalWind
              return;
          }
      }
--    fSampleCount = fDisplayParams.fMSAASampleCount;
+-    fSampleCount = fDisplayParams->msaaSampleCount();
 -    fStencilBits = 8;
 -
 -    fValid = this->onInitializeContext();
@@ -113,13 +113,17 @@ diff -ur skia.org/tools/window/MetalWindowContext.mm 
skia/tools/window/MetalWind
      GrMtlBackendContext backendContext = {};
 -    backendContext.fDevice.retain((GrMTLHandle)fDevice.get());
 -    backendContext.fQueue.retain((GrMTLHandle)fQueue.get());
--    fContext = GrDirectContexts::MakeMetal(backendContext, 
fDisplayParams.fGrContextOptions);
--    if (!fContext && fDisplayParams.fMSAASampleCount > 1) {
+-    fContext = GrDirectContexts::MakeMetal(backendContext, 
fDisplayParams->grContextOptions());
+-    if (!fContext && fDisplayParams->msaaSampleCount() > 1) {
 +    backendContext.fDevice.retain((GrMTLHandle)d->fDevice.get());
 +    backendContext.fQueue.retain((GrMTLHandle)d->fQueue.get());
-+    d->fContext = GrDirectContexts::MakeMetal(backendContext, 
fDisplayParams.fGrContextOptions);
-+    if (!d->fContext && fDisplayParams.fMSAASampleCount > 1) {
-         fDisplayParams.fMSAASampleCount /= 2;
++    d->fContext = GrDirectContexts::MakeMetal(backendContext, 
fDisplayParams->grContextOptions());
++    if (!d->fContext && fDisplayParams->msaaSampleCount() > 1) {
+         auto newParams = DisplayParamsBuilder(fDisplayParams.get());
+         newParams.msaaSampleCount(fDisplayParams->msaaSampleCount() / 2);
+         // Don't call this->setDisplayParams because that also calls
+         // destroyContext() and initializeContext().
+         fDisplayParams = newParams.build();
 +        fGlobalShared.reset();
          this->initializeContext();
          return;
@@ -130,7 +134,7 @@ diff -ur skia.org/tools/window/MetalWindowContext.mm 
skia/tools/window/MetalWind
 +
 +    fContext = fShared->fContext;
 +
-+    fSampleCount = fDisplayParams.fMSAASampleCount;
++    fSampleCount = fDisplayParams->msaaSampleCount();
 +    fStencilBits = 8;
 +
 +    fValid = this->onInitializeContext();
@@ -224,7 +228,7 @@ diff -ur 
skia.org/tools/window/unix/GaneshVulkanWindowContext_unix.cpp.orig skia
 @@ -68,7 +71,7 @@
      };
      std::unique_ptr<WindowContext> ctx(new internal::VulkanWindowContext(
-             displayParams, createVkSurface, canPresent, instProc));
+             std::move(displayParams), createVkSurface, canPresent, instProc));
 -    if (!ctx->isValid()) {
 +    if (!ctx->isValid() && createVkSurface != nullptr) {
          return nullptr;
@@ -249,7 +253,7 @@ diff -ur skia.org/tools/window/VulkanWindowContext.cpp 
skia/tools/window/VulkanW
 
  namespace skwindow::internal {
 
-@@ -55,32 +59,43 @@
+@@ -55,36 +59,47 @@
  }
 
  void VulkanWindowContext::initializeContext() {
@@ -269,11 +273,17 @@ diff -ur skia.org/tools/window/VulkanWindowContext.cpp 
skia/tools/window/VulkanW
 +    skgpu::VulkanBackendContext& backendContext = 
fGlobalShared->backendContext;
      skgpu::VulkanExtensions extensions;
      VkPhysicalDeviceFeatures2 features;
-     if (!sk_gpu_test::CreateVkBackendContext(getInstanceProc, 
&backendContext, &extensions,
--                                             &features, &fDebugCallback, 
&fPresentQueueIndex,
-+                                             &d->features, 
&d->fDebugCallback, &d->fPresentQueueIndex,
+     if (!sk_gpu_test::CreateVkBackendContext(getInstanceProc,
+                                              &backendContext,
+                                              &extensions,
+-                                             &features,
+-                                             &fDebugCallback,
+-                                             &fPresentQueueIndex,
++                                             &d->features,
++                                             &d->fDebugCallback,
++                                             &d->fPresentQueueIndex,
                                               fCanPresentFn,
-                                              
fDisplayParams.fCreateProtectedNativeBackend)) {
+                                              
fDisplayParams->createProtectedNativeBackend())) {
 +        sk_gpu_test::FreeVulkanFeaturesStructs(&d->features);
 +        fGlobalShared.reset();
          sk_gpu_test::FreeVulkanFeaturesStructs(&features);
@@ -330,7 +340,7 @@ diff -ur skia.org/tools/window/VulkanWindowContext.cpp 
skia/tools/window/VulkanW
 -    GET_PROC(DestroyInstance);
 -    if (fDebugCallback != VK_NULL_HANDLE) {
 -        GET_PROC(DestroyDebugReportCallbackEXT);
-+    d->fContext = GrDirectContexts::MakeVulkan(backendContext, 
fDisplayParams.fGrContextOptions);
++    d->fContext = GrDirectContexts::MakeVulkan(backendContext, 
fDisplayParams->grContextOptions());
 +
 +    GET_PROC_GLOBAL(DestroyInstance);
 +    GET_DEV_PROC_GLOBAL(DestroyDevice);
@@ -364,7 +374,7 @@ diff -ur skia.org/tools/window/VulkanWindowContext.cpp 
skia/tools/window/VulkanW
      GET_DEV_PROC(CreateSwapchainKHR);
      GET_DEV_PROC(DestroySwapchainKHR);
      GET_DEV_PROC(GetSwapchainImagesKHR);
-@@ -121,56 +154,44 @@
+@@ -121,55 +154,43 @@
      GET_DEV_PROC(QueuePresentKHR);
      GET_DEV_PROC(GetDeviceQueue);
 
@@ -378,7 +388,7 @@ diff -ur skia.org/tools/window/VulkanWindowContext.cpp 
skia/tools/window/VulkanW
 -                                                  skgpu::ThreadSafe::kNo,
 -                                                  /*blockSize=*/std::nullopt);
 -
--    fContext = GrDirectContexts::MakeVulkan(backendContext, 
fDisplayParams.fGrContextOptions);
+-    fContext = GrDirectContexts::MakeVulkan(backendContext, 
fDisplayParams->grContextOptions());
 +    // No actual window, used just to create the shared GrContext.
 +    if(fCreateVkSurfaceFn == nullptr)
 +        return;
@@ -404,7 +414,7 @@ diff -ur skia.org/tools/window/VulkanWindowContext.cpp 
skia/tools/window/VulkanW
          return;
      }
 
-     if (!this->createSwapchain(-1, -1, fDisplayParams)) {
+     if (!this->createSwapchain(-1, -1)) {
          this->destroyContext();
 -        sk_gpu_test::FreeVulkanFeaturesStructs(&features);
          return;
@@ -415,8 +425,7 @@ diff -ur skia.org/tools/window/VulkanWindowContext.cpp 
skia/tools/window/VulkanW
 -    sk_gpu_test::FreeVulkanFeaturesStructs(&features);
  }
 
- bool VulkanWindowContext::createSwapchain(int width, int height,
-                                           const DisplayParams& params) {
+ bool VulkanWindowContext::createSwapchain(int width, int height) {
      // check for capabilities
      VkSurfaceCapabilitiesKHR caps;
 -    VkResult res = fGetPhysicalDeviceSurfaceCapabilitiesKHR(fPhysicalDevice, 
fSurface, &caps);
@@ -520,7 +529,7 @@ diff -ur skia.org/tools/window/VulkanWindowContext.cpp 
skia/tools/window/VulkanW
          info.fLevelCount = 1;
 -        info.fCurrentQueueFamily = fPresentQueueIndex;
 +        info.fCurrentQueueFamily = fShared->fPresentQueueIndex;
-         info.fProtected = 
skgpu::Protected(fDisplayParams.fCreateProtectedNativeBackend);
+         info.fProtected = 
skgpu::Protected(fDisplayParams->createProtectedNativeBackend());
          info.fSharingMode = sharingMode;
 
 @@ -418,8 +438,8 @@
@@ -642,7 +651,7 @@ diff -ur skia.org/tools/window/VulkanWindowContext.cpp 
skia/tools/window/VulkanW
      }
      if (VK_ERROR_OUT_OF_DATE_KHR == res) {
          // tear swapchain down and try again
-         if (!this->createSwapchain(-1, -1, fDisplayParams)) {
+         if (!this->createSwapchain(-1, -1)) {
 -            GR_VK_CALL(fInterface, DestroySemaphore(fDevice, semaphore, 
nullptr));
 +            GR_VK_CALL(fShared->fInterface, 
DestroySemaphore(fShared->fDevice, semaphore, nullptr));
              return nullptr;
@@ -704,10 +713,10 @@ diff -ur skia.org/tools/window/VulkanWindowContext.h 
skia/tools/window/VulkanWin
 -    bool isValid() override { return fDevice != VK_NULL_HANDLE; }
 +    bool isValid() override { return fSurface != VK_NULL_HANDLE; }
 
-     void resize(int w, int h) override {
-         this->createSwapchain(w, h, fDisplayParams);
+     void resize(int w, int h) override { this->createSwapchain(w, h); }
+
 @@ -45,9 +49,15 @@
-     VulkanWindowContext(const DisplayParams&, CreateVkSurfaceFn, CanPresentFn,
+                         CanPresentFn,
                          PFN_vkGetInstanceProcAddr);
 
 +    static const VkPhysicalDeviceProperties& getPhysDeviceProperties() {
@@ -810,8 +819,8 @@ diff -ur 
skia.org/tools/window/win/VulkanWindowContext_win.cpp skia/tools/window
                                    uint32_t queueFamilyIndex) {
 @@ -66,7 +69,7 @@
 
-     std::unique_ptr<WindowContext> ctx(
-             new internal::VulkanWindowContext(params, createVkSurface, 
canPresent, instProc));
+     std::unique_ptr<WindowContext> ctx(new internal::VulkanWindowContext(
+             std::move(params), createVkSurface, canPresent, instProc));
 -    if (!ctx->isValid()) {
 +    if (!ctx->isValid() && createVkSurface != nullptr) {
          return nullptr;
diff --git a/external/skia/swap-buffers-rect.patch.1 
b/external/skia/swap-buffers-rect.patch.1
index 0b02be761a50..292adc70836b 100644
--- a/external/skia/swap-buffers-rect.patch.1
+++ b/external/skia/swap-buffers-rect.patch.1
@@ -26,7 +26,7 @@ diff -ur 
skia.org/tools/window/unix/RasterWindowContext_unix.cpp skia/tools/wind
 --- skia.org/tools/window/unix/RasterWindowContext_unix.cpp    2024-10-05 
18:16:04.521814026 +0200
 +++ skia/tools/window/unix/RasterWindowContext_unix.cpp        2024-10-05 
18:18:49.554847490 +0200
 @@ -24,7 +24,7 @@
-     void setDisplayParams(const DisplayParams& params) override;
+     void setDisplayParams(std::unique_ptr<const DisplayParams> params) 
override;
 
  protected:
 -    void onSwapBuffers() override;
@@ -70,7 +70,7 @@ diff -ur skia.org/tools/window/VulkanWindowContext.h 
skia/tools/window/VulkanWin
 --- skia.org/tools/window/VulkanWindowContext.h        2024-10-05 
18:16:04.521814026 +0200
 +++ skia/tools/window/VulkanWindowContext.h    2024-10-05 18:19:54.713202674 
+0200
 @@ -70,7 +70,7 @@
-     bool createSwapchain(int width, int height, const DisplayParams& params);
+     bool createSwapchain(int width, int height);
      bool createBuffers(VkFormat format, VkImageUsageFlags, SkColorType 
colorType, VkSharingMode);
      void destroyBuffers();
 -    void onSwapBuffers() override;
@@ -83,7 +83,7 @@ diff -ur 
skia.org/tools/window/win/RasterWindowContext_win.cpp skia/tools/window
 --- skia.org/tools/window/win/RasterWindowContext_win.cpp      2024-10-05 
18:16:04.521814026 +0200
 +++ skia/tools/window/win/RasterWindowContext_win.cpp  2024-10-05 
18:20:58.138561375 +0200
 @@ -27,7 +27,7 @@
-     void setDisplayParams(const DisplayParams& params) override;
+     void setDisplayParams(std::unique_ptr<const DisplayParams> params) 
override;
 
  protected:
 -    void onSwapBuffers() override;
@@ -125,7 +125,7 @@ diff -ur skia.org/tools/window/WindowContext.cpp 
skia/tools/window/WindowContext
 +    this->onSwapBuffers(rect);
  }
 
- #if defined(SK_GRAPHITE)
+ bool WindowContext::supportsGpuTimer() const {
 diff -ur skia.org/tools/window/WindowContext.h 
skia/tools/window/WindowContext.h
 --- skia.org/tools/window/WindowContext.h      2024-10-05 18:16:04.521814026 
+0200
 +++ skia/tools/window/WindowContext.h  2024-10-05 18:22:12.945998819 +0200
diff --git a/external/skia/windows-raster-surface-no-copies.patch.1 
b/external/skia/windows-raster-surface-no-copies.patch.1
index 9c59c252c1f6..1aaf43a2537c 100644
--- a/external/skia/windows-raster-surface-no-copies.patch.1
+++ b/external/skia/windows-raster-surface-no-copies.patch.1
@@ -18,8 +18,8 @@ diff -ur 
skia.org/tools/window/win/RasterWindowContext_win.cpp skia/tools/window
 +    // Do not use a packed DIB bitmap, SkSurface_Raster::onNewImageSnapshot() 
does
 +    // a deep copy if it does not own the pixels.
 
-     SkImageInfo info = SkImageInfo::Make(w, h, fDisplayParams.fColorType, 
kPremul_SkAlphaType,
-                                          fDisplayParams.fColorSpace);
+     SkImageInfo info = SkImageInfo::Make(
+             w, h, fDisplayParams->colorType(), kPremul_SkAlphaType, 
fDisplayParams->colorSpace());
 -    fBackbufferSurface = SkSurfaces::WrapPixels(info, pixels, 
sizeof(uint32_t) * w);
 +    fBackbufferSurface = SkSurfaces::Raster(info);
  }
diff --git a/vcl/skia/osx/gdiimpl.cxx b/vcl/skia/osx/gdiimpl.cxx
index 7fa95e8d9fab..8043fb2e2b72 100644
--- a/vcl/skia/osx/gdiimpl.cxx
+++ b/vcl/skia/osx/gdiimpl.cxx
@@ -72,8 +72,8 @@ void 
AquaSkiaSalGraphicsImpl::createWindowSurfaceInternal(bool forceRaster)
     assert(!mWindowContext);
     assert(!mSurface);
     SkiaZone zone;
-    skwindow::DisplayParams displayParams;
-    displayParams.fColorType = kN32_SkColorType;
+    skwindow::DisplayParamsBuilder displayParams;
+    displayParams.colorType(kN32_SkColorType);
     skwindow::MacWindowInfo macWindow;
     macWindow.fMainView = mrShared.mpFrame->mpNSView;
     mScaling = getWindowScaling();
@@ -86,7 +86,7 @@ void 
AquaSkiaSalGraphicsImpl::createWindowSurfaceInternal(bool forceRaster)
             mSurface = createSkSurface(GetWidth() * mScaling, GetHeight() * 
mScaling);
             break;
         case RenderMetal:
-            mWindowContext = skwindow::MakeGaneshMetalForMac(macWindow, 
displayParams);
+            mWindowContext = skwindow::MakeGaneshMetalForMac(macWindow, 
displayParams.build());
             // Like with other GPU contexts, create a proxy offscreen surface 
(see
             // flushSurfaceToWindowContext()). Here it's additionally needed 
because
             // it appears that Metal surfaces cannot be read from, which would 
break things
@@ -411,10 +411,10 @@ namespace
 {
 std::unique_ptr<skwindow::WindowContext> createMetalWindowContext(bool 
/*temporary*/)
 {
-    skwindow::DisplayParams displayParams;
+    skwindow::DisplayParamsBuilder displayParams;
     skwindow::MacWindowInfo macWindow;
     macWindow.fMainView = nullptr;
-    return skwindow::MakeGaneshMetalForMac(macWindow, displayParams);
+    return skwindow::MakeGaneshMetalForMac(macWindow, displayParams.build());
 }
 }
 
diff --git a/vcl/skia/win/gdiimpl.cxx b/vcl/skia/win/gdiimpl.cxx
index 8de57dba2b89..8ce4c33e57d0 100644
--- a/vcl/skia/win/gdiimpl.cxx
+++ b/vcl/skia/win/gdiimpl.cxx
@@ -104,18 +104,20 @@ void 
WinSkiaSalGraphicsImpl::createWindowSurfaceInternal(bool forceRaster)
     assert(!mWindowContext);
     assert(!mSurface);
     SkiaZone zone;
-    skwindow::DisplayParams displayParams;
     assert(GetWidth() > 0 && GetHeight() > 0);
-    displayParams.fSurfaceProps = *surfaceProps();
+    skwindow::DisplayParamsBuilder aDispParamBuilder;
+    aDispParamBuilder.surfaceProps(*surfaceProps());
     switch (forceRaster ? RenderRaster : renderMethodToUse())
     {
         case RenderRaster:
-            mWindowContext = skwindow::MakeRasterForWin(mWinParent.gethWnd(), 
displayParams);
+            mWindowContext
+                = skwindow::MakeRasterForWin(mWinParent.gethWnd(), 
aDispParamBuilder.build());
             if (mWindowContext)
                 mSurface = mWindowContext->getBackbufferSurface();
             break;
         case RenderVulkan:
-            mWindowContext = skwindow::MakeVulkanForWin(mWinParent.gethWnd(), 
displayParams);
+            mWindowContext
+                = skwindow::MakeVulkanForWin(mWinParent.gethWnd(), 
aDispParamBuilder.build());
             // See flushSurfaceToWindowContext().
             if (mWindowContext)
                 mSurface = createSkSurface(GetWidth(), GetHeight());
@@ -416,8 +418,8 @@ namespace
 std::unique_ptr<skwindow::WindowContext> createVulkanWindowContext(bool 
/*temporary*/)
 {
     SkiaZone zone;
-    skwindow::DisplayParams displayParams;
-    return skwindow::MakeVulkanForWin(nullptr, displayParams);
+    skwindow::DisplayParamsBuilder displayParams;
+    return skwindow::MakeVulkanForWin(nullptr, displayParams.build());
 }
 }
 
diff --git a/vcl/skia/x11/gdiimpl.cxx b/vcl/skia/x11/gdiimpl.cxx
index 34df45fa7d09..103aa7329c6a 100644
--- a/vcl/skia/x11/gdiimpl.cxx
+++ b/vcl/skia/x11/gdiimpl.cxx
@@ -67,14 +67,14 @@ X11SkiaSalGraphicsImpl::createWindowContext(Display* 
display, Drawable drawable,
                                             RenderMethod renderMethod, bool 
temporary)
 {
     SkiaZone zone;
-    skwindow::DisplayParams displayParams;
-    displayParams.fColorType = kN32_SkColorType;
+    skwindow::DisplayParamsBuilder displayParamsBuilder;
+    displayParamsBuilder.colorType(kN32_SkColorType);
 #if defined LINUX
     // WORKAROUND: VSync causes freezes that can even temporarily freeze the 
entire desktop.
     // This happens even with the latest 450.66 drivers despite them claiming 
a fix for vsync.
     // 
https://forums.developer.nvidia.com/t/hangs-freezes-when-vulkan-v-sync-vk-present-mode-fifo-khr-is-enabled/67751
     if (getVendor() == DriverBlocklist::VendorNVIDIA)
-        displayParams.fDisableVsync = true;
+        displayParamsBuilder.disableVsync(true);
 #endif
     skwindow::XlibWindowInfo winInfo;
     assert(display);
@@ -103,17 +103,19 @@ X11SkiaSalGraphicsImpl::createWindowContext(Display* 
display, Drawable drawable,
     switch (renderMethod)
     {
         case RenderRaster:
+        {
             // Make sure we ask for color type that matches the X11 visual. If 
red mask
             // is larger value than blue mask, then on little endian this 
means blue is first.
             // This should also preferably match SK_R32_SHIFT set in 
config_skia.h, as that
             // improves performance, the common setup seems to be BGRA 
(possibly because of
             // choosing OpenGL-capable visual).
-            displayParams.fColorType
-                = (visual->red_mask > visual->blue_mask ? 
kBGRA_8888_SkColorType
-                                                        : 
kRGBA_8888_SkColorType);
-            return skwindow::MakeRasterForXlib(winInfo, displayParams);
+            displayParamsBuilder.colorType(visual->red_mask > visual->blue_mask
+                                               ? kBGRA_8888_SkColorType
+                                               : kRGBA_8888_SkColorType);
+            return skwindow::MakeRasterForXlib(winInfo, 
displayParamsBuilder.build());
+        }
         case RenderVulkan:
-            return skwindow::MakeGaneshVulkanForXlib(winInfo, displayParams);
+            return skwindow::MakeGaneshVulkanForXlib(winInfo, 
displayParamsBuilder.build());
         case RenderMetal:
             abort();
             break;

Reply via email to