On Mi, 2017-01-18 at 20:03 +0400, Marc-André Lureau wrote: > + surface = qemu_console_surface(con); > + > + /* FIXME: async save with coroutine? it would have to copy or > lock > + * the surface. */ > + ppm_save(filename, surface, &err); > +
No need to lock or copy. ppm_save() uses the pixman image (surface->image) only anyway, so changing it to accept a pixman image instead of the surface is easy. pixman images are reference counted, so you can just grab a reference using pixman_image_ref() and run with it, without risking it'll be released underneath your feet, then unref when done. cheers, Gerd