summaryrefslogtreecommitdiff
path: root/lib/igt_fb.c
diff options
context:
space:
mode:
authorVille Syrjälä <ville.syrjala@linux.intel.com>2017-09-21 15:39:23 +0300
committerVille Syrjälä <ville.syrjala@linux.intel.com>2017-09-22 15:43:38 +0300
commit75f320c5bda480f4ea1501577247d6a807ed3bff (patch)
treecad6f3b5a758d45e3da5a0a07b7b7669c9f8be8b /lib/igt_fb.c
parent3a01e58858e6068f75356e798fd90c80cccb37d6 (diff)
lib/igt_fb: Add igt_cairo_image_surface_create_from_png()
Raw usage of cairo_image_surface_create_from_png() doesn't work since it doesn't know about IGT_DATADIR and IGT_SRCDIR. Let's extract the helper from igt_paint_image() that uses igt_fopen_data() + cairo_image_surface_create_from_png_stream() and call it igt_cairo_image_surface_create_from_png(). Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> Reviewed-by: Petri Latvala <petri.latvala@intel.com>
Diffstat (limited to 'lib/igt_fb.c')
-rw-r--r--lib/igt_fb.c21
1 files changed, 14 insertions, 7 deletions
diff --git a/lib/igt_fb.c b/lib/igt_fb.c
index 95434a69..d4eaed71 100644
--- a/lib/igt_fb.c
+++ b/lib/igt_fb.c
@@ -583,6 +583,18 @@ stdio_read_func(void *closure, unsigned char* data, unsigned int size)
return CAIRO_STATUS_SUCCESS;
}
+cairo_surface_t *igt_cairo_image_surface_create_from_png(const char *filename)
+{
+ cairo_surface_t *image;
+ FILE *f;
+
+ f = igt_fopen_data(filename);
+ image = cairo_image_surface_create_from_png_stream(&stdio_read_func, f);
+ fclose(f);
+
+ return image;
+}
+
/**
* igt_paint_image:
* @cr: cairo drawing context
@@ -601,11 +613,8 @@ void igt_paint_image(cairo_t *cr, const char *filename,
cairo_surface_t *image;
int img_width, img_height;
double scale_x, scale_y;
- FILE* f;
-
- f = igt_fopen_data(filename);
- image = cairo_image_surface_create_from_png_stream(&stdio_read_func, f);
+ image = igt_cairo_image_surface_create_from_png(filename);
igt_assert(cairo_surface_status(image) == CAIRO_STATUS_SUCCESS);
img_width = cairo_image_surface_get_width(image);
@@ -624,8 +633,6 @@ void igt_paint_image(cairo_t *cr, const char *filename,
cairo_surface_destroy(image);
cairo_restore(cr);
-
- fclose(f);
}
/**
@@ -877,7 +884,7 @@ unsigned int igt_create_image_fb(int fd, int width, int height,
uint32_t fb_id;
cairo_t *cr;
- image = cairo_image_surface_create_from_png(filename);
+ image = igt_cairo_image_surface_create_from_png(filename);
igt_assert(cairo_surface_status(image) == CAIRO_STATUS_SUCCESS);
if (width == 0)
width = cairo_image_surface_get_width(image);