From 0e60923e83a51c00b2769e9a8b9d9346df34640b Mon Sep 17 00:00:00 2001 From: Noel Grandin Date: Sat, 4 Jul 2020 10:09:23 +0200 Subject: 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 --- canvas/source/opengl/ogl_spritecanvas.cxx | 34 ++++++++----------------------- canvas/source/opengl/oglcanvas.component | 5 +++-- 2 files changed, 12 insertions(+), 27 deletions(-) (limited to 'canvas/source/opengl') 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 #include -#include #include #include #include @@ -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 initCanvas( SpriteCanvas* pCanvas ) - { - uno::Reference xRet(static_cast(pCanvas)); - pCanvas->initialize(); - return xRet; - } - - sdecl::class_ > 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 const& args) { - return sdecl::component_getFactoryHelper( pImplName, {&oglcanvas::oglSpriteCanvasDecl} ); + auto p = new oglcanvas::SpriteCanvas(args, context); + cppu::acquire(p); + p->initialize(); + return static_cast(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 @@ --> - + xmlns="http://openoffice.org/2010/uno-components"> + -- cgit