**
** \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
#include "asyncrenderer.h"
+#include "general.h"
+
#endif
/* === U S I N G =========================================================== */
renderer = new AsyncRenderer(targ);
renderer->signal_success().connect(sigc::mem_fun(*this,&Widget_NavView::on_finish_render));
- renderer->start();
dirty = false;
+ renderer->start();
}
}
dw, // width
dh, // height
dw*synfig::channels(pf), // stride (pitch)
- SigC::slot(freegu8)
+ sigc::ptr_fun(freegu8)
);
}
else
}else return -999999.0;
}
-bool studio::Widget_NavView::on_expose_draw(GdkEventExpose *exp)
+bool studio::Widget_NavView::on_expose_draw(GdkEventExpose */*exp*/)
{
+ // don't redraw if the previous redraw is still running single-threaded
+ // or we end up destroying the renderer that's rendering it
+ if (App::single_threaded && renderer && renderer->updating)
+ return false;
+
//print out the zoom
//HACK kind of...
//zoom_print.set_text(strprintf("%.1f%%",100*unit_to_zoom(adj_zoom.get_value())));
float max = abs((br[0]-tl[0]) / drawto.get_width());
- if((prev->get_width() / drawto.get_width()) < (prev->get_height() / drawto.get_height()))
+ if((float(prev->get_width()) / drawto.get_width()) < (float(prev->get_height()) / drawto.get_height()))
max = abs((br[1]-tl[1]) / drawto.get_height());
float signx = (br[0]-tl[0]) < 0 ? -1 : 1;