Please see the attached patches.  The first one fixes the Gdk.XEvent
binding, and the second one fixes the X.Event binding and provides some
additional bindings for the x11.vapi set of bindings.

I'm not sure if I should open bugs for these or not, because they're
all kind of related.  But if needed, I can do that.

Stats for all three:

commit 8fc9626a13da0ac80f39039a877a3e626d88c35c
Author: Michael B. Trausch <[email protected]>
Date:   Fri May 29 22:47:57 2009 -0400

    Fix X11 bindings and provide enhancements to them
    
    This commit provides more complete Xlib bindings and fixes the
    X.Event binding so that it yields a pointer in generated C code.

 vapi/x11.vapi |  225 ++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 221 insertions(+), 4 deletions(-)

commit f84964ef0bd240dfe9ec822e31e1a5817fe34c85
Author: Michael B. Trausch <[email protected]>
Date:   Fri May 29 22:45:36 2009 -0400

    Fix Gdk.XEvent GDK binding
    
    This commit partially reverts git commit bcdf1d1a3, restoring the
    generation of Gdk.XEvent as a pointer.  This is in preparation for a
    fix to the X11 bindings which is required for AllTray (which uses
    those bindings) to build properly with Vala > 0.7.3.

 vapi/gdk-2.0.vapi                      |    7 ++++---
 vapi/packages/gdk-2.0/gdk-2.0.metadata |    1 -
 2 files changed, 4 insertions(+), 4 deletions(-)

commit 7e3a79e1f6f33ca1286576f0f4bb999ffe984ddc
Author: Michael B. Trausch <[email protected]>
Date:   Fri May 29 17:00:58 2009 -0400

    x11.vapi fixes for C code generation of types
    
    Fix x11 vapi by prefixing events with "X" when emitting C names for
    them, fixes code generation issues and gcc compile errors when
    referencing variables of those types.

 vapi/x11.vapi |   20 ++++++++++++++++++++
 1 files changed, 20 insertions(+), 0 deletions(-)

        --- Mike

-- 
Don't fix bugs later; fix them now.
                            --- Steve Maguire
From f84964ef0bd240dfe9ec822e31e1a5817fe34c85 Mon Sep 17 00:00:00 2001
From: Michael B. Trausch <[email protected]>
Date: Fri, 29 May 2009 22:45:36 -0400
Subject: [PATCH] Fix Gdk.XEvent GDK binding

This commit partially reverts git commit bcdf1d1a3, restoring the
generation of Gdk.XEvent as a pointer.  This is in preparation for a
fix to the X11 bindings which is required for AllTray (which uses
those bindings) to build properly with Vala > 0.7.3.

Signed-off-by: Michael B. Trausch <[email protected]>
---
 vapi/gdk-2.0.vapi                      |    7 ++++---
 vapi/packages/gdk-2.0/gdk-2.0.metadata |    1 -
 2 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/vapi/gdk-2.0.vapi b/vapi/gdk-2.0.vapi
index 175fcc4..a2c4dd2 100644
--- a/vapi/gdk-2.0.vapi
+++ b/vapi/gdk-2.0.vapi
@@ -592,6 +592,10 @@ namespace Gdk {
 		public void unstick ();
 		public void withdraw ();
 	}
+	[Compact]
+	[CCode (cheader_filename = "gdk/gdk.h")]
+	public class XEvent {
+	}
 	[CCode (cheader_filename = "gdk/gdk.h")]
 	[SimpleType]
 	public struct Atom {
@@ -968,9 +972,6 @@ namespace Gdk {
 	public struct WindowRedirect {
 		public static void to_drawable (Gdk.Window window, Gdk.Drawable drawable, int src_x, int src_y, int dest_x, int dest_y, int width, int height);
 	}
-	[CCode (type_id = "GDK_TYPE_XEVENT", cheader_filename = "gdk/gdk.h")]
-	public struct XEvent {
-	}
 	[CCode (cprefix = "GDK_AXIS_", cheader_filename = "gdk/gdk.h")]
 	public enum AxisUse {
 		IGNORE,
diff --git a/vapi/packages/gdk-2.0/gdk-2.0.metadata b/vapi/packages/gdk-2.0/gdk-2.0.metadata
index 829ac5a..8bfc9c8 100644
--- a/vapi/packages/gdk-2.0/gdk-2.0.metadata
+++ b/vapi/packages/gdk-2.0/gdk-2.0.metadata
@@ -133,4 +133,3 @@ gdk_window_get_position.y is_out="1"
 gdk_window_get_root_origin.x is_out="1"
 gdk_window_get_root_origin.y is_out="1"
 gdk_window_invalidate_rect.rect nullable="1"
-GdkXEvent is_value_type="1"
-- 
1.6.0.4

From 8fc9626a13da0ac80f39039a877a3e626d88c35c Mon Sep 17 00:00:00 2001
From: Michael B. Trausch <[email protected]>
Date: Fri, 29 May 2009 22:47:57 -0400
Subject: [PATCH] Fix X11 bindings and provide enhancements to them

This commit provides more complete Xlib bindings and fixes the X.Event
binding so that it yields a pointer in generated C code.

Signed-off-by: Michael B. Trausch <[email protected]>
---
 vapi/x11.vapi |  225 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 221 insertions(+), 4 deletions(-)

diff --git a/vapi/x11.vapi b/vapi/x11.vapi
index de67932..8c57d1a 100644
--- a/vapi/x11.vapi
+++ b/vapi/x11.vapi
@@ -22,87 +22,202 @@
 
 [CCode (cprefix = "", lower_case_cprefix = "", cheader_filename = "X11/Xlib.h,X11/Xatom.h,X11/Xutil.h")]
 namespace X {
+	// Note: must be called before opening a display or calling any other Xlib function,
+	// see http://tronche.com/gui/x/xlib/display/XInitThreads.html
+	[CCode (cname = "XInitThreads")]
+	public Status init_threads ();
+
 	[Compact]
 	[CCode (cname = "Display", ref_function = "", unref_function = "")]
 	public class Display {
+		[CCode (cname = "XOpenDisplay")]
+		public Display (string? name = null);
+
+		[CCode (cname = "XAllPlanes")]
+		public static ulong get_all_planes ();
+
 		[CCode (cname = "XAddToSaveSet")]
 		public int add_to_save_set (Window w);
+
 		[CCode (cname = "XAllowEvents")]
 		public int allow_events (int event_mode, int time);
+
+		[CCode (cname = "XBitmapBitOrder")]
+		public int bitmap_bit_order ();
+
+		[CCode (cname = "XBitmapUnit")]
+		public int bitmap_scanline_unit ();
+
+		[CCode (cname = "XBitmapPad")]
+		public int bitmap_scanline_padding ();
+
 		[CCode (cname = "XChangeProperty")]
 		public int change_property (Window w, Atom property, Atom type, int format, int mode, [CCode (array_length = false)] uchar[] data, int nelements);
+
 		[CCode (cname = "XChangeWindowAttributes")]
 		public int change_window_attributes (Window w, ulong valuemask, SetWindowAttributes attributes);
+
 		[CCode (cname = "XConfigureWindow")]
 		public int configure_window (Window w, uint value_mask, WindowChanges values);
+
 		[CCode (cname = "ConnectionNumber")]
 		public int connection_number ();
+
 		[CCode (cname = "DefaultRootWindow")]
 		public Window default_root_window ();
+
+		[CCode (cname = "XDefaultScreenOfDisplay")]
+		public unowned Screen default_screen ();
+
+		[CCode (cname = "XScreenOfDisplay")]
+		public unowned Screen screen_by_id (int screen_number);
+
 		[CCode (cname = "DisplayString")]
 		public string display_string ();
+
+		[CCode (cname = "XQLength")]
+		public int event_queue_length ();
+
 		[CCode (cname = "XFlush")]
 		public int flush ();
+
 		[CCode (cname = "XGetKeyboardMapping", array_length = false)]
 		public weak uint[] get_keyboard_mapping (uint first_keycode, int keycode_count, ref int keysyms_per_keycode_return);
+
 		[CCode (cname = "XGetModifierMapping")]
 		public ModifierKeymap get_modifier_mapping ();
+
 		[CCode (cname = "XGetSelectionOwner")]
 		public Window get_selection_owner (Atom selection);
+
 		[CCode (cname = "XGetWindowAttributes")]
 		public void get_window_attributes (Window w, out WindowAttributes window_attributes_return);
+
 		[CCode (cname = "XGetWindowProperty")]
 		public int get_window_property (Window w, Atom property, long long_offset, long long_length, bool delete, Atom req_type, out Atom actual_type_return, out int actual_format_return, out ulong nitems_return, out ulong bytes_after_return, out void* prop_return);
+
 		[CCode (cname = "XGrabButton")]
 		public int grab_button (uint button, uint modifiers, Window grab_window, bool owner_events, uint event_mask, int pointer_mode, int keyboard_mode, Window confine_to, uint cursor);
+
 		[CCode (cname = "XGrabPointer")]
 		public int grab_pointer (Window grab_window, bool owner_events, uint event_mask, int pointer_mode, int keyboard_mode, Window confine_to, uint cursor, int time);
+
 		[CCode (cname = "XGrabServer")]
 		public int grab_server ();
+
+		[CCode (cname = "XImageByteOrder")]
+		public int image_byte_order ();
+
 		[CCode (cname = "XInternAtom")]
 		public Atom intern_atom (string atom_name, bool only_if_exists);
+
 		[CCode (cname = "XInternAtoms")]
 		public void intern_atoms (string[] names, bool only_if_exists, [CCode (array_length = false)] Atom[] atoms_return);
+
+		[CCode (cname = "XInternalConnectionNumbers")]
+		public Status internal_connection_numbers (ref int[] fd_return);
+
 		[CCode (cname = "XDisplayKeycodes")]
 		public int keycodes (ref int min_keycodes_return, ref int max_keycodes_return);
+
+		[CCode (cname = "XLastKnownRequestProcessed")]
+		public ulong last_known_request_processed ();
+
+		[CCode (cname = "XLockDisplay")]
+		public void lock_display ();
+
 		[CCode (cname = "XMapWindow")]
 		public int map_window (Window w);
+
+		[CCode (cname = "XMaxRequestSize")]
+		public long max_request_size ();
+
+		[CCode (cname = "XExtendedMaxRequestSize")]
+		public long max_extended_request_size ();
+
 		[CCode (cname = "XNextEvent")]
 		public int next_event (ref Event event_return);
+
+		[CCode (cname = "XNextRequest")]
+		public ulong next_request ();
+
+		[CCode (cname = "XNoOp")]
+		public void no_operation ();
+
+		[CCode (cname = "XScreenCount")]
+		public int number_of_screens ();
+
 		[CCode (cname = "XPending")]
 		public int pending ();
+
+		[CCode (cname = "XProcessInternalConnection")]
+		public void process_internal_connection (int fd);
+
+		[CCode (cname = "XProtocolVersion")]
+		public int protocol_version ();
+
+		[CCode (cname = "XProtocolRevision")]
+		public int protocol_revision ();
+
 		[CCode (cname = "XRaiseWindow")]
 		public int raise_window (Window w);
+
 		[CCode (cname = "XReparentWindow")]
 		public int reparent_window (Window w, Window parent, int x, int y);
+
 		[CCode (cname = "XResizeWindow")]
 		public int resize_window (Window w, uint width, uint height);
+
 		[CCode (cname = "XRootWindow")]
 		public Window root_window (int screen_number);
+
 		[CCode (cname = "ScreenCount")]
 		public int screen_count ();
+
 		[CCode (cname = "XScreenOfDisplay")]
 		public weak Screen screen_of_display (int screen_number);
+
 		[CCode (cname = "XSelectInput")]
 		public int select_input (Window w, long event_mask);
+
 		[CCode (cname = "XSendEvent")]
 		public void send_event (Window w, bool prpagate, long event_mask, ref Event event_send);
+
+		[CCode (cname = "XSetCloseDownMode")]
+		public void set_close_down_mode (int close_mode);
+
 		[CCode (cname = "XSetSelectionOwner")]
 		public Window set_selection_owner (Atom selection, Window owner, int time);
+
 		[CCode (cname = "XSetInputFocus")]
 		public int set_input_focus (Window focus, int revert_to, int time);
+
 		[CCode (cname = "XUngrabButton")]
 		public int ungrab_button (uint button, uint modifiers, Window grab_window);
+
 		[CCode (cname = "XUngrabPointer")]
 		public int ungrab_pointer (int time);
+
 		[CCode (cname = "XUngrabServer")]
 		public int ungrab_server ();
+
+		[CCode (cname = "XUnlockDisplay")]
+		public void unlock_display ();
+
 		[CCode (cname = "XUnmapWindow")]
 		public int unmap_window (Window w);
+
 		[CCode (cname = "XQueryTree")]
 		public void query_tree (Window w, out Window root_return, out Window parent_return, out Window[] children_return);
+
 		[CCode (cname = "XWindowEvent")]
 		public int window_event (Window w, EventMask event_mask, out Event event_return);
+
+		[CCode (cname = "XServerVendor")]
+		public string xserver_vendor_name ();
+
+		[CCode (cname = "XVendorRelease")]
+		public string xserver_vendor_release ();
 	}
 
 	[Compact]
@@ -122,6 +237,23 @@ namespace X {
 
 	[SimpleType]
 	[IntegerType (rank = 9)]
+	[CCode (cname = "Colormap")]
+	public struct Colormap {
+	}
+
+	[SimpleType]
+	[CCode (cname = "GC")]
+	public struct GC {
+	}
+
+	[SimpleType]
+	[IntegerType (rank = 9)]
+	[CCode (cname = "Status")]
+	public struct Status {
+	}
+
+	[SimpleType]
+	[IntegerType (rank = 9)]
 	[CCode (cname = "Window")]
 	public struct Window {
 	}
@@ -207,13 +339,28 @@ namespace X {
 
 	[CCode (cprefix = "CW")]
 	public enum CW {
-		OverrideRedirect,
-		EventMask,
+		BackPixmap,
+		BackPixel,
+		BackingStore,
+		BackingPlanes,
+		BackingPixel,
+		BitGravity,
+		BorderPixmap,
+		BorderPixel,
 		BorderWidth,
+		Colormap,
+		Cursor,
+		DontPropagate,
+		EventMask,
+		Height,
+		OverrideRedirect,
+		SaveUnder,
+		Sibling,
+		StackMode,
 		X,
 		Y,
 		Width,
-		Height
+		WinGravity
 	}
 
 	[CCode (cprefix = "GrabMode")]
@@ -301,9 +448,16 @@ namespace X {
 		MappingNotify
 	}
 
+	/*
+	 * This is actually a union in the header, but events are typically passed
+	 * as pointers, so we use it as a compact class.  The other events can be
+	 * pass-by-value types, but this one should always be handled with a pointer
+	 * in C code, and thus be pass-by-reference.
+	 */
 	// union
+	[Compact]
 	[CCode (cname = "XEvent")]
-	public struct Event {
+	public class Event {
 		public int type;
 		public AnyEvent xany;
 		public KeyEvent xkey;
@@ -636,6 +790,69 @@ namespace X {
 		public Window root;
 		public int width;
 		public int height;
+
+		[CCode (cname = "XScreenOfDisplay")]
+		public static unowned Screen get_screen (Display disp, int screen_number);
+
+		[CCode (cname = "XBlackPixelOfScreen")]
+		public ulong black_pixel_of_screen ();
+
+		[CCode (cname = "XCellsOfScreen")]
+		public int cells_of_screen ();
+
+		[CCode (cname = "XDefaultColormapOfScreen")]
+		public Colormap default_colormap_of_screen ();
+
+		[CCode (cname = "XDefaultDepthOfScreen")]
+		public int default_depth_of_screen ();
+
+		[CCode (cname = "XDefaultGCOfScreen")]
+		public GC default_gc_of_screen ();
+
+		[CCode (cname = "XDefaultVisualOfScreen")]
+		public Visual default_visual_of_screen ();
+
+		[CCode (cname = "XDisplayOfScreen")]
+		public unowned Display display_of_screen ();
+
+		[CCode (cname = "XDoesBackingStore")]
+		public int does_backing_store ();
+
+		[CCode (cname = "XDoesSaveUnders")]
+		public bool does_save_unders ();
+
+		[CCode (cname = "XEventMaskOfScreen")]
+		public long event_mask_of_Screen ();
+
+		[CCode (cname = "XHeightMMOfScreen")]
+		public int height_in_mm_of_screen ();
+
+		[CCode (cname = "XHeightOfScreen")]
+		public int height_of_screen ();
+
+		[CCode (cname = "XMaxCmapsOfScreen")]
+		public int max_colormaps_of_screen ();
+
+		[CCode (cname = "XMinCmapsOfScreen")]
+		public int min_colormaps_of_screen ();
+
+		[CCode (cname = "XPlanesOfScreen")]
+		public int planes_of_screen ();
+
+		[CCode (cname = "XRootWindowOfScreen")]
+		public Window root_window_of_screen ();
+
+		[CCode (cname = "XScreenNumberOfScreen")]
+		public int screen_number_of_screen ();
+
+		[CCode (cname = "XWhitePixelOfScreen")]
+		public ulong white_pixel_of_screen ();
+
+		[CCode (cname = "XWidthMMOfScreen")]
+		public int width_in_mm_of_screen ();
+
+		[CCode (cname = "XWidthOfScreen")]
+		public int width_of_screen ();
 	}
 
 	public const X.Atom XA_ATOM;
-- 
1.6.0.4

Attachment: signature.asc
Description: PGP signature

_______________________________________________
Vala-list mailing list
[email protected]
http://mail.gnome.org/mailman/listinfo/vala-list

Reply via email to