canvas/source/opengl/ogl_spritecanvas.cxx |   34 +++++++-----------------------
 canvas/source/opengl/oglcanvas.component  |    5 ++--
 2 files changed, 12 insertions(+), 27 deletions(-)

New commits:
commit 0e60923e83a51c00b2769e9a8b9d9346df34640b
Author:     Noel Grandin <[email protected]>
AuthorDate: Sat Jul 4 10:09:23 2020 +0200
Commit:     Noel Grandin <[email protected]>
CommitDate: Sun Jul 5 11:37:21 2020 +0200

    canvas/opengl: create instances with uno constructors
    
    See tdf#74608 for motivation
    
    Change-Id: I2189622106e0c013567662c7bd81a057da65bf92
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/97935
    Tested-by: Jenkins
    Reviewed-by: Noel Grandin <[email protected]>

diff --git a/canvas/source/opengl/ogl_spritecanvas.cxx 
b/canvas/source/opengl/ogl_spritecanvas.cxx
index 1c48812463f3..de5caf716778 100644
--- a/canvas/source/opengl/ogl_spritecanvas.cxx
+++ b/canvas/source/opengl/ogl_spritecanvas.cxx
@@ -11,7 +11,6 @@
 #include <sal/log.hxx>
 
 #include <com/sun/star/lang/NoSupportException.hpp>
-#include <comphelper/servicedecl.hxx>
 #include <osl/mutex.hxx>
 #include <toolkit/helper/vclunohelper.hxx>
 #include <tools/diagnose_ex.h>
@@ -19,14 +18,8 @@
 #include "ogl_canvascustomsprite.hxx"
 #include "ogl_spritecanvas.hxx"
 
-#define SPRITECANVAS_SERVICE_NAME        
"com.sun.star.rendering.SpriteCanvas.OGL"
-#define SPRITECANVAS_IMPLEMENTATION_NAME 
"com.sun.star.comp.rendering.SpriteCanvas.OGL"
-
-
 using namespace ::com::sun::star;
 
-namespace sdecl = comphelper::service_decl;
-
 namespace oglcanvas
 {
     SpriteCanvas::SpriteCanvas( const uno::Sequence< uno::Any >&               
 aArguments,
@@ -134,7 +127,7 @@ namespace oglcanvas
 
     OUString SAL_CALL SpriteCanvas::getServiceName(  )
     {
-        return SPRITECANVAS_SERVICE_NAME;
+        return "com.sun.star.rendering.SpriteCanvas.OGL";
     }
 
     void SpriteCanvas::show( const ::rtl::Reference< CanvasCustomSprite >& 
xSprite )
@@ -154,26 +147,17 @@ namespace oglcanvas
         maCanvasHelper.renderRecordedActions();
     }
 
-    static uno::Reference<uno::XInterface> initCanvas( SpriteCanvas* pCanvas )
-    {
-        uno::Reference<uno::XInterface> 
xRet(static_cast<cppu::OWeakObject*>(pCanvas));
-        pCanvas->initialize();
-        return xRet;
-    }
-
-    sdecl::class_<SpriteCanvas, sdecl::with_args<true> > const 
serviceImpl(&initCanvas);
-    const sdecl::ServiceDecl oglSpriteCanvasDecl(
-        serviceImpl,
-        SPRITECANVAS_IMPLEMENTATION_NAME,
-        SPRITECANVAS_SERVICE_NAME );
 }
 
-// The C shared lib entry points
-extern "C"
-SAL_DLLPUBLIC_EXPORT void* oglcanvas_component_getFactory( char const* 
pImplName,
-                                         void*, void* )
+
+extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface*
+com_sun_star_comp_rendering_SpriteCanvas_OGL_get_implementation(
+    css::uno::XComponentContext* context, css::uno::Sequence<css::uno::Any> 
const& args)
 {
-    return sdecl::component_getFactoryHelper( pImplName, 
{&oglcanvas::oglSpriteCanvasDecl} );
+    auto p = new oglcanvas::SpriteCanvas(args, context);
+    cppu::acquire(p);
+    p->initialize();
+    return static_cast<cppu::OWeakObject*>(p);
 }
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/canvas/source/opengl/oglcanvas.component 
b/canvas/source/opengl/oglcanvas.component
index af3dfebaf4a8..f6c9af43fdae 100644
--- a/canvas/source/opengl/oglcanvas.component
+++ b/canvas/source/opengl/oglcanvas.component
@@ -9,8 +9,9 @@
 -->
 
 <component loader="com.sun.star.loader.SharedLibrary" environment="@CPPU_ENV@"
-    prefix="oglcanvas" xmlns="http://openoffice.org/2010/uno-components";>
-  <implementation name="com.sun.star.comp.rendering.SpriteCanvas.OGL">
+    xmlns="http://openoffice.org/2010/uno-components";>
+  <implementation name="com.sun.star.comp.rendering.SpriteCanvas.OGL"
+        
constructor="com_sun_star_comp_rendering_SpriteCanvas_OGL_get_implementation">
     <service name="com.sun.star.rendering.SpriteCanvas.OGL"/>
   </implementation>
 </component>
_______________________________________________
Libreoffice-commits mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to