cairo-trace error

Jennifer Adams <[email protected]>
Newsgroups gmane.comp.lib.cairo
Message-ID <[email protected]>
Dear Experts,
I would like to create a trace file in order to do some debugging. I am using cairo 1.12.8 on a mac running OS X 10.7.5. My sample C program (xopen.c, copied below) is supposed to open an X window and fill it with a red rectangle. I am invoking cairo-trace without any options. Here is the error output:

# ~/supplibs/src/cairo/bin/cairo-trace ./xopen
calling cairo_xlib_surface_create...
Assertion failed: (cairo_xlib_surface_create_real != NULL), function cairo_xlib_surface_create, file trace.c, line 4737.


No window pops up. After a pause, this second error message appears:

/Users/jma/supplibs/src/cairo/bin/cairo-trace: line 136: 33085 Abort trap: 6           (core dumped) CAIRO_TRACE_OUTDIR=`pwd` "$@"

The program does compile and run, except the rectangle drawn is not red, it is white. This is the problem I need to debug. 
Please help! I have run out of ideas. 
--Jennifer Adams


p.s. Here is my program:

#include <stdio.h>
#include <stdlib.h>
#include <cairo.h>
#include <cairo-xlib.h>

static void handle_events(Display *);

static Window win;
static Visual *visual;
static KeyCode quit;

int main () {
  Display *display = (Display *)NULL; 
  cairo_surface_t *surface;
  cairo_t *cr;
  int snum;

  /* Connect to X server */
  display = XOpenDisplay(0);
 
  /* Create window, size is 500x500 */
  snum = DefaultScreen(display);
  win = XCreateSimpleWindow(display, RootWindow(display,snum),
			    100, 0, 500, 500, 4,
			    BlackPixel(display,snum), WhitePixel(display,snum));

  /* Set event type 'Q' for quit */
  quit = XKeysymToKeycode(display, XStringToKeysym("Q"));
  XSelectInput(display, win, KeyPressMask|StructureNotifyMask|ExposureMask);
  
  /* Display Window */
  XMapWindow(display, win);

  /* open a cairo surface in the window */
  visual = DefaultVisual(display,snum);
  printf("calling cairo_xlib_surface_create...\n");
  surface = cairo_xlib_surface_create (display, win, visual, 500, 500);
  printf("...done\n");
  cr = cairo_create(surface);

  /* fill red background */
  cairo_set_source_rgb(cr,1,0,0);
  cairo_rectangle(cr,0,0,500,500);
  cairo_fill(cr);
  handle_events(display);

  /* clean up the window */
  cairo_destroy(cr);
  cairo_surface_finish (surface);
  cairo_surface_destroy (surface);

  return 0;
}

static void handle_events(Display *display) {
  XEvent xev;
  while (1) {
    XNextEvent(display, &xev);
    switch(xev.type) {
    case KeyPress:
      {
	XKeyEvent *kev = &xev.xkey;
	if (kev->keycode == quit) return;
      }
      break;
    }
  }
}

-- 
cairo mailing list
[email protected]
http://lists.cairographics.org/mailman/listinfo/cairo
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.