[cogl] x11-foreign: Updates to forward X Events to Cogl
- From: Robert Bragg <rbragg src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [cogl] x11-foreign: Updates to forward X Events to Cogl
- Date: Tue, 14 Jun 2011 16:38:24 +0000 (UTC)
commit 44e4b13324d9ae7e462e071ebf28ae4d29cb4606
Author: Robert Bragg <robert linux intel com>
Date: Mon Jun 13 10:29:05 2011 +0100
x11-foreign: Updates to forward X Events to Cogl
This update the x11-foreign test so that it checks for events on its X
display and forwards them on to Cogl. It will now also quit if any key
of button is pressed.
examples/x11-foreign.c | 37 ++++++++++++++++++++++++++++++++++---
1 files changed, 34 insertions(+), 3 deletions(-)
---
diff --git a/examples/x11-foreign.c b/examples/x11-foreign.c
index 2bf97bc..6f68ade 100644
--- a/examples/x11-foreign.c
+++ b/examples/x11-foreign.c
@@ -5,6 +5,15 @@
#include <X11/Xlib.h>
#include <X11/Xutil.h>
+#define X11_FOREIGN_EVENT_MASK \
+ (KeyPressMask | \
+ KeyReleaseMask | \
+ ButtonPressMask | \
+ ButtonReleaseMask | \
+ PointerMotionMask)
+
+CoglColor black;
+
static void
update_cogl_x11_event_mask (CoglOnscreen *onscreen,
guint32 event_mask,
@@ -14,7 +23,7 @@ update_cogl_x11_event_mask (CoglOnscreen *onscreen,
XSetWindowAttributes attrs;
guint32 xwin;
- attrs.event_mask = event_mask;
+ attrs.event_mask = event_mask | X11_FOREIGN_EVENT_MASK;
xwin = cogl_onscreen_x11_get_window_xid (onscreen);
XChangeWindowAttributes (xdpy,
@@ -41,6 +50,13 @@ main (int argc, char **argv)
XSetWindowAttributes xattr;
unsigned long mask;
Window xwin;
+ CoglVertexP2C4 triangle_vertices[] = {
+ {0, 0.7, 0xff, 0x00, 0x00, 0x80},
+ {-0.7, -0.7, 0x00, 0xff, 0x00, 0xff},
+ {0.7, -0.7, 0x00, 0x00, 0xff, 0xff}
+ };
+ CoglPrimitive *triangle;
+
/* Since we want to test external ownership of the X display,
* connect to X manually... */
@@ -145,10 +161,25 @@ main (int argc, char **argv)
cogl_push_framebuffer (fb);
- cogl_set_source_color4f (1, 0, 0, 1);
+ triangle = cogl_primitive_new_p2c4 (COGL_VERTICES_MODE_TRIANGLES,
+ 3, triangle_vertices);
for (;;)
{
- cogl_rectangle (-1, 1, 1, -1);
+ while (XPending (xdpy))
+ {
+ XEvent event;
+ XNextEvent (xdpy, &event);
+ switch (event.type)
+ {
+ case KeyRelease:
+ case ButtonRelease:
+ return 0;
+ }
+ /* FIXME: This should be replaced with some equivalent cogl_xlib_ typesafe API... */
+ cogl_renderer_handle_native_event (renderer, &event);
+ }
+ cogl_clear (&black, COGL_BUFFER_BIT_COLOR);
+ cogl_primitive_draw (triangle);
cogl_framebuffer_swap_buffers (fb);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]