[cairo] Is cairo thread-safe

快乐2013 350137278 at qq.com
Wed May 8 00:55:22 PDT 2013

Hi, I want to use cairo in multi-threads context, anybody know if cairo is thread-safe? especially the cairo_t object.
I found some mutex related code, so i guess cairo lib might be threadsafe.
Who can tell me the truth?

void threadDrawFunc(void *cr)
  // do we need lock cr here?
  // lock();

  // sample drawing code
  cairo_select_font_face (cr, font, CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_BOLD);
  cairo_set_font_size (cr, 32.0);
  cairo_set_source_rgb (cr, 0.0, 0.0, 1.0);
  cairo_move_to (cr, 10.0, 50.0);

  cairo_show_text (cr, text);

  // unlock();

void mainThread()
         cairo_surface_t *surface =             cairo_image_surface_create (CAIRO_FORMAT_ARGB32, 240, 80);          cairo_t *cr =             cairo_create (surface);

         create_thread(threadDrawFunc, cr);

         // wait threads to exit

         cairo_destroy (cr);

         cairo_surface_write_to_png (surface, "c:/temp/hello-cairo.png");
         cairo_surface_destroy (surface);
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.cairographics.org/archives/cairo/attachments/20130508/b03a37ca/attachment.html>

More information about the cairo mailing list