Fix 1824437: studio occasionally renders the tiles in the wrong places. This was...
[synfig.git] / synfig-studio / trunk / src / gtkmm / renderer_canvas.cpp
index 9e8e863..26f62c8 100644 (file)
@@ -2,10 +2,11 @@
 /*!    \file renderer_canvas.cpp
 **     \brief Template File
 **
-**     $Id: renderer_canvas.cpp,v 1.1.1.1 2005/01/07 03:34:36 darco Exp $
+**     $Id$
 **
 **     \legal
 **     Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley
+**     Copyright (c) 2007 Chris Moore
 **
 **     This package is free software; you can redistribute it and/or
 **     modify it under the terms of the GNU General Public License as
@@ -33,6 +34,8 @@
 #include "workarea.h"
 #include <ETL/misc>
 
+#include "general.h"
+
 #endif
 
 /* === U S I N G =========================================================== */
@@ -91,7 +94,7 @@ Renderer_Canvas::get_rendering()const
 void
 Renderer_Canvas::render_vfunc(
        const Glib::RefPtr<Gdk::Drawable>& drawable,
-       const Gdk::Rectangle& expose_area
+       const Gdk::Rectangle& /*expose_area*/
 )
 {
        assert(get_work_area());
@@ -148,7 +151,7 @@ Renderer_Canvas::render_vfunc(
        }
        else
        {
-               const int width_in_tiles(w/tile_w+(w%tile_w?1:0));
+               const int width_in_tiles(w/tile_w+(((get_work_area()->get_low_resolution_flag())?((w/2)%(tile_w/2)):(w%tile_w))?1:0));
                const int height_in_tiles(h/tile_h+(h%tile_h?1:0));
 
                int u(0),v(0),tx,ty;
@@ -170,7 +173,7 @@ Renderer_Canvas::render_vfunc(
                        for(u=u1;u<u2;u++)
                        {
                                int index=v*width_in_tiles+u;
-                               if(tile_book.size()>index && tile_book[index].first)
+                               if(int(tile_book.size())>index && tile_book[index].first)
                                {
                                        tx=u*tile_w;
                                        ty=v*tile_w;