[accounts-dialog] Optimize redraws
- From: Matthias Clasen <matthiasc src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [accounts-dialog] Optimize redraws
- Date: Tue, 26 Jan 2010 04:53:54 +0000 (UTC)
commit 6b3a0078053e92b57260c18b2c3bd5e2fc04af74
Author: Matthias Clasen <mclasen redhat com>
Date: Mon Jan 25 23:51:47 2010 -0500
Optimize redraws
src/um-crop-area.c | 24 ++++++++++++++++++++----
1 files changed, 20 insertions(+), 4 deletions(-)
---
diff --git a/src/um-crop-area.c b/src/um-crop-area.c
index ad45938..0f67695 100644
--- a/src/um-crop-area.c
+++ b/src/um-crop-area.c
@@ -415,11 +415,15 @@ um_crop_area_motion_notify_event (GtkWidget *widget,
gint x2, y2;
gint delta_x, delta_y;
gint width, height, d;
+ GdkRectangle damage;
+ GdkRectangle damage2;
UmCropArea *area = UM_CROP_AREA (widget);
if (area->priv->browse_pixbuf == NULL)
return FALSE;
+ crop_to_widget (area, &damage);
+
width = gdk_pixbuf_get_width (area->priv->browse_pixbuf);
height = gdk_pixbuf_get_height (area->priv->browse_pixbuf);
@@ -500,8 +504,13 @@ um_crop_area_motion_notify_event (GtkWidget *widget,
default: ;
}
+ crop_to_widget (area, &damage2);
+ gdk_rectangle_union (&damage, &damage2, &damage);
+
+ gtk_widget_queue_draw_area (widget,
+ damage.x - 1, damage.y - 1,
+ damage.width + 2, damage.height + 2);
update_cursor (area, event->x, event->y);
- gtk_widget_queue_draw (widget);
return FALSE;
}
@@ -510,8 +519,8 @@ static gboolean
um_crop_area_button_press_event (GtkWidget *widget,
GdkEventButton *event)
{
- GdkRectangle crop;
UmCropArea *area = UM_CROP_AREA (widget);
+ GdkRectangle crop;
if (area->priv->browse_pixbuf == NULL)
return FALSE;
@@ -522,7 +531,9 @@ um_crop_area_button_press_event (GtkWidget *widget,
area->priv->last_press_y = (event->y - area->priv->image.y) / area->priv->scale;
area->priv->active_region = find_location (&crop, event->x, event->y);
- gtk_widget_queue_draw (widget);
+ gtk_widget_queue_draw_area (widget,
+ crop.x - 1, crop.y - 1,
+ crop.width + 2, crop.height + 2);
return FALSE;
}
@@ -532,15 +543,20 @@ um_crop_area_button_release_event (GtkWidget *widget,
GdkEventButton *event)
{
UmCropArea *area = UM_CROP_AREA (widget);
+ GdkRectangle crop;
if (area->priv->browse_pixbuf == NULL)
return FALSE;
+ crop_to_widget (area, &crop);
+
area->priv->last_press_x = -1;
area->priv->last_press_y = -1;
area->priv->active_region = OUTSIDE;
- gtk_widget_queue_draw (widget);
+ gtk_widget_queue_draw_area (widget,
+ crop.x - 1, crop.y - 1,
+ crop.width + 2, crop.height + 2);
return FALSE;
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]