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;