[Libreoffice-commits] core.git: 2 commits - vcl/inc vcl/unx

Caolán McNamara caolanm at redhat.com
Wed Mar 4 05:08:39 PST 2015


 vcl/inc/headless/svpgdi.hxx                   |    2 
 vcl/inc/unx/gtk/gtkgdi.hxx                    |    2 
 vcl/unx/gtk3/gdi/gtk3salnativewidgets-gtk.cxx |   83 ++++----------------------
 3 files changed, 15 insertions(+), 72 deletions(-)

New commits:
commit 7c065a13e132b240b89801788a6e59d50001d224
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Wed Mar 4 13:00:30 2015 +0000

    GtkSalGraphics never operate on virtual devices
    
    the VirtualDevice is a SvpSalVirtualDevice and it
    uses its own SvpSalGraphics to render to itself,
    so we don't have to worry about being asked to
    render to a VirtualDevice
    
    i.e. Revert "just in case, fallback if not cairo-surface"
    
    This reverts commit 756b2c945143ee171ae80c9ba51ef0dd50fab789.
    
    Conflicts:
    	vcl/unx/gtk3/gdi/gtk3salnativewidgets-gtk.cxx
    
    Change-Id: I3bd3ce42e7c943f8cfca1cc1d2ea6e5eb51bb349

diff --git a/vcl/inc/headless/svpgdi.hxx b/vcl/inc/headless/svpgdi.hxx
index c45cf0f..e9f5110 100644
--- a/vcl/inc/headless/svpgdi.hxx
+++ b/vcl/inc/headless/svpgdi.hxx
@@ -55,7 +55,7 @@ protected:
 
 public:
     GlyphCache& getPlatformGlyphCache();
-    virtual void setDevice(basebmp::BitmapDeviceSharedPtr& rDevice);
+    void setDevice(basebmp::BitmapDeviceSharedPtr& rDevice);
     void BlendTextColor(const basebmp::Color &rTextColor, const basebmp::BitmapDeviceSharedPtr &rAlphaMask,
                         const basegfx::B2IPoint &rDstPoint);
 
diff --git a/vcl/inc/unx/gtk/gtkgdi.hxx b/vcl/inc/unx/gtk/gtkgdi.hxx
index 3bc7ef0..a984f1b 100644
--- a/vcl/inc/unx/gtk/gtkgdi.hxx
+++ b/vcl/inc/unx/gtk/gtkgdi.hxx
@@ -35,10 +35,8 @@ class GtkSalFrame;
 class GtkSalGraphics : public SvpSalGraphics
 {
     GtkSalFrame *mpFrame;
-    bool m_bCairoCompatibleSurface;
 public:
     GtkSalGraphics( GtkSalFrame *pFrame, GtkWidget *pWindow );
-    virtual void        setDevice(basebmp::BitmapDeviceSharedPtr& rDevice) SAL_OVERRIDE;
     virtual void        copyArea( long nDestX, long nDestY,
                                   long nSrcX, long nSrcY,
                                   long nSrcWidth, long nSrcHeight,
diff --git a/vcl/unx/gtk3/gdi/gtk3salnativewidgets-gtk.cxx b/vcl/unx/gtk3/gdi/gtk3salnativewidgets-gtk.cxx
index 281cd26..98b7850 100644
--- a/vcl/unx/gtk3/gdi/gtk3salnativewidgets-gtk.cxx
+++ b/vcl/unx/gtk3/gdi/gtk3salnativewidgets-gtk.cxx
@@ -1555,20 +1555,6 @@ GtkSalGraphics::GtkSalGraphics( GtkSalFrame *pFrame, GtkWidget *pWindow )
     gtk_widget_path_free(path);
 }
 
-void GtkSalGraphics::setDevice(basebmp::BitmapDeviceSharedPtr& rDevice)
-{
-    SvpSalGraphics::setDevice(rDevice);
-    bool bCairoCompatibleSurface = rDevice->getScanlineFormat() == basebmp::FORMAT_THIRTYTWO_BIT_TC_MASK_BGRX;
-    if (bCairoCompatibleSurface != m_bCairoCompatibleSurface)
-    {
-        if (bCairoCompatibleSurface)
-            m_xTextRenderImpl.reset(new GtkCairoTextRender(*this));
-        else
-            m_xTextRenderImpl.reset(new SvpTextRender(*this));
-        m_bCairoCompatibleSurface = bCairoCompatibleSurface;
-    }
-}
-
 void GtkSalGraphics::copyArea( long nDestX, long nDestY,
                                long nSrcX, long nSrcY,
                                long nSrcWidth, long nSrcHeight,
commit 1491e9800bee70b5902643bb1bf8c1789cf12459
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Wed Mar 4 12:48:01 2015 +0000

    simplify optimized scrolling route a little
    
    Change-Id: Ib5e4d84c1943e0286632a7d5a805c3c4e8688de9

diff --git a/vcl/unx/gtk3/gdi/gtk3salnativewidgets-gtk.cxx b/vcl/unx/gtk3/gdi/gtk3salnativewidgets-gtk.cxx
index 8ccf2e3..281cd26 100644
--- a/vcl/unx/gtk3/gdi/gtk3salnativewidgets-gtk.cxx
+++ b/vcl/unx/gtk3/gdi/gtk3salnativewidgets-gtk.cxx
@@ -1555,27 +1555,6 @@ GtkSalGraphics::GtkSalGraphics( GtkSalFrame *pFrame, GtkWidget *pWindow )
     gtk_widget_path_free(path);
 }
 
-static void print_cairo_region (cairo_region_t *region, const char *msg)
-{
-    if (!region) {
-        fprintf (stderr, "%s - NULL\n", msg);
-        return;
-    }
-    int numrect = cairo_region_num_rectangles (region);
-    fprintf (stderr, "%s - %d rects\n", msg, numrect);
-    for (int i = 0; i < numrect; i++) {
-        cairo_rectangle_int_t rect;
-        cairo_region_get_rectangle (region, i, &rect);
-        fprintf( stderr, "\t%d -> %d,%d %dx%d\n", i,
-                 rect.x, rect.y, rect.width, rect.height );
-    }
-}
-
-static void print_update_area (GdkWindow *window, const char *msg)
-{
-    print_cairo_region (gdk_window_get_update_area (window), msg);
-}
-
 void GtkSalGraphics::setDevice(basebmp::BitmapDeviceSharedPtr& rDevice)
 {
     SvpSalGraphics::setDevice(rDevice);
@@ -1595,56 +1574,36 @@ void GtkSalGraphics::copyArea( long nDestX, long nDestY,
                                long nSrcWidth, long nSrcHeight,
                                sal_uInt16 nFlags )
 {
-#ifndef DISABLE_CLEVER_COPYAREA
     mpFrame->pushIgnoreDamage();
     SvpSalGraphics::copyArea( nDestX, nDestY, nSrcX, nSrcY, nSrcWidth, nSrcHeight, nFlags );
     mpFrame->popIgnoreDamage();
+
     cairo_rectangle_int_t rect = { (int)nSrcX, (int)nSrcY, (int)nSrcWidth, (int)nSrcHeight };
     cairo_region_t *region = cairo_region_create_rectangle( &rect );
 
-    print_update_area( gtk_widget_get_window( mpFrame->getWindow() ), "before copy area" );
-
-//    print_cairo_region( mpFrame->m_pRegion, "extremely odd SalFrame: shape combine region! - ");
-
-    g_warning( "FIXME: copy area delta: %d %d needs clip intersect\n",
-               (int)(nDestX - nSrcX), (int)(nDestY - nSrcY) );
-
-    // get clip region and translate it in the opposite direction & intersect ...
-    cairo_region_t *clip_region;
-
-    RectangleVector rects;
-    m_aClipRegion.GetRegionRectangles(rects);
-    if (rects.empty())
-    {
-        basegfx::B2IVector aSize = GetSize();
-        cairo_rectangle_int_t aCairoSize = { 0, 0, aSize.getX(), aSize.getY() };
-        clip_region = cairo_region_create_rectangle( &aCairoSize );
-    }
-    else
+    if (!m_aClipRegion.IsEmpty())
     {
-        clip_region = cairo_region_create();
-        for (RectangleVector::iterator i(rects.begin()); i != rects.end(); ++i)
+        // get clip region and translate it in the opposite direction & intersect ...
+        cairo_region_t *clip_region = cairo_region_create();
+
+        RectangleVector aRectangles;
+        m_aClipRegion.GetRegionRectangles(aRectangles);
+        for (RectangleVector::const_iterator aRectIter(aRectangles.begin()); aRectIter != aRectangles.end(); ++aRectIter)
         {
-            cairo_rectangle_int_t aRect = { (int)i->Left(), (int)i->Top(),
-                                            (int)i->GetWidth(), (int)i->GetHeight() };
+            cairo_rectangle_int_t aRect = { (int)aRectIter->Left(), (int)aRectIter->Top(),
+                                            (int)aRectIter->GetWidth(), (int)aRectIter->GetHeight() };
             cairo_region_union_rectangle( clip_region, &aRect );
         }
+
+        cairo_region_translate( clip_region, - (nDestX - nSrcX), - (nDestY - nSrcY) );
+        cairo_region_intersect( region, clip_region );
+        cairo_region_destroy( clip_region );
     }
-    print_cairo_region( clip_region, "pristine clip region" );
-    cairo_region_translate( clip_region, - (nDestX - nSrcX), - (nDestY - nSrcY) );
-    print_cairo_region( clip_region, "translated clip region" );
-    cairo_region_intersect( region, clip_region );
-    print_cairo_region( region, "reduced copy area region" );
 
     // FIXME: this will queue (duplicate) gtk+ re-rendering for the exposed area, c'est la vie
     gdk_window_move_region( gtk_widget_get_window( mpFrame->getWindow() ),
                             region, nDestX - nSrcX, nDestY - nSrcY );
-    print_update_area( gtk_widget_get_window( mpFrame->getWindow() ), "after copy area" );
-    cairo_region_destroy( clip_region );
     cairo_region_destroy( region );
-#else
-    SvpSalGraphics::copyArea( nDestX, nDestY, nSrcX, nSrcY, nSrcWidth, nSrcHeight, nFlags );
-#endif
 }
 
 cairo_t* GtkSalGraphics::getCairoContext()


More information about the Libreoffice-commits mailing list