summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJabier Arraiza <jabier.arraiza@marker.es>2019-10-27 18:50:50 +0000
committerJabier Arraiza <jabier.arraiza@marker.es>2019-10-27 21:39:17 +0000
commit94182ec220ca5fce1c940a56f6959e68d566633c (patch)
treeba624d87f675edb366e92e82256240cb15dcfec8
parentfix heap-buffer-overflow in node tool (diff)
downloadinkscape-94182ec220ca5fce1c940a56f6959e68d566633c.tar.gz
inkscape-94182ec220ca5fce1c940a56f6959e68d566633c.zip
Remove delay on desktop switch
-rw-r--r--src/display/sp-canvas.cpp33
-rw-r--r--src/display/sp-canvas.h1
-rw-r--r--src/ui/tools/tool-base.cpp3
3 files changed, 9 insertions, 28 deletions
diff --git a/src/display/sp-canvas.cpp b/src/display/sp-canvas.cpp
index 8bc0daaa3..a2901741a 100644
--- a/src/display/sp-canvas.cpp
+++ b/src/display/sp-canvas.cpp
@@ -1020,7 +1020,6 @@ static void sp_canvas_init(SPCanvas *canvas)
canvas->_inside = false; // this could be wrong on start but we update it as far we bo to the other side.
canvas->_splits = 0;
canvas->_forcefull = false;
- canvas->_delayrendering = 0;
canvas->_totalelapsed = 0;
canvas->_scrooling = false;
canvas->_idle_time = g_get_monotonic_time();
@@ -1175,7 +1174,6 @@ void SPCanvas::handle_get_preferred_height(GtkWidget *widget, gint *minimum_heig
void SPCanvas::handle_size_allocate(GtkWidget *widget, GtkAllocation *allocation)
{
SPCanvas *canvas = SP_CANVAS (widget);
- canvas->_delayrendering = 20;
// Allocation does not depend on device scale.
GtkAllocation old_allocation;
gtk_widget_get_allocation(widget, &old_allocation);
@@ -2085,13 +2083,6 @@ int SPCanvas::paintRectInternal(PaintRectSetup const *setup, Geom::IntRect const
gint64 now = g_get_monotonic_time();
gint64 elapsed = now - setup->start_time;
- // if we do canvas resize or panning we want the canvas not redraw in enought times
- // to make a smooth response.
- if (_delayrendering != 0) {
- --_delayrendering;
- return false;
- }
-
// Allow only very fast buffers to be run together;
// as soon as the total redraw time exceeds 1ms, cancel;
// this returns control to the idle loop and allows Inkscape to process user input
@@ -2556,12 +2547,10 @@ gint SPCanvas::idle_handler(gpointer data)
static int totaloops = 1;
gint64 now = 0;
gint64 elapsed = 0;
- if (!canvas->_delayrendering) {
- now = g_get_monotonic_time();
- elapsed = now - canvas->_idle_time;
- g_message("[%i] start loop %i in split %i at %f", canvas->_idle_id, totaloops, canvas->_splits,
- canvas->_totalelapsed / (double)1000000 + elapsed / (double)1000000);
- }
+ now = g_get_monotonic_time();
+ elapsed = now - canvas->_idle_time;
+ g_message("[%i] start loop %i in split %i at %f", canvas->_idle_id, totaloops, canvas->_splits,
+ canvas->_totalelapsed / (double)1000000 + elapsed / (double)1000000);
#endif
int ret = canvas->doUpdate();
int n_rects = cairo_region_num_rectangles(canvas->_clean_region);
@@ -2570,20 +2559,17 @@ gint SPCanvas::idle_handler(gpointer data)
}
#ifdef DEBUG_PERFORMANCE
- if (ret == 0 && !canvas->_delayrendering) {
- now = g_get_monotonic_time();
- elapsed = now - canvas->_idle_time;
- g_message("[%i] loop ended unclean at %f", canvas->_idle_id,
- canvas->_totalelapsed / (double)1000000 + elapsed / (double)1000000);
- }
- if (ret == 0 && !canvas->_delayrendering) {
+ now = g_get_monotonic_time();
+ elapsed = now - canvas->_idle_time;
+ g_message("[%i] loop ended unclean at %f", canvas->_idle_id,
+ canvas->_totalelapsed / (double)1000000 + elapsed / (double)1000000);
+ if (ret == 0) {
totaloops += 1;
}
if (ret) {
// Reset idle id
canvas->_scrooling = false;
canvas->_forcefull = false;
- canvas->_delayrendering = 0;
now = g_get_monotonic_time();
elapsed = now - canvas->_idle_time;
canvas->_totalelapsed += elapsed;
@@ -2612,7 +2598,6 @@ gint SPCanvas::idle_handler(gpointer data)
canvas->_idle_id = 0;
canvas->_scrooling = false;
canvas->_forcefull = false;
- canvas->_delayrendering = 0;
#endif
}
return !ret;
diff --git a/src/display/sp-canvas.h b/src/display/sp-canvas.h
index 2d64534db..770a04765 100644
--- a/src/display/sp-canvas.h
+++ b/src/display/sp-canvas.h
@@ -209,7 +209,6 @@ public:
int _y0; ///< World coordinate of the topmost pixels of window
bool _forcefull;
bool _scrooling;
- int _delayrendering;
int _device_scale; ///< Scale for high DPI montiors
gint64 _idle_time;
int _splits;
diff --git a/src/ui/tools/tool-base.cpp b/src/ui/tools/tool-base.cpp
index e96797386..eb2f2119a 100644
--- a/src/ui/tools/tool-base.cpp
+++ b/src/ui/tools/tool-base.cpp
@@ -455,9 +455,6 @@ bool ToolBase::root_handler(GdkEvent* event) {
break;
case GDK_MOTION_NOTIFY:
- if (this->space_panning) {
- this->desktop->canvas->_delayrendering = 20;
- }
if (panning) {
if (panning == 4 && !xp && !yp ) {
// <Space> + mouse panning started, save location and grab canvas