dtrans/Library_sysdtrans.mk                |    1 
 dtrans/source/win32/clipb/WinClipboard.cxx |   26 ++++-----
 dtrans/source/win32/clipb/wcbentry.cxx     |   82 -----------------------------
 dtrans/util/sysdtrans.component            |    5 +
 4 files changed, 16 insertions(+), 98 deletions(-)

New commits:
commit b76e903ccc83d0ccf0c6548782622638dd8a0ee5
Author:     Noel Grandin <n...@peralex.com>
AuthorDate: Tue Jul 21 13:55:30 2020 +0200
Commit:     Noel Grandin <noel.gran...@collabora.co.uk>
CommitDate: Wed Jul 22 14:41:19 2020 +0200

    dtrans/clipboard: create instances with uno constructors
    
    See tdf#74608 for motivation.
    
    Change-Id: Iba30f1cf6892330495f57343619e234194bc5b5b
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/99158
    Tested-by: Jenkins
    Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk>

diff --git a/dtrans/Library_sysdtrans.mk b/dtrans/Library_sysdtrans.mk
index ba8b5601f699..8781e7f2d9bb 100644
--- a/dtrans/Library_sysdtrans.mk
+++ b/dtrans/Library_sysdtrans.mk
@@ -46,7 +46,6 @@ $(eval $(call gb_Library_use_static_libraries,sysdtrans,\
 $(eval $(call gb_Library_add_exception_objects,sysdtrans,\
        dtrans/source/win32/clipb/WinClipbImpl \
        dtrans/source/win32/clipb/WinClipboard \
-       dtrans/source/win32/clipb/wcbentry \
        dtrans/source/win32/clipb/MtaOleClipb \
 ))
 
diff --git a/dtrans/source/win32/clipb/WinClipboard.cxx 
b/dtrans/source/win32/clipb/WinClipboard.cxx
index 919065a9f2fc..7de317766d77 100644
--- a/dtrans/source/win32/clipb/WinClipboard.cxx
+++ b/dtrans/source/win32/clipb/WinClipboard.cxx
@@ -22,7 +22,9 @@
 #include <com/sun/star/datatransfer/clipboard/ClipboardEvent.hpp>
 #include <com/sun/star/lang/DisposedException.hpp>
 #include <com/sun/star/lang/IllegalArgumentException.hpp>
+#include <com/sun/star/uno/XComponentContext.hpp>
 #include <cppuhelper/supportsservice.hxx>
+#include <rtl/ref.hxx>
 #include "WinClipbImpl.hxx"
 
 using namespace osl;
@@ -34,17 +36,6 @@ using namespace com::sun::star::datatransfer;
 using namespace com::sun::star::datatransfer::clipboard;
 using namespace com::sun::star::lang;
 
-#define WINCLIPBOARD_IMPL_NAME  
"com.sun.star.datatransfer.clipboard.ClipboardW32"
-
-namespace
-{
-    Sequence< OUString > WinClipboard_getSupportedServiceNames()
-    {
-        Sequence< OUString > aRet { 
"com.sun.star.datatransfer.clipboard.SystemClipboard" };
-        return aRet;
-    }
-}
-
 /*XEventListener,*/
 CWinClipboard::CWinClipboard( const Reference< XComponentContext >& rxContext, 
const OUString& aClipboardName ) :
     WeakComponentImplHelper< XSystemClipboard, XFlushableClipboard, 
XServiceInfo >( m_aCbListenerMutex ),
@@ -223,7 +214,7 @@ void SAL_CALL CWinClipboard::disposing()
 
 OUString SAL_CALL CWinClipboard::getImplementationName(  )
 {
-    return WINCLIPBOARD_IMPL_NAME;
+    return "com.sun.star.datatransfer.clipboard.ClipboardW32";
 }
 
 sal_Bool SAL_CALL CWinClipboard::supportsService( const OUString& ServiceName )
@@ -233,7 +224,16 @@ sal_Bool SAL_CALL CWinClipboard::supportsService( const 
OUString& ServiceName )
 
 Sequence< OUString > SAL_CALL CWinClipboard::getSupportedServiceNames(   )
 {
-    return WinClipboard_getSupportedServiceNames();
+    return { "com.sun.star.datatransfer.clipboard.SystemClipboard" };
+}
+
+extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface*
+dtrans_CWinClipboard_get_implementation(
+    css::uno::XComponentContext* context, css::uno::Sequence<css::uno::Any> 
const&)
+{
+    static rtl::Reference<CWinClipboard> g_Instance(new CWinClipboard(context, 
""));
+    g_Instance->acquire();
+    return static_cast<cppu::OWeakObject*>(g_Instance.get());
 }
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dtrans/source/win32/clipb/wcbentry.cxx 
b/dtrans/source/win32/clipb/wcbentry.cxx
deleted file mode 100644
index e91bde9c07d7..000000000000
--- a/dtrans/source/win32/clipb/wcbentry.cxx
+++ /dev/null
@@ -1,82 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*
- * This file is part of the LibreOffice project.
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * This file incorporates work covered by the following license notice:
- *
- *   Licensed to the Apache Software Foundation (ASF) under one or more
- *   contributor license agreements. See the NOTICE file distributed
- *   with this work for additional information regarding copyright
- *   ownership. The ASF licenses this file to you under the Apache
- *   License, Version 2.0 (the "License"); you may not use this file
- *   except in compliance with the License. You may obtain a copy of
- *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
- */
-
-#include <cppuhelper/factory.hxx>
-#include <comphelper/processfactory.hxx>
-#include <com/sun/star/container/XSet.hpp>
-#include <com/sun/star/lang/XSingleServiceFactory.hpp>
-#include "WinClipboard.hxx"
-
-#define WINCLIPBOARD_SERVICE_NAME  
"com.sun.star.datatransfer.clipboard.SystemClipboard"
-
-#define WINCLIPBOARD_IMPL_NAME  
"com.sun.star.datatransfer.clipboard.ClipboardW32"
-
-using namespace ::com::sun::star::uno;
-using namespace ::com::sun::star::registry;
-using namespace ::cppu;
-using namespace ::com::sun::star::lang;
-using namespace ::com::sun::star::datatransfer::clipboard;
-
-namespace
-{
-
-    // functions to create a new Clipboard instance; is needed by factory 
helper implementation
-    // @param rServiceManager - service manager, useful if the component needs 
other uno services
-    // so we should give it to every UNO-Implementation component
-
-    Reference< XInterface > createInstance( const Reference< 
XMultiServiceFactory >& rServiceManager )
-    {
-        return static_cast<XClipboard*>(
-            new 
CWinClipboard(comphelper::getComponentContext(rServiceManager), ""));
-    }
-}
-
-extern "C"
-{
-
-// component_getFactory
-// returns a factory to create XFilePicker-Services
-
-SAL_DLLPUBLIC_EXPORT void* sysdtrans_component_getFactory( const char* 
pImplName, void* pSrvManager, void* /*pRegistryKey*/ )
-{
-    void* pRet = nullptr;
-
-    if ( pSrvManager && ( 0 == rtl_str_compare( pImplName, 
WINCLIPBOARD_IMPL_NAME ) ) )
-    {
-        Sequence< OUString > aSNS { WINCLIPBOARD_SERVICE_NAME };
-
-        //OUString( FPS_IMPL_NAME )
-        Reference< XSingleServiceFactory > xFactory ( createOneInstanceFactory(
-            static_cast< XMultiServiceFactory* > ( pSrvManager ),
-            OUString::createFromAscii( pImplName ),
-            createInstance,
-            aSNS ) );
-        if ( xFactory.is() )
-        {
-            xFactory->acquire();
-            pRet = xFactory.get();
-        }
-    }
-
-    return pRet;
-}
-
-} // extern "C"
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dtrans/util/sysdtrans.component b/dtrans/util/sysdtrans.component
index 6551a964684b..263b1417258e 100644
--- a/dtrans/util/sysdtrans.component
+++ b/dtrans/util/sysdtrans.component
@@ -18,8 +18,9 @@
  -->
 
 <component loader="com.sun.star.loader.SharedLibrary" environment="@CPPU_ENV@"
-    prefix="sysdtrans" xmlns="http://openoffice.org/2010/uno-components";>
-  <implementation name="com.sun.star.datatransfer.clipboard.ClipboardW32">
+    xmlns="http://openoffice.org/2010/uno-components";>
+  <implementation name="com.sun.star.datatransfer.clipboard.ClipboardW32"
+    constructor="dtrans_CWinClipboard_get_implementation">
     <service name="com.sun.star.datatransfer.clipboard.SystemClipboard"/>
   </implementation>
 </component>
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to