embedserv/source/embed/docholder.cxx | 2 - extensions/README | 33 +++++++++++++++++++++- extensions/source/ole/oleobjw.cxx | 2 - extensions/source/ole/servprov.cxx | 10 +++--- extensions/source/ole/unoconversionutilities.hxx | 6 ++-- extensions/test/ole/OleClient/funcs.cxx | 2 - extensions/test/ole/OleConverterVar1/convTest.cxx | 2 - 7 files changed, 45 insertions(+), 12 deletions(-)
New commits: commit 1aff9299ab2e308674af51a138294017d2cc3b8d Author: Michael Stahl <[email protected]> Date: Wed Jun 1 00:10:46 2016 +0200 extensions: more README Change-Id: I9cd902ce606c800e67cc142daf698962544b26bc diff --git a/extensions/README b/extensions/README index aefd5b88..eeff42a 100644 --- a/extensions/README +++ b/extensions/README @@ -1,4 +1,4 @@ -Browser plugin, activex control, scanner bits. Online update. +This module contains a grab-bag of unrelated misc. libraries, *none* of which is an extension. == Application online update checking == @@ -12,3 +12,34 @@ This creates one more thread, UpdateCheckThread, that regularly checks whether we have reached the time when we should ask for the update. If yes, asks for that, and shows the download button in the menu (if the new update is available). + +== OLE automation bridge == + +A bridge between "OLE automation" and UNO, so you can use UNO services +from JScript, VBScript, etc. + +https://www.openoffice.org/udk/common/man/spec/ole_bridge.html + +See udkapi/com/sun/star/bridge/oleautomation/ApplicationRegistration.idl + +This is initialized in Desktop::Main() in Desktop::OpenClients_Impl() +by creating the service "com.sun.star.bridge.OleApplicationRegistration", +which is implemented by ole_adapter::OleServer_Impl. + +See extensions/source/ole/ + +== ActiveX control == + +This allows embedding LO into a Win32 application as an ActiveX control. +See extensions/source/activex/ + +== Spotlight provider == + +On Mac OS X, this allows indexing ODF documents with Spotlight. +See extensions/source/macosx/spotlight/ + +== Scanner support == + +You can scan from LibreOffice, using platform specific backends like TWAIN/SANE. +See extensions/source/scanner/ + commit c11e60f11f34b12bf73a08a96634202a8d3aef0c Author: Michael Stahl <[email protected]> Date: Tue May 31 23:45:53 2016 +0200 tdf#99643 OLE automation bridge: fix 64-bit pointer conversions XBridgeSupplier2::createBridge() is always called in-process and should therefore expect and create Anys with native-sized encoded pointers, so use sal_uIntPtr. Change-Id: Ia757ff38568b07de8085a1a9d323d806bcca0f63 Note: Currently all calls in LO code are with source=UNO, target=OLE. diff --git a/embedserv/source/embed/docholder.cxx b/embedserv/source/embed/docholder.cxx index 5568535..7708e1e 100644 --- a/embedserv/source/embed/docholder.cxx +++ b/embedserv/source/embed/docholder.cxx @@ -1035,7 +1035,7 @@ IDispatch* DocumentHolder::GetIDispatch() bridge::ModelDependent::OLE ); if ( anyResult.getValueTypeClass() == - cppu::UnoType<sal_uInt32>::get().getTypeClass() ) + cppu::UnoType<sal_uIntPtr>::get().getTypeClass() ) { VARIANT* pVariant = *(VARIANT**)anyResult.getValue(); if ( pVariant->vt == VT_DISPATCH ) diff --git a/extensions/source/ole/oleobjw.cxx b/extensions/source/ole/oleobjw.cxx index b2fde4a..2a2b7eb 100644 --- a/extensions/source/ole/oleobjw.cxx +++ b/extensions/source/ole/oleobjw.cxx @@ -725,7 +725,7 @@ Any SAL_CALL IUnknownWrapper_Impl::createBridge( const Any& modelDepObject, pVariant->punkVal->AddRef(); } - ret.setValue((void*)&pVariant, cppu::UnoType<sal_uInt32>::get()); + ret.setValue(static_cast<void*>(&pVariant), cppu::UnoType<sal_uIntPtr>::get()); } } diff --git a/extensions/source/ole/servprov.cxx b/extensions/source/ole/servprov.cxx index 6d3d5fa..95b3bad 100644 --- a/extensions/source/ole/servprov.cxx +++ b/extensions/source/ole/servprov.cxx @@ -160,7 +160,7 @@ STDMETHODIMP ProviderOleWrapper_Impl::CreateInstance(IUnknown FAR* punkOuter, OLE); - if (oleAny.getValueTypeClass() == cppu::UnoType<sal_uInt32>::get().getTypeClass()) + if (oleAny.getValueTypeClass() == cppu::UnoType<sal_uIntPtr>::get().getTypeClass()) { VARIANT* pVariant = *(VARIANT**)oleAny.getValue(); @@ -291,7 +291,7 @@ STDMETHODIMP OneInstanceOleWrapper_Impl::CreateInstance(IUnknown FAR* punkOuter, OLE); - if (oleAny.getValueTypeClass() == TypeClass_UNSIGNED_LONG) + if (oleAny.getValueTypeClass() == cppu::UnoType<sal_uIntPtr>::get().getTypeClass()) { VARIANT* pVariant = *(VARIANT**)oleAny.getValue(); @@ -374,14 +374,14 @@ Any SAL_CALL OleConverter_Impl2::createBridge(const Any& modelDepObject, CoTaskMemFree(pVariant); throw IllegalArgumentException(); } - ret.setValue((void*) &pVariant, cppu::UnoType<sal_uInt32>::get()); + ret.setValue(static_cast<void*>(&pVariant), cppu::UnoType<sal_uIntPtr>::get()); } else throw IllegalArgumentException(); } else if (sourceModelType == OLE) { - if (modelDepObject.getValueType() != cppu::UnoType<sal_uInt32>::get()) + if (modelDepObject.getValueType() != cppu::UnoType<sal_uIntPtr>::get()) { throw IllegalArgumentException(); } @@ -397,7 +397,7 @@ Any SAL_CALL OleConverter_Impl2::createBridge(const Any& modelDepObject, } else { - ret.setValue((void*) &pVariant, cppu::UnoType<sal_uInt32>::get()); + ret.setValue(static_cast<void*>(&pVariant), cppu::UnoType<sal_uIntPtr>::get()); } } else if (destModelType == UNO) diff --git a/extensions/source/ole/unoconversionutilities.hxx b/extensions/source/ole/unoconversionutilities.hxx index bdf61db..e1459b8 100644 --- a/extensions/source/ole/unoconversionutilities.hxx +++ b/extensions/source/ole/unoconversionutilities.hxx @@ -244,8 +244,10 @@ bool convertSelfToCom( T& unoInterface, VARIANT * pVar) Sequence<sal_Int8> seqId( arId, 16); Any anySource; anySource <<= xInt; - Any anyDisp= xSupplier->createBridge( anySource, seqId, UNO, OLE); - if( anyDisp.getValueTypeClass() == TypeClass_UNSIGNED_LONG) + Any anyDisp = xSupplier->createBridge(anySource, seqId, UNO, OLE); + + // due to global-process-id check this must be in-process pointer + if (anyDisp.getValueTypeClass() == cppu::UnoType<sal_uIntPtr>::get().getTypeClass()) { VARIANT* pvariant= *(VARIANT**)anyDisp.getValue(); HRESULT hr; diff --git a/extensions/test/ole/OleClient/funcs.cxx b/extensions/test/ole/OleClient/funcs.cxx index a67cdbb..8070b08 100644 --- a/extensions/test/ole/OleClient/funcs.cxx +++ b/extensions/test/ole/OleClient/funcs.cxx @@ -92,7 +92,7 @@ Reference<XInvocation> convertComObject( IUnknown* pUnk) Any any; CComVariant var( pUnk); - any <<= ( sal_uInt32)&var; + any <<= (sal_uIntPtr) &var; sal_uInt8 arId[16]; rtl_getGlobalProcessId( arId); Any target= xSuppl->createBridge( any, Sequence<sal_Int8>( (sal_Int8*)arId, 16), OLE, UNO ); diff --git a/extensions/test/ole/OleConverterVar1/convTest.cxx b/extensions/test/ole/OleConverterVar1/convTest.cxx index 112f8de..1c7538c 100644 --- a/extensions/test/ole/OleConverterVar1/convTest.cxx +++ b/extensions/test/ole/OleConverterVar1/convTest.cxx @@ -129,7 +129,7 @@ HRESULT doTest() rtl_getGlobalProcessId( arId); Any target= xSuppl->createBridge( any, Sequence<sal_Int8>( (sal_Int8*)arId, 16), UNO, OLE); CComDispatchDriver oletest; - if (target.getValueTypeClass() == cppu::UnoType<sal_uInt32>::get().getTypeClass()) + if (target.getValueTypeClass() == cppu::UnoType<sal_uIntPtr>::get().getTypeClass()) { VARIANT* pVariant = *(VARIANT**)target.getValue(); _______________________________________________ Libreoffice-commits mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
