aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--calendar/gui/e-day-view-main-item.c8
-rw-r--r--calendar/gui/e-day-view-top-item.c8
-rw-r--r--libgnomecanvas/gnome-canvas-pixbuf.c4
-rw-r--r--widgets/table/e-table-header-utils.c8
-rw-r--r--widgets/text/e-text.c6
5 files changed, 24 insertions, 10 deletions
diff --git a/calendar/gui/e-day-view-main-item.c b/calendar/gui/e-day-view-main-item.c
index 366062f36f..08793c9c53 100644
--- a/calendar/gui/e-day-view-main-item.c
+++ b/calendar/gui/e-day-view-main-item.c
@@ -251,14 +251,18 @@ day_view_main_item_draw_day_event (EDayViewMainItem *main_item,
font_options = get_font_options ();
- if (!is_array_index_in_bounds (day_view->events[day], event_num))
+ if (!is_array_index_in_bounds (day_view->events[day], event_num)) {
+ cairo_destroy (cr);
return;
+ }
event = &g_array_index (day_view->events[day], EDayViewEvent,
event_num);
- if (!is_comp_data_valid (event))
+ if (!is_comp_data_valid (event)) {
+ cairo_destroy (cr);
return;
+ }
/* Fill in the event background. Note that for events in the first
column of the day, we might not want to paint over the vertical bar,
diff --git a/calendar/gui/e-day-view-top-item.c b/calendar/gui/e-day-view-top-item.c
index fffb6141eb..1703467840 100644
--- a/calendar/gui/e-day-view-top-item.c
+++ b/calendar/gui/e-day-view-top-item.c
@@ -76,8 +76,6 @@ day_view_top_item_draw_triangle (EDayViewTopItem *top_item,
gint c1, c2;
cairo_t *cr;
- cr = gdk_cairo_create (drawable);
-
day_view = e_day_view_top_item_get_day_view (top_item);
points[0].x = x;
@@ -102,6 +100,8 @@ day_view_top_item_draw_triangle (EDayViewTopItem *top_item,
if (!is_comp_data_valid (event))
return;
+ cr = gdk_cairo_create (drawable);
+
cairo_save (cr);
/* Fill it in. */
if (gdk_color_parse (
@@ -181,8 +181,6 @@ day_view_top_item_draw_long_event (EDayViewTopItem *top_item,
day_view = e_day_view_top_item_get_day_view (top_item);
model = e_calendar_view_get_model (E_CALENDAR_VIEW (day_view));
- cr = gdk_cairo_create (drawable);
-
gradient = calendar_config_get_display_events_gradient ();
alpha = calendar_config_get_display_events_alpha ();
@@ -207,6 +205,8 @@ day_view_top_item_draw_long_event (EDayViewTopItem *top_item,
if (!is_comp_data_valid (event))
return;
+ cr = gdk_cairo_create (drawable);
+
style = gtk_widget_get_style (GTK_WIDGET (day_view));
comp = e_cal_component_new ();
e_cal_component_set_icalcomponent (
diff --git a/libgnomecanvas/gnome-canvas-pixbuf.c b/libgnomecanvas/gnome-canvas-pixbuf.c
index 32e83bbe1d..910b61b8e7 100644
--- a/libgnomecanvas/gnome-canvas-pixbuf.c
+++ b/libgnomecanvas/gnome-canvas-pixbuf.c
@@ -280,8 +280,10 @@ gnome_canvas_pixbuf_draw (GnomeCanvasItem *item, GdkDrawable *drawable,
cr = gdk_cairo_create (drawable);
gnome_canvas_item_i2c_matrix (item, &matrix);
- if (cairo_matrix_invert (&matrix))
+ if (cairo_matrix_invert (&matrix)) {
+ cairo_destroy (cr);
return;
+ }
cairo_transform (cr, &matrix);
gdk_cairo_set_source_pixbuf (cr, priv->pixbuf, 0, 0);
diff --git a/widgets/table/e-table-header-utils.c b/widgets/table/e-table-header-utils.c
index 16e0a1948c..19a493b0f4 100644
--- a/widgets/table/e-table-header-utils.c
+++ b/widgets/table/e-table-header-utils.c
@@ -290,8 +290,10 @@ e_table_header_draw_button (GdkDrawable *drawable, ETableCol *ecol,
inner_width = button_width - 2 * (xthick + HEADER_PADDING);
inner_height = button_height - 2 * (ythick + HEADER_PADDING);
- if (inner_width < 1 || inner_height < 1)
+ if (inner_width < 1 || inner_height < 1) {
+ cairo_destroy (cr);
return; /* nothing fits */
+ }
inner_x = x + xthick + HEADER_PADDING;
inner_y = y + ythick + HEADER_PADDING;
@@ -314,8 +316,10 @@ e_table_header_draw_button (GdkDrawable *drawable, ETableCol *ecol,
g_return_if_reached ();
}
- if (inner_width < 1)
+ if (inner_width < 1) {
+ cairo_destroy (cr);
return; /* nothing else fits */
+ }
layout = build_header_layout (widget, ecol->text);
pango_layout_set_ellipsize (layout, PANGO_ELLIPSIZE_END);
diff --git a/widgets/text/e-text.c b/widgets/text/e-text.c
index 74c9385012..cbae6d1da8 100644
--- a/widgets/text/e-text.c
+++ b/widgets/text/e-text.c
@@ -1443,8 +1443,10 @@ e_text_draw (GnomeCanvasItem *item, GdkDrawable *drawable,
if (!text->preedit_len)
reset_layout (text);
- if (!pango_layout_get_text (text->layout))
+ if (!pango_layout_get_text (text->layout)) {
+ cairo_destroy (cr);
return;
+ }
xpos = text->text_cx;
ypos = text->text_cy;
@@ -1514,6 +1516,8 @@ e_text_draw (GnomeCanvasItem *item, GdkDrawable *drawable,
}
}
}
+
+ cairo_destroy (cr);
}
/* Point handler for the text item */