[vala] girparser: Only reparent static methods within the same GIR



commit 7aecb7c4e70addfe26c02980962e31d446befb36
Author: Luca Bruno <lucabru src gnome org>
Date:   Thu Jan 5 19:27:04 2012 +0100

    girparser: Only reparent static methods within the same GIR

 vala/valagirparser.vala |   10 ++++++++--
 vapi/gdk-3.0.vapi       |    4 ++++
 2 files changed, 12 insertions(+), 2 deletions(-)
---
diff --git a/vala/valagirparser.vala b/vala/valagirparser.vala
index eecb9d4..c6ced4b 100644
--- a/vala/valagirparser.vala
+++ b/vala/valagirparser.vala
@@ -3214,6 +3214,12 @@ public class Vala.GirParser : CodeVisitor {
 		}
 	}
 
+	bool same_gir (Symbol gir_component, Symbol sym) {
+		var gir_name = gir_component.source_reference.file.gir_namespace;
+		var gir_version = gir_component.source_reference.file.gir_version;
+		return "%s-%s".printf (gir_name, gir_version) in sym.source_reference.file.filename;
+	}
+
 	void process_namespace_method (Node ns, Node node) {
 		/* transform static methods into instance methods if possible.
 		   In most of cases this is a .gir fault we are going to fix */
@@ -3230,7 +3236,7 @@ public class Vala.GirParser : CodeVisitor {
 			// check if it's a missed instance method (often happens for structs)
 			var sym = ((UnresolvedType) first_param.variable_type).unresolved_symbol;
 			var parent = resolve_node (ns, sym);
-			if (parent != null && parent.parent == ns && is_container (parent.symbol) && cname.has_prefix (parent.get_lower_case_cprefix ())) {
+			if (parent != null && same_gir (method, parent.symbol) && parent.parent == ns && is_container (parent.symbol) && cname.has_prefix (parent.get_lower_case_cprefix ())) {
 				// instance method
 				var new_name = method.name.substring (parent.get_lower_case_cprefix().length - ns_cprefix.length);
 				if (parent.lookup (new_name) == null) {
@@ -3249,7 +3255,7 @@ public class Vala.GirParser : CodeVisitor {
 		Node parent = ns;
 		find_parent (cname, ns, ref parent, ref match);
 		var new_name = method.name.substring (parent.get_lower_case_cprefix().length - ns_cprefix.length);
-		if (parent.lookup (new_name) == null) {
+		if (same_gir (method, parent.symbol) && parent.lookup (new_name) == null) {
 			ns.remove_member (node);
 			node.name = new_name;
 			method.name = new_name;
diff --git a/vapi/gdk-3.0.vapi b/vapi/gdk-3.0.vapi
index ed14c82..baffe13 100644
--- a/vapi/gdk-3.0.vapi
+++ b/vapi/gdk-3.0.vapi
@@ -5864,6 +5864,10 @@ namespace Gdk {
 	[CCode (cheader_filename = "gdk/gdk.h")]
 	public static void parse_args ([CCode (array_length_cname = "argc", array_length_pos = 0.5)] ref unowned string[] argv);
 	[CCode (cheader_filename = "gdk/gdk.h")]
+	public static Gdk.Pixbuf pixbuf_get_from_surface (Cairo.Surface surface, int src_x, int src_y, int width, int height);
+	[CCode (cheader_filename = "gdk/gdk.h")]
+	public static Gdk.Pixbuf pixbuf_get_from_window (Gdk.Window window, int src_x, int src_y, int width, int height);
+	[CCode (cheader_filename = "gdk/gdk.h")]
 	[Deprecated (since = "3.0")]
 	public static Gdk.GrabStatus pointer_grab (Gdk.Window window, bool owner_events, Gdk.EventMask event_mask, Gdk.Window? confine_to, Gdk.Cursor? cursor, uint32 time_);
 	[CCode (cheader_filename = "gdk/gdk.h")]



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