metacity r4119 - in trunk: . src/ui
- From: tthurman svn gnome org
- To: svn-commits-list gnome org
- Subject: metacity r4119 - in trunk: . src/ui
- Date: Fri, 6 Feb 2009 04:50:50 +0000 (UTC)
Author: tthurman
Date: Fri Feb 6 04:50:50 2009
New Revision: 4119
URL: http://svn.gnome.org/viewvc/metacity?rev=4119&view=rev
Log:
Lines where x1==x2 or y1==y2 may have the second element
null. Lines where both are null, and the width is zero,
are points. This speeds things up surprisingly much.
* src/ui/theme-parser.c:
* src/ui/theme.c:
Modified:
trunk/ChangeLog
trunk/src/ui/theme-parser.c
trunk/src/ui/theme.c
Modified: trunk/src/ui/theme-parser.c
==============================================================================
--- trunk/src/ui/theme-parser.c (original)
+++ trunk/src/ui/theme-parser.c Fri Feb 6 04:50:50 2009
@@ -1658,8 +1658,16 @@
op->data.line.x1 = meta_draw_spec_new (info->theme, x1, NULL);
op->data.line.y1 = meta_draw_spec_new (info->theme, y1, NULL);
- op->data.line.x2 = meta_draw_spec_new (info->theme, x2, NULL);
- op->data.line.y2 = meta_draw_spec_new (info->theme, y2, NULL);
+
+ if (strcmp(x1, x2)==0)
+ op->data.line.x2 = NULL;
+ else
+ op->data.line.x2 = meta_draw_spec_new (info->theme, x2, NULL);
+
+ if (strcmp(y1, y2)==0)
+ op->data.line.y2 = NULL;
+ else
+ op->data.line.y2 = meta_draw_spec_new (info->theme, y2, NULL);
op->data.line.width = width_val;
op->data.line.dash_on_length = dash_on_val;
Modified: trunk/src/ui/theme.c
==============================================================================
--- trunk/src/ui/theme.c (original)
+++ trunk/src/ui/theme.c Fri Feb 6 04:50:50 2009
@@ -2645,6 +2645,7 @@
void
meta_draw_spec_free (MetaDrawSpec *spec)
{
+ if (!spec) return;
free_tokens (spec->tokens, spec->n_tokens);
g_slice_free (MetaDrawSpec, spec);
}
@@ -3489,10 +3490,25 @@
x1 = parse_x_position_unchecked (op->data.line.x1, env);
y1 = parse_y_position_unchecked (op->data.line.y1, env);
- x2 = parse_x_position_unchecked (op->data.line.x2, env);
- y2 = parse_y_position_unchecked (op->data.line.y2, env);
- gdk_draw_line (drawable, gc, x1, y1, x2, y2);
+ if (!op->data.line.x2 &&
+ !op->data.line.y2 &&
+ op->data.line.width==0)
+ gdk_draw_point (drawable, gc, x1, y1);
+ else
+ {
+ if (op->data.line.x2)
+ x2 = parse_x_position_unchecked (op->data.line.x2, env);
+ else
+ x2 = x1;
+
+ if (op->data.line.y2)
+ y2 = parse_y_position_unchecked (op->data.line.y2, env);
+ else
+ y2 = y1;
+
+ gdk_draw_line (drawable, gc, x1, y1, x2, y2);
+ }
g_object_unref (G_OBJECT (gc));
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]