Signed-off-by: Derek Straka <[email protected]>
---
 .../tracker/tracker-0.14.2/giflib5-support.patch   | 126 +++++++++++++++++++++
 .../recipes-support/tracker/tracker_0.14.2.bb      |   3 +-
 2 files changed, 128 insertions(+), 1 deletion(-)
 create mode 100644 
meta-gnome/recipes-support/tracker/tracker-0.14.2/giflib5-support.patch

diff --git 
a/meta-gnome/recipes-support/tracker/tracker-0.14.2/giflib5-support.patch 
b/meta-gnome/recipes-support/tracker/tracker-0.14.2/giflib5-support.patch
new file mode 100644
index 0000000..fab3371
--- /dev/null
+++ b/meta-gnome/recipes-support/tracker/tracker-0.14.2/giflib5-support.patch
@@ -0,0 +1,126 @@
+ src/tracker-extract/tracker-extract-gif.c |   36 +++++++++++++++++++++++++++++
+ 1 file changed, 36 insertions(+)
+--- a/src/tracker-extract/tracker-extract-gif.c        
++++ a/src/tracker-extract/tracker-extract-gif.c        
+@@ -75,6 +75,39 @@
+       return (GIF_OK);
+ }
+ 
++#if GIFLIB_MAJOR >= 5
++static inline void
++gif_error (const gchar *action, int err)
++{
++      const char *str = GifErrorString (err);
++      if (str != NULL) {
++              g_message ("%s, error: '%s'", action, str);
++      } else {
++              g_message ("%s, undefined error %d", action, err);
++      }
++}
++#else /* GIFLIB_MAJOR >= 5 */
++static inline void print_gif_error()
++{
++#if defined(GIFLIB_MAJOR) && defined(GIFLIB_MINOR) && ((GIFLIB_MAJOR == 4 && 
GIFLIB_MINOR >= 2) || GIFLIB_MAJOR > 4)
++      const char *str = GifErrorString ();
++      if (str != NULL) {
++              g_message ("GIF, error: '%s'", str);
++      } else {
++              g_message ("GIF, undefined error");
++      }
++#else
++      PrintGifError();
++#endif
++}
++#endif /* GIFLIB_MAJOR >= 5 */
++
++/* giflib 5.1 changed the API of DGifCloseFile to take two arguments */
++#if !defined(GIFLIB_MAJOR) || \
++    !(GIFLIB_MAJOR > 5 || (GIFLIB_MAJOR == 5 && GIFLIB_MINOR >= 1))
++#define DGifCloseFile(a, b) DGifCloseFile(a)
++#endif
++
+ static void
+ read_metadata (TrackerSparqlBuilder *preupdate,
+                TrackerSparqlBuilder *metadata,
+@@ -100,14 +133,22 @@
+               ExtBlock extBlock;
+ 
+               if (DGifGetRecordType(gifFile, &RecordType) == GIF_ERROR) {
+-                      PrintGifError();
++#if GIFLIB_MAJOR < 5
++                      print_gif_error ();
++#else  /* GIFLIB_MAJOR < 5 */
++                      gif_error ("Could not read next GIF record type", 
gifFile->Error);
++#endif /* GIFLIB_MAJOR < 5 */
+                       return;
+               }
+ 
+               switch (RecordType) {
+                       case IMAGE_DESC_RECORD_TYPE:
+                       if (DGifGetImageDesc(gifFile) == GIF_ERROR) {
+-                              PrintGifError();
++#if GIFLIB_MAJOR < 5
++                              print_gif_error();
++#else  /* GIFLIB_MAJOR < 5 */
++                              gif_error ("Could not get GIF record 
information", gifFile->Error);
++#endif /* GIFLIB_MAJOR < 5 */
+                               return;
+                       }
+ 
+@@ -117,7 +158,11 @@
+                       framedata = g_malloc (framewidth*frameheight);
+ 
+                       if (DGifGetLine(gifFile, framedata, 
framewidth*frameheight)==GIF_ERROR) {
+-                              PrintGifError();
++#if GIFLIB_MAJOR < 5
++                              print_gif_error();
++#else  /* GIFLIB_MAJOR < 5 */
++                              gif_error ("Could not load a block of GIF 
pixes", gifFile->Error);
++#endif /* GIFLIB_MAJOR < 5 */
+                               return;
+                       }
+ 
+@@ -593,6 +638,9 @@
+       gchar *filename, *uri;
+       GFile *file;
+       int fd;
++#if GIFLIB_MAJOR >= 5
++      int err;
++#endif
+ 
+       preupdate = tracker_extract_info_get_preupdate_builder (info);
+       metadata = tracker_extract_info_get_metadata_builder (info);
+@@ -617,8 +665,14 @@
+               return FALSE;
+       }       
+ 
++#if GIFLIB_MAJOR < 5
+       if ((gifFile = DGifOpenFileHandle (fd)) == NULL) {
+-              PrintGifError ();
++              print_gif_error ();
++#else   /* GIFLIB_MAJOR < 5 */
++      if ((gifFile = DGifOpenFileHandle (fd, &err)) == NULL) {
++              gif_error ("Could not open GIF file with handle", err);
++#endif /* GIFLIB_MAJOR < 5 */
++              g_free (filename);
+               close (fd);
+               return FALSE;
+       }
+@@ -637,10 +691,15 @@
+       g_string_free (where, TRUE);
+ 
+       g_free (uri);
+-
++#if GIFLIB_MAJOR < 5
+       if (DGifCloseFile (gifFile) != GIF_OK) {
+-              PrintGifError ();
++              print_gif_error ();
++      }
++#else  /* GIFLIB_MAJOR < 5 */
++      if (DGifCloseFile (gifFile, NULL) != GIF_OK) {
++              gif_error ("Could not close GIF file", gifFile->Error);
+       }
++#endif /* GIFLIB_MAJOR < 5 */
+ 
+       return TRUE;
+ }
diff --git a/meta-gnome/recipes-support/tracker/tracker_0.14.2.bb 
b/meta-gnome/recipes-support/tracker/tracker_0.14.2.bb
index c52d95e..fa7fcd5 100644
--- a/meta-gnome/recipes-support/tracker/tracker_0.14.2.bb
+++ b/meta-gnome/recipes-support/tracker/tracker_0.14.2.bb
@@ -13,7 +13,8 @@ inherit autotools pkgconfig gnomebase gettext gsettings 
systemd gobject-introspe
 VER_DIR = "${@gnome_verdir("${PV}")}"
 SRC_URI = 
"http://ftp.gnome.org/pub/GNOME/sources/tracker/${VER_DIR}/tracker-${PV}.tar.xz 
\
            file://enable-sqlite-crosscompile.patch \
-          file://fix-removable-media-detection.patch \
+           file://fix-removable-media-detection.patch \
+           file://giflib5-support.patch \
            file://90tracker \
            file://tracker-store.service \
            file://tracker-miner-fs.service \
-- 
1.9.1

-- 
_______________________________________________
Openembedded-devel mailing list
[email protected]
http://lists.openembedded.org/mailman/listinfo/openembedded-devel

Reply via email to