canvas/source/cairo/cairo_canvasbitmap.cxx |    8 +++++++-
 canvas/source/cairo/cairo_canvasbitmap.hxx |    2 +-
 canvas/source/cairo/cairo_canvashelper.cxx |    3 ++-
 3 files changed, 10 insertions(+), 3 deletions(-)

New commits:
commit 9a0b523e0a84d403b9092176ccec4b3e3efe42d0
Author:     Stephan Bergmann <sberg...@redhat.com>
AuthorDate: Wed Dec 14 21:46:28 2022 +0100
Commit:     Stephan Bergmann <sberg...@redhat.com>
CommitDate: Sun Dec 18 17:19:58 2022 +0000

    loplugin:unocast (cairocanvas::CanvasBitmap)
    
    (See the upcoming commit introducing that loplugin:unocast on why such
    dynamic_casts from UNO types are dangerous.)
    
    Change-Id: I6044567e4027fe1fdc361917d5233157d4ce98d3
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/144399
    Tested-by: Jenkins
    Reviewed-by: Stephan Bergmann <sberg...@redhat.com>

diff --git a/canvas/source/cairo/cairo_canvasbitmap.cxx 
b/canvas/source/cairo/cairo_canvasbitmap.cxx
index a4f172088a17..3e0bcae618f6 100644
--- a/canvas/source/cairo/cairo_canvasbitmap.cxx
+++ b/canvas/source/cairo/cairo_canvasbitmap.cxx
@@ -144,7 +144,13 @@ namespace cairocanvas
     }
 
     sal_Int64 CanvasBitmap::getSomething(css::uno::Sequence<sal_Int8> const & 
aIdentifier) {
-        return RepaintTarget::getSomething(aIdentifier);
+        return comphelper::getSomethingImpl(
+            aIdentifier, this, 
comphelper::FallbackToGetSomethingOf<RepaintTarget>{});
+    }
+
+    css::uno::Sequence<sal_Int8> const & CanvasBitmap::getUnoTunnelId() {
+        static comphelper::UnoIdInit const id;
+        return id.getSeq();
     }
 
     OUString SAL_CALL CanvasBitmap::getImplementationName(  )
diff --git a/canvas/source/cairo/cairo_canvasbitmap.hxx 
b/canvas/source/cairo/cairo_canvasbitmap.hxx
index cc32408c26a1..21479b387069 100644
--- a/canvas/source/cairo/cairo_canvasbitmap.hxx
+++ b/canvas/source/cairo/cairo_canvasbitmap.hxx
@@ -115,8 +115,8 @@ namespace cairocanvas
         virtual css::uno::Any SAL_CALL getFastPropertyValue(sal_Int32 nHandle) 
override;
         virtual void SAL_CALL setFastPropertyValue(sal_Int32, const 
css::uno::Any&) override {}
 
-        // XUnoTunnel
         sal_Int64 SAL_CALL getSomething(css::uno::Sequence<sal_Int8> const & 
aIdentifier) override;
+        static css::uno::Sequence<sal_Int8> const & getUnoTunnelId();
 
     private:
         SurfaceProviderRef        mpSurfaceProvider;
diff --git a/canvas/source/cairo/cairo_canvashelper.cxx 
b/canvas/source/cairo/cairo_canvashelper.cxx
index 14113e89361f..9279a4c0781b 100644
--- a/canvas/source/cairo/cairo_canvashelper.cxx
+++ b/canvas/source/cairo/cairo_canvashelper.cxx
@@ -40,6 +40,7 @@
 #include <com/sun/star/rendering/XIntegerBitmapColorSpace.hpp>
 #include <com/sun/star/util/Endianness.hpp>
 #include <comphelper/sequence.hxx>
+#include <comphelper/servicehelper.hxx>
 #include <cppuhelper/implbase.hxx>
 #include <rtl/math.hxx>
 #include <comphelper/diagnose_ex.hxx>
@@ -294,7 +295,7 @@ constexpr OUStringLiteral 
PARAMETRICPOLYPOLYGON_IMPLEMENTATION_NAME = u"Canvas::
      **/
     static SurfaceSharedPtr surfaceFromXBitmap( const uno::Reference< 
rendering::XBitmap >& xBitmap )
     {
-        CanvasBitmap* pBitmapImpl = dynamic_cast< CanvasBitmap* >( 
xBitmap.get() );
+        CanvasBitmap* pBitmapImpl = comphelper::getFromUnoTunnel< CanvasBitmap 
>( xBitmap );
         if( pBitmapImpl )
             return pBitmapImpl->getSurface();
 

Reply via email to