On 06/02/2016 06:07, Emmanuel Gil Peyrot wrote:
libjpeg is only used in shared/image-loader.c in weston, like libwebp
it doesn’t make sense to fail the entire build if it isn’t present, for
any reason.

I kept libpng a hard dependency in the image-loader because so many
other parts of weston depend on PNG, it is already mandatory from
everywhere else.

Signed-off-by: Emmanuel Gil Peyrot <[email protected]>
---
  configure.ac          |  8 ++++----
  shared/image-loader.c | 23 ++++++++++++++++-------
  2 files changed, 20 insertions(+), 11 deletions(-)

diff --git a/configure.ac b/configure.ac
index bff6380..c42e32b 100644
--- a/configure.ac
+++ b/configure.ac
@@ -311,13 +311,12 @@ fi
  AM_CONDITIONAL(ENABLE_VAAPI_RECORDER, test "x$have_libva" = xyes)


-AC_CHECK_LIB([jpeg], [jpeg_CreateDecompress], have_jpeglib=yes)
+AC_CHECK_LIB([jpeg], [jpeg_CreateDecompress], [have_jpeglib=yes], 
[have_jpeglib=no])

Please add a proper AC_ARG_ENABLE. I let you decide whether you want yes, no or auto as default.


  if test x$have_jpeglib = xyes; then
    JPEG_LIBS="-ljpeg"
-else
-  AC_ERROR([libjpeg not found])
+  AC_SUBST(JPEG_LIBS)
+  AC_DEFINE([HAVE_JPEG], [1], [Have jpeg])
  fi
-AC_SUBST(JPEG_LIBS)

  PKG_CHECK_MODULES(CAIRO, [cairo])

@@ -676,6 +675,7 @@ AC_MSG_RESULT([

        Colord Support                  ${have_colord}
        LCMS2 Support                   ${have_lcms}
+       libjpeg Support                 ${have_jpeglib}
        libwebp Support                 ${have_webp}
        libunwind Support               ${have_libunwind}
        VA H.264 encoding Support       ${have_libva}
diff --git a/shared/image-loader.c b/shared/image-loader.c
index ec75bd4..e6c0c7d 100644
--- a/shared/image-loader.c
+++ b/shared/image-loader.c
@@ -30,13 +30,16 @@
  #include <stdlib.h>
  #include <stdio.h>
  #include <string.h>
-#include <jpeglib.h>
  #include <png.h>
  #include <pixman.h>

  #include "shared/helpers.h"
  #include "image-loader.h"

+#ifdef HAVE_JPEG
+#include <jpeglib.h>
+#endif
+
  #ifdef HAVE_WEBP
  #include <webp/decode.h>
  #endif
@@ -48,6 +51,14 @@ stride_for_width(int width)
  }

  static void
+pixman_image_destroy_func(pixman_image_t *image, void *data)
+{
+       free(data);
+}
+
+#ifdef HAVE_JPEG
+
+static void
  swizzle_row(JSAMPLE *row, JDIMENSION width)
  {
        JSAMPLE *s;
@@ -68,12 +79,6 @@ error_exit(j_common_ptr cinfo)
        longjmp(cinfo->client_data, 1);
  }

-static void
-pixman_image_destroy_func(pixman_image_t *image, void *data)
-{
-       free(data);
-}
-
  static pixman_image_t *
  load_jpeg(FILE *fp)
  {
@@ -132,6 +137,8 @@ load_jpeg(FILE *fp)
        return pixman_image;
  }

+#endif
+
  static inline int
  multiply_alpha(int alpha, int color)
  {
@@ -363,7 +370,9 @@ struct image_loader {

  static const struct image_loader loaders[] = {
        { { 0x89, 'P', 'N', 'G' }, 4, load_png },
+#ifdef HAVE_JPEG
        { { 0xff, 0xd8 }, 2, load_jpeg },
+#endif
  #ifdef HAVE_WEBP
        { { 'R', 'I', 'F', 'F' }, 4, load_webp }
  #endif


Code is ok.

--

Quentin “Sardem FF7” Glidic
_______________________________________________
wayland-devel mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/wayland-devel

Reply via email to