diff options
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/Android.mk | 2 | ||||
| -rw-r--r-- | lib/Makefile.am | 3 | ||||
| -rw-r--r-- | lib/igt_fb.c | 23 |
3 files changed, 20 insertions, 8 deletions
diff --git a/lib/Android.mk b/lib/Android.mk index 2251c15a..1a7cf338 100644 --- a/lib/Android.mk +++ b/lib/Android.mk @@ -35,7 +35,7 @@ LOCAL_SHARED_LIBRARIES := libpciaccess \ ifeq ("${ANDROID_HAS_CAIRO}", "1") skip_lib_list := LOCAL_C_INCLUDES += $(ANDROID_BUILD_TOP)/external/cairo-1.12.16/src - LOCAL_CFLAGS += -DANDROID_HAS_CAIRO=1 -DIGT_DATADIR=\".\" + LOCAL_CFLAGS += -DANDROID_HAS_CAIRO=1 -DIGT_DATADIR=\".\" -DIGT_SRCDIR=\".\" else skip_lib_list := \ igt_kms.c \ diff --git a/lib/Makefile.am b/lib/Makefile.am index 870b1a12..c74e211f 100644 --- a/lib/Makefile.am +++ b/lib/Makefile.am @@ -10,7 +10,8 @@ noinst_HEADERS = check-ndebug.h AM_CPPFLAGS = -I$(top_srcdir) AM_CFLAGS = $(DRM_CFLAGS) $(CWARNFLAGS) $(LIBUNWIND_CFLAGS) $(DEBUG_CFLAGS) \ - -DIGT_DATADIR=\""$(abs_top_srcdir)/tests"\" \ + -DIGT_SRCDIR=\""$(abs_top_srcdir)/tests"\" \ + -DIGT_DATADIR=\""$(pkgdatadir)"\" \ -DIGT_LOG_DOMAIN=\""$(subst _,-,$*)"\" \ -pthread diff --git a/lib/igt_fb.c b/lib/igt_fb.c index ce5a1025..6dc22bbb 100644 --- a/lib/igt_fb.c +++ b/lib/igt_fb.c @@ -338,6 +338,15 @@ void igt_paint_test_pattern(cairo_t *cr, int width, int height) igt_assert(!cairo_status(cr)); } +static cairo_status_t +stdio_read_func(void *closure, unsigned char* data, unsigned int size) +{ + if (fread(data, 1, size, (FILE*)closure) != size) + return CAIRO_STATUS_READ_ERROR; + + return CAIRO_STATUS_SUCCESS; +} + /** * igt_paint_image: * @cr: cairo drawing context @@ -347,9 +356,8 @@ void igt_paint_test_pattern(cairo_t *cr, int width, int height) * @dst_width: width of the destination rectangle * @dst_height: height of the destination rectangle * - * This function can be used to draw a scaled version of the supplied png image. - * This is currently only used by the CR-code based testing in the "testdisplay" - * testcase. + * This function can be used to draw a scaled version of the supplied png image, + * which is loaded from the package data directory. */ void igt_paint_image(cairo_t *cr, const char *filename, int dst_x, int dst_y, int dst_width, int dst_height) @@ -357,8 +365,11 @@ 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(filename); + image = cairo_image_surface_create_from_png_stream(&stdio_read_func, f); igt_assert(cairo_surface_status(image) == CAIRO_STATUS_SUCCESS); img_width = cairo_image_surface_get_width(image); @@ -605,10 +616,10 @@ unsigned int igt_create_stereo_fb(int drm_fd, drmModeModeInfo *mode, tiling, &fb); cr = igt_get_cairo_ctx(drm_fd, &fb); - igt_paint_image(cr, IGT_DATADIR"/1080p-left.png", + igt_paint_image(cr, "1080p-left.png", layout.left.x, layout.left.y, layout.left.width, layout.left.height); - igt_paint_image(cr, IGT_DATADIR"/1080p-right.png", + igt_paint_image(cr, "1080p-right.png", layout.right.x, layout.right.y, layout.right.width, layout.right.height); |
