[gnome-shell] Work around g-ir-scanner problem with Gdk.Rectangle



commit 174caf00160d0607ac60140a7ae48a910b414f5b
Author: Owen W. Taylor <otaylor fishsoup net>
Date:   Mon Jul 5 17:08:36 2010 -0400

    Work around g-ir-scanner problem with Gdk.Rectangle
    
    g-ir-scanner is currently buggy and confuses the Gdk.Rectangle alias
    with MetaRectangle. Since this is moderately hard to fix in
    gobject-introspection and the fix would conflict with in-progress
    changes, work around by doing a 'sed job' on the generated Meta.gir.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=623640

 src/Makefile.am           |    6 +++++-
 src/fix-meta-rectangle.py |   21 +++++++++++++++++++++
 2 files changed, 26 insertions(+), 1 deletions(-)
---
diff --git a/src/Makefile.am b/src/Makefile.am
index b063722..4fea30d 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -210,8 +210,12 @@ Shell-0.1.gir: $(mutter) $(G_IR_SCANNER) St-1.0.gir libgnome-shell.la Makefile
 		$(addprefix $(srcdir)/,$(libgnome_shell_la_gir_sources)) \
 		$(libgnome_shell_la_CPPFLAGS)		\
 		-I $(srcdir)				\
-		-o $@
+		-o $  tmp &&				\
+	$(PYTHON) $(srcdir)/fix-meta-rectangle.py $  tmp $  tmp2 &&	\
+	rm $  tmp &&							\
+	mv $  tmp2 $@
 CLEANFILES += Shell-0.1.gir
+EXTRA_DIST += fix-meta-rectangle.py
 
 # The dependency on libgnome-shell.la here is because g-ir-compiler opens it
 # (not the fake library, since we've already done the rewriting)
diff --git a/src/fix-meta-rectangle.py b/src/fix-meta-rectangle.py
new file mode 100755
index 0000000..560d892
--- /dev/null
+++ b/src/fix-meta-rectangle.py
@@ -0,0 +1,21 @@
+#!/usr/bin/python
+import re
+import sys
+
+# gobject-introspection currently has a bug where an alias like
+# 'typedef GdkRectangle cairo_rect_int_t' is stored un-namespaced,
+# so it is taken to apply to all *Rectangle types. Fixing this
+# requires a significant rework of g-ir-scanner, so for the moment
+# we fix up the output using this script.
+#
+# https://bugzilla.gnome.org/show_bug.cgi?id=622609
+
+GDK_RECTANGLE = re.compile(r'Gdk\.Rectangle')
+META_RECTANGLE = re.compile(r'MetaRectangle')
+
+i = open(sys.argv[1], 'r')
+o = open(sys.argv[2], 'w')
+for line in i:
+    if GDK_RECTANGLE.search(line) and META_RECTANGLE.search(line):
+        line = re.sub('Gdk.Rectangle', 'Meta.Rectangle', line)
+    o.write(line)



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]