2023-02-04 Mike Gabriel

        * Release 0.115 (HEAD -> main, tag: 0.115)
        * Merge branch 'fix_6' into 'main' (f12ed42)

2023-02-01 Sergey Chupligin

        * qml: Fixup QML import. Fixes #6 (11b7800)

2023-02-01 Guido Berhoerster

        * Merge branch 'personal/sunweaver/use-libexecdir' into 'main'
          (6abed00)

2023-02-01 Mike Gabriel

        * debian/mediascanner2.0.install: Adjust paths for files now
          installed into LIBEXECDIR. (952525f)
        * debian/<apparmor-profiles>: Adopt to LIBEXECDIR path change in
          previous commit. (759a772)
        * Place (helper) executables into LIBEXECDIR. (51da3cc)

2023-01-29 Mike Gabriel

        * Merge branch 'fix_5' into 'main' (0ea75b2)

2023-01-27 Sergey Chupligin

        * Fixup libexif headers path. Fix #5 (a255c3a)

2023-01-07 Florian Leeber

        * Merge branch 'main' into 'main' (cbc000d)

2023-01-07 Alexander

        * Fix bug causing looping on hidden files (f81495e)

2022-12-12 Marius Gripsgard

        * Merge branch 'personal/fredldotme/mediascanner+aa' into 'main'
          (9d17916)

2022-12-11 Alfred Neumayer

        * debian: Fix Halium >= 9.0 AppArmor rules (210aa01)

2022-12-02 Mike Gabriel

        * Merge branch 'personal/gberh/fix-startup' into 'main' (2d5cfd4)

2022-12-02 Guido Berhoerster

        * Start mediascanner as part of the graphical session (83dd45f)
        * Add changelog entry (00d2053)
        * Update packaging metadata (5015361)
        * Update to dh version 12 (2d2fa45)

2022-08-17 Ratchanan Srirattanamet

        * Merge branch 'systemd-migration' into 'main' (af0dd49)

2022-08-16 Guido Berhoerster

        * Remove obsolete upstart job and override file (7bbdf92)

2022-08-01 Marius Gripsgard

        * Merge branch 'ubports/focal_-_build' into 'main' (b4c6f8b)

2022-07-27 Ratchanan Srirattanamet

        * .gitignore: update schemantics compared to .bzrignore (a1bd288)

2022-07-26 Ratchanan Srirattanamet

        * daemon/Scanner.cc: remove additional logging (d4fcc66)
        * daemon/Scanner.cc: fix accidental `=` -> `==` (67daa7b)

2021-06-10 Rodney Dawes

        * Fix sizeof call to avoid crashing in tests sometimes. (fbc9eb8)

2021-06-08 Rodney Dawes

        * Migrate directory reading code to std::filesystetm to fix warnings.
          (94bf5d4)
        * Remove the Ubuntu namespacing of the QML module. (fbb6a5c)
        * Fix strftime format warning. (294da58)
        * Build with C++17 for std::filesystem::remove_all to fix build.
          (babbf3c)
        * Remove superfluous std::move to fix build. (98dc174)
        * Migrate bzrignore to gitignore (ffb7982)

2021-09-08 Florian Leeber

        * Maintainer: Move Jenkinsfile (ab93758)

2021-02-28 Alfred Neumayer

        * Update Jenkinsfile (70335d9)
        * apparmor: Allow media_codecs to be loaded from the vendor partition
          (8d0ff7a)

2020-10-08 Marius Gripsgard

        * General build and code cleanups (#4) (e877877)

2019-10-31 Marius Gripsgard

        * Merge pull request #3 from ubports/xenial_-_arm64 (70d315a)

2019-10-29 Marius Gripsgard

        * Fix property access with never libhybris patch (f0438b2)

2019-09-13 Brian Douglass

        * Fixes grouping albums by album artist rather than just album in the
          Music app (#1) (4107aa1)

2019-08-22 Florian Leeber

        * Merge pull request #2 from ubports/xenial_-_mediascanner-build
          (ebe41bf)

2019-08-21 Dalton Durst

        * Remove soversion 3 files (0afbdef)
        * Fix mediascanner tests (ceaa3dc)
        * Remove Bileto pre-release hook (acf6259)

2018-03-11 Marius Gripsgard

        * Also allow start if XDG_SESSION_DESKTOP is ubuntu-touch (e398ecc)

2018-01-12 Dan Chapman

        * Imported to UBports (6a24dce)

2017-03-22 Bileto Bot

        * Releasing 0.112+17.04.20170322-0ubuntu1 (867c4ab)

2017-03-22 Michael Terry

        * Only run mediascanner in unity8. (e940cae)

2017-03-21 Michael Terry

        * Only start mediascanner in unity8 (432ef7e)

2017-03-02 Bileto Bot

        * Releasing 0.112+17.04.20170302-0ubuntu1 (6bd7737)

2017-03-02 Pete Woods

        * Add SystemD session files (3018187)
        * Compatibility with unversioned cmake-extras modules (LP: #1563573)
          (c4511c6)
        * SystemD doesn't like the $SNAP part, also tell it about our dbus
          info (5f9552e)

2017-02-22 Pete Woods

        * Add SystemD session files (9548556)

2016-12-07 Pete Woods

        * Compatibility with unversioned cmake-extras modules (a71417b)

2016-12-01 Bileto Bot

        * Releasing 0.112+17.04.20161201-0ubuntu1 (498a33a)

2016-12-01 James Henstridge

        * Correctly detect embedded art in Vorbis files with TagLib 1.11.
          (b26c328)

2016-12-01 Michael Terry

        * Handle running inside of a snap by respecting the $SNAP variable.
          (LP: #1629009) (111c225)

2016-12-01 James Henstridge

        * Taglib 1.11 removes COVERART/METADATA_BLOCK_PICTURE from the fields
          list of XiphComment, so also check for a non-empty
          pictureList() when deciding whether a file contains a
          embedded art. (225ab61)
        * Add a test for detection of embedded art in vorbis files. (a360122)

2016-11-10 Michael Terry

        * Support $SNAP (6c1cc07)

2016-09-09 Bileto Bot

        * Releasing 0.112+16.10.20160909-0ubuntu1 (110904b)

2016-09-09 James Henstridge

        * Replace deprecated use of GetConnectionAppArmorSecurityContext
          method with GetConnectionCredentials. (LP: #1489489)
          (7441d62)
        * Disable optimisation when compiling dbus-codec.cc to avoid gcc 6
          compilation bug. (LP: #1621002) (197ce52)

2016-09-09 You-Sheng Yang

        * Update mediascanner-extractor apparmor profile to cover Android
          library locations on 64-bit systems. (f279d0a)

2016-09-09 James Henstridge

        * Add apparmor-easyprof hardware directories to package so AppArmor
          profile can compile when apparmor-easyprof-ubuntu isn't
          installed. (LP: #1443693) (05461e5)

2016-09-09 Bileto Bot

        * When multiple volumes are mounted in quick succession, scan them
          serially to avoid reentrancy problems in the initial scan.
          (LP: #1489656) (4a68ba3)

2016-09-09 James Henstridge

        * Switch over to GetConnectionCredentials(). (57e184a)
        * Ignore test results on powerpc. (bbbc550)

2016-09-08 James Henstridge

        * Disable optimisation when compiling dbus-codec.cc to avoid gcc 6
          bug. (9a04fb1)

2016-08-31 James Henstridge

        * Ensure the usr/share/apparmor/hardware/*.d directories that
          apparmor-easyprof-ubuntu usually exists are created when
          we're installed. (c2a31c1)
        * Ensure we send out an invalidate signal after processing all queued
          volumes. (ca4372b)
        * Increment package version number. (b43951b)
        * Add tests for VolumeManager. (dac0ad1)

2016-08-30 James Henstridge

        * More cleanup. (f6600b6)
        * Move the event out of the queue. (04880e9)
        * Actually manage a volume mount events as a queue. (d6bc2bf)
        * Switch public API to methods for queuing add/remove of volumes.
          Currently just adds/removes volumes synchronously.
          (c32b714)
        * Split volume management out from ScannerDaemon class into its own
          class. (e776880)
        * Move InvalidationSender to mediascanner namespace. (ef4a86e)

2016-08-23 You-Sheng Yang

        * add Android lib64 path for 64-bit architectures. (989fb9e)

2016-05-26 CI Train Bot

        * Releasing 0.111+16.10.20160526-0ubuntu1 (128c50e)

2016-05-26 Robert Bruce Park

        * Use new bileto_pre_release_hook. Approved by: Robert Bruce Park,
          James Henstridge (55d326b)

2016-05-26 Alex Tu

        * apparmor: extend read permissions to cover media_codecs*.xml to
          support Turbo. Approved by: Jim Hodapp, Alfonso
          Sanchez-Beato, James Henstridge (c722ef2)

2016-05-03 Alex Tu

        * extend the read permission to media_codecs*.xml (29ca208)

2016-03-21 Robert Bruce Park

        * Use new bileto_pre_release_hook. (cf56fc7)

2016-03-17 CI Train Bot

        * Releasing 0.111+16.04.20160317-0ubuntu1 (e3b4f8b)

2016-03-17 James Henstridge

        * If a file is unscannable, insert a fallback MediaFile into the
          index immediately, rather than relying on it being added
          by the broken_files logic on next startup. Approved by:
          Michi Henning (064ce2e)
        * Also catch runtime errors from extractor during initial scan.
          (e0256db)

2016-03-16 James Henstridge

        * Add a test to ensure SubtreeWatcher inserts fallback results
          promptly. (adac192)
        * Rather than using fixed sleeps, sleep until an invalidation signal
          is received. (9d235bd)
        * Update InvalidationSender so we can run it in a zero delay mode for
          testing. (e139707)
        * Insert fallback entries in index for unscannable files immediately.
          (d22eb38)

2016-02-25 CI Train Bot

        * Releasing 0.111+16.04.20160225-0ubuntu1 (60afc22)

2016-02-25 James Henstridge

        * Don't emit the InvalidateResults signal if a file was opened for
          writing and then closed, but not actually modified
          Fixes:
          #1542175 Approved by: Michi Henning (d3b4d65)
        * Favour the EXIF DateTimeOriginal tag over DateTime when extracting
          metadata from photos.
          Fixes: #1468585 Approved by: Michi
          Henning (6defd71)
        * Use taglib to extract metadata from Vorbis, Opus, Flac, MP3 and MP4
          audio files.  Other formats will fall back to the existing
          GStreamer code path.
          Fixes: #1536832 Approved by: Michi
          Henning (ecf7fd6)
        * Add an API for batching multiple MediaStore updates into a single
          transaction.  Use this new API during the initial
          directory scan during start up. Approved by: Michi Henning
          (665c333)

2016-02-24 James Henstridge

        * For FLAC files, set hasThumbnail to true if pictureList() is not
          empty. (c1eb258)
        * Protect against GValues holding NULL strings. (43b953c)
        * Add isValid() checks to taglib extractor code paths. (563c2c2)

2016-02-23 James Henstridge

        * Add a test that shows we pick the DateTimeOriginal date from
          krillin.jpg, where DateTime has been offset by an hour.
          (60ee97a)
        * Add a test image taken from a krillin, demonstrating date issues
          (image scaled down but EXIF metadata kept intact).
          (b71a332)
        * Update shlibs file for gcc5 builds. (8f7656e)
        * Prefer the DateTimeOriginal EXIF tag when processing dates of
          photos. (3574dca)
        * Update symbols file. (19d32c6)

2016-02-22 James Henstridge

        * Bump version number. (f84f0f7)
        * Expand test to show multiple transactions using a single
          MediaStoreTransaction object. (54f9925)
        * Batch updates in ScannerDaemon::readFiles() to the same rate we
          send out the invalidation notifications. (23a4837)
        * Add a helper class to manage data store transactions. (98c33c0)

2016-02-17 James Henstridge

        * Add a hacking file that notes the need to install the qt5-default
          package. (37d3872)

2016-02-16 James Henstridge

        * Add missing break statement. (648839e)
        * Add some file format specific tests to test_extractorbackend.cc
          (9b45f28)
        * Fix up date parsing for MP3 and MP4, to ensure we get the month and
          day. (ea3e229)

2016-02-12 James Henstridge

        * build-depend on libtag1-dev. (95de0a7)
        * Add a test to compre GStreamer and Taglib based extraction of a
          vorbis file. (c93dc59)

2016-02-11 James Henstridge

        * Add Taglib based extraction for Ogg, Flac, MP3, and MP4 files.
          (2ceb8fc)

2016-02-10 James Henstridge

        * Fix up test set up. (560bbab)

2016-02-09 James Henstridge

        * Add a test to show that the invalidation count signal is not
          emitted when a file is opened for writing but not actually
          changed. (c3c8e18)
        * Don't notify about changes when the file etag does not change.
          (786b4a7)

2016-02-05 James Henstridge

        * Move GStreamer extraction code out to a separate helper class.
          (b34b137)
        * Split EXIF image extraction code into helper class. (a6a3e42)

2015-12-16 CI Train Bot

        * Releasing 0.110+16.04.20151216-0ubuntu1 (af3c69d)

2015-12-16 James Henstridge

        * If the mediascanner index can not be opened, catch the exception in
          the QML plugin and act as if the database is empty.  A
          warning is printed via Qt's logging framework.  This
          prevents QML apps using mediascanner from terminating if
          there is a problem opening the media index.
          Fixes:
          #1514517 Approved by: Michi Henning, PS Jenkins bot
          (881b6d2)
        * Fix up handling of directory renames, so old contents is correctly
          removed from the index and inotify watches for
          subdirectories are cleaned up.
          Fixes: #1460411 Approved
          by: PS Jenkins bot (15db8b9)
        * Bump version number and update symbols file. (31155b9)
        * Also remove watches for subdirectories in removeDir(). (9f0cb8d)
        * Use a private bus connection in basic.cc test, and remove data on
          unmount. (ba1d5c6)
        * Add a method to remove all files in a particular subtree. (5b24f9c)

2015-12-15 James Henstridge

        * Add a test for the issue described in the bug report. (98d466b)
        * Disable some warnings for dbus-generated.c. (f9f6e4d)

2015-12-11 James Henstridge

        * Add tests for the missing database case. (390bc1b)

2015-12-10 James Henstridge

        * If mediascanner database is missing, allow MediaStoreWrapper
          construction to complete, but act as if the database is
          empty. (0baac7f)

2015-11-24 CI Train Bot

        * Releasing 0.109+16.04.20151124.1-0ubuntu1 (30aae2c)

2015-11-24 James Henstridge

        * Disable MountWatcher's callback during destruction so we don't call
          back into a partially destroyed class.
          Fixes: #1492393
          Approved by: PS Jenkins bot, Michi Henning (ff4907e)
        * If a folder contains an image file named
          {cover,album,albumart,.folder,folder}.{jpeg,jpg,png} use
          it as album art for songs in preference to online art if
          the songs do not have embedded art.
          Fixes: #1372000
          Approved by: PS Jenkins bot, Michi Henning (dae96dd)

2015-11-23 James Henstridge

        * Clear the MountWatcher callback in the destructor so we don't send
          out notifications during shutdown. (2da7f64)
        * Bump version number to account for API additions. (ee5f8d9)
        * Add folder artwork support to Album class. (0f11e83)
        * Add Album::getHasThumbnail() for use by dbus code, and make
          MediaStore pass in has_thumbnail to Album. (5882868)
        * Add new constructor for album, explicitly passing the has_thumbnail
          boolean. (1c7cbaa)

2015-11-20 James Henstridge

        * Remove unneeded #define. (d2bba85)
        * Add a test that will overflow the folder art cache. (e09f2c8)
        * Add back support for case insensitive matching. (87d180e)
        * Add tests for art precedence, and case insensitive cover art.
          (1582083)

2015-11-19 James Henstridge

        * Plug folder art cache into MediaFile::getArtUri(). (7013b15)
        * Add folder art cache class. (960dd47)

2015-11-10 James Henstridge

        * Merge Jussi's standalone-art-uri branch. (f9ebe60)

2015-11-09 CI Train Bot

        * Releasing 0.108+16.04.20151109-0ubuntu1 (df32473)

2015-11-09 James Henstridge

        * Move the metadata extractor to a separate process to isolate bugs
          in media codecs.
          Fixes: #1508142 Approved by: PS Jenkins
          bot (e5ab1f4)

2015-11-08 James Henstridge

        * Add code to crash the metadata extractor after a certain number of
          extractions so we can verify that it is correctly
          restarted. (c2a1fb5)

2015-11-07 James Henstridge

        * Delay starting the test bus daemon, and use private connections to
          the session bus to ensure we aren't reusing connections
          between test cases. (05d94d7)

2015-11-04 James Henstridge

        * Recreate the GDBusProxy when we get the no reply error: the old
          proxy will likely be bound to the old instance's unique
          name. (16d3664)

2015-11-03 James Henstridge

        * Add attach_disconnected flag to extractor's apparmor profile so it
          can access /dev/socket/property_service. (2266292)

2015-11-02 James Henstridge

        * Fix compile error. (87f87b9)
        * Merge from trunk (1b49993)

2015-11-02 CI Train Bot

        * Releasing 0.108+16.04.20151102-0ubuntu1 (4a85c35)

2015-11-02 James Henstridge

        * Fix the metadata extractor so that it correctly extracts the date
          and presence of cover art from MPEG 4 audio files.
          Fixes:
          #1492407 Approved by: PS Jenkins bot (4d586bf)
        * Remove the id column from media_attic so that we don't get
          conflicts when copying data between media and media_attic.

          Fixes: #1501990 Approved by: Michi Henning (9e7f44a)
        * Update packaging to rename qtdeclarative5-ubuntu-mediascanner0.1
          package to qml-module-*, and fix a few other problems
          pointed out by Lintian.
          Fixes: #1342031 Approved by: Michi
          Henning, PS Jenkins bot (5939ac9)
        * Make the new qml-module-ubuntu-mediascanner0.1 package
          break/replace old versions of the equivalent
          qtdeclarative5-... module. (2869975)

2015-10-23 James Henstridge

        * Update change log. (f711e1c)

2015-10-22 James Henstridge

        * Move daemon back to /usr/bin so the AppArmor profile is correctly
          applied again.  We can't easily change the AppArmor
          profile name because it is encoded into the easyprof
          profiles of other apps :( (b59df7c)
        * Fix up QML tests to pass again. (e1e2ccc)
        * Move playlist blacklisting code to the right location. (a10948f)
        * Update D-Bus API to handle extra fields on DetectedFile and
          MediaFile. (cbeae46)
        * Merge from trunk (7d662a1)

2015-10-09 James Henstridge

        * Remove debug printfs. (430d41d)

2015-10-08 James Henstridge

        * Regenerate control file. (2991213)
        * Move the mediascanner-service-2.0 executable out of /usr/bin, since
          it is not intended to be executed directly. (cad6948)
        * Don't depend on qt5-default to avoid build-depends-on-metapackage
          Lintian warning: instead set QT_SELECT environment
          variable. (754caab)
        * Update standards version. (92a2929)
        * Add short license name (public-domain) for Mozilla FTS code.
          (7657250)
        * Rename QML plugin package to qml-module-* and add transitional
          package for upgrades. (dfdb8fb)
        * Tell cmake not to add a soname to the QML plugin. (1705d78)

2015-10-07 James Henstridge

        * Add test for mpeg4/m4a metadata extraction, and fix extraction
          logic to handle its cover art (exposed as
          GST_TAG_PREVIEW_IMAGE rather than GST_TAG_IMAGE) and the
          date (exposed as GST_TAG_DATE rather than
          GST_TAG_DATE_TIME). (12f3873)
        * Add a test MPEG4 audio file with cover art. (4650db6)
        * Remove the id column from media_attic so that we don't get
          conflicts when copying data between media and media_attic.
          (f658078)

2015-09-22 CI Train Bot

        * Releasing 0.107+15.10.20150922.1-0ubuntu1 (851a5c1)

2015-09-22 James Henstridge

        * Use a single source tree to build the wily and vivid packages,
          picking an appropriate soversion for each. (802f921)
        * Fix typo. (17ad7c3)
        * Add lsb-release to build-depends. (219d7c6)

2015-09-21 James Henstridge

        * Actually edit the right version of control.in (105ba89)
        * Revert libdbus-cpp-dev dependency to the version available in
          vivid: we don't rely on 5.0 at an API level. (d54e5ff)
        * Copy symbols file .so.3 symbols file from vivid branch. (fcf27a1)
        * Bump package version numbrer to 0.107. (98485b6)
        * Adapt the vivid/wily single-tree build infrastructure from
          unity-scopes-api. (a9a9f86)

2015-09-17 CI Train Bot

        * Releasing 0.106+15.10.20150917-0ubuntu1 (36e374d)

2015-09-17 James Henstridge

        * Add a hasMedia() method to MediaStore, which returns true if there
          is any media of the given type. Approved by: Pawel
          Stolowski (37d4cf4)
        * Record the modification time of files in the media index, and allow
          sorting results of query() and queryAlbums() by
          modification time. Approved by: Pawel Stolowski (d2e21ae)
        * Merge from track-mtime (b828afc)
        * Fix up symbols file for abi tags. (cf30e48)
        * Merge from track-mtime (c7fa85c)
        * Merge from trunk (28b5ef0)

2015-09-17 Matthias Klose

        * Update symbols file for GCC 5.;  Tighten build dependency on
          libdbus-cpp-dev. (3a36951)

2015-08-07 James Henstridge

        * Merge from track-mtime (2b4f009)
        * Merge from lp:mediascanner2 (dcf5ed6)

2015-07-21 CI Train Bot

        * Releasing 0.105+15.10.20150721-0ubuntu1 (428e08b)

2015-07-21 James Henstridge

        * Remove the hard dependency on g++-4.9.
          Fixes: #1452332 Approved by:
          Pawel Stolowski (de3d62d)

2015-07-17 James Henstridge

        * Remove hard dependency on g++-4.9 (67d7a0c)

2015-07-14 James Henstridge

        * One of the pkg_check_modules() invocations was stomping on the
          MEDIASCANNER_VERSION variable.  Change the variable prefix
          to avoid the conflict. (7d1970d)
        * Rename haveMedia to hasMedia. (87c0a09)

2015-07-13 James Henstridge

        * Update symbols. (777f952)
        * Add haveMedia() method to MediaStore. (e78fa65)
        * Update version in pkg-config file. (fc0153f)

2015-07-07 James Henstridge

        * Update Debian changelog. (23cae4b)
        * Update test to use same type as rest of code. (bcbd707)
        * Add new symbols and sort. (58f62ac)
        * Expose modification time in QML wrapper. (a7b7c73)
        * Allow sorting queryAlbums() results by modification date (e620e4e)
        * Allow sorting query() results by modification date. (1fdadd8)
        * Update D-Bus code to pass through mtime. (2d82499)
        * Make extractor record modification time. (d22d81d)

2015-06-30 James Henstridge

        * Update media store schema: (f003741)
        * Add modification time to MediaFile class. (14ab3df)
        * Use the cmake-extras version of the coverage report helpers.
          (6161537)

2015-06-04 CI Train Bot

        * Releasing 0.105+15.10.20150604-0ubuntu1 (fee6bd5)

2015-06-04 James Henstridge

        * Treat invalid dates in MP3s as missing metadata.
          Fixes: #1436110
          Approved by: Michi Henning (9fb76f2)
        * More cleanups. (a8af275)

2015-06-03 James Henstridge

        * Update test to actually check what it claims to, and work now that
          we've got more test audio files. (b109904)
        * Move QML plugin directory so that it isn't shadowed by the
          installed version. (9f7f109)
        * Ignore date tag if it is NULL (as happens for MP3 files with
          invalid dates). (a634460)
        * Add tests for bad dates in Ogg and MP3 files. (9b2f316)

2015-01-28 CI Train Bot

        * Releasing 0.105+15.04.20150128-0ubuntu1 (5b5f3bf)

2015-01-28 Jussi Pakkanen

        * Revert use of WAL log and instead try to rerun queries that fail
          with SQLITE_BUSY.
          Fixes: #1415318 Approved by: Pete Woods,
          PS Jenkins bot (1685430)
        * Retry busy queries only a maximum amount of times. (410d427)
        * Revert use of WAL log and retry failing queries instead. (5233cce)

2015-01-27 CI Train Bot

        * Releasing 0.105+15.04.20150127-0ubuntu1 (6a878f9)

2015-01-27 Jussi Pakkanen

        * Send invalidations signals during scans that take a long time so
          the dash gets updated.
          Fixes: #1414566 Approved by: PS
          Jenkins bot, Marcus Tomlinson (9c33c87)
        * Use wal mode for the journal as it seems to work when there are
          multiple connections to the db. (bb21e62)

2015-01-26 Jussi Pakkanen

        * Use only seconds as requested by review. (146537b)
        * Putting comparison operators the right way is surprisingly hard.
          (b0e329b)
        * Tweak invalidation timeout. (36750dd)
        * Drain events while scanning so timeouts are processed. (6ba4b4f)
        * Send invalidation signals during long lasting scans. (94b9f17)

2015-01-22 CI Train Bot

        * Releasing 0.105+15.04.20150122-0ubuntu1 (8edc34f)

2015-01-22 Jussi Pakkanen

        * Skip scanning of special directories if they point to user home
          dir.
          Fixes: #285998 Approved by: James Henstridge, PS
          Jenkins bot (db6307c)
        * Add blacklist functionality and use it to block music playlists.

          Fixes: #1384295 Approved by: James Henstridge, PS Jenkins
          bot (15398f7)
        * Merged trunk. (aa09dd5)

2015-01-21 CI Train Bot

        * Releasing 0.105+15.04.20150121-0ubuntu1 (b36b398)

2015-01-21 Jussi Pakkanen

        * Make Valgrind uninitialised jump warning go away. Approved by:
          James Henstridge, PS Jenkins bot (bb8acc7)
        * Extract metadata from images that don't have exif entries.
          Fixes:
          #1378880 Approved by: Charles Kerr, James Henstridge, PS
          Jenkins bot (20963b4)

2015-01-20 Jussi Pakkanen

        * Whitespace fix to restart Jenkins. (c97c5bf)

2015-01-06 James Henstridge

        * Still start and stop the daemon manually, since it doesn't close
          cleanly. (f4ee7e3)

2015-01-05 James Henstridge

        * Switch test_qml over to GIO's dbus test fixture, since it correctly
          shuts down the private bus more reliably than dbus-cpp.
          (bc4c281)

2014-12-12 Jussi Pakkanen

        * Added test for standalone art. (017136a)

2014-12-12 James Henstridge

        * Fix ExtractorBackendTest::init test to actually call the
          constructor, rather than define a function prototype.
          (52536ad)

2014-12-12 Jussi Pakkanen

        * Detect standalone album art when building art uris. (f5d1b5d)

2014-12-12 James Henstridge

        * Update copyright statements on a few more files. (612aeb3)
        * Add copyright headers. (1ea923f)
        * Cleanups as per Jussi's review. (dfa5da2)
        * If we get no reply from the extraction daemon, retry the job once.
          The daemon most likely crashed due to a codec error, but
          the current file might not be the one to blame. (95bee5e)
        * The @{multiarch} part in the policy wasn't correctly attaching to
          extractor, so just use a simple glob.  There is enough
          context in the rest of the path to be a reliable match.
          (3c595c9)
        * Add AppArmor profile for mediascanner-extractor, and remove some of
          the GStreamer related rules for mediascanner-service.
          (c8987cb)

2014-12-11 James Henstridge

        * Include mediascanner-extractor in the mediascanner2.0 package.
          (3cda86b)
        * No need to include "-2.0" in executable name, since it is installed
          to a version dependent directory. (d760efb)
        * Don't link mediascanner-service-2.0 to GStreamer of libexif. Fix a
          crasher bug in the error case of
          MetadataExtractor::extract(). (17db744)
        * Remove dead code from ExtractorBackend. (d2269d2)
        * Add tests that run directly against the extractor backend rather
          than through D-Bus to make debugging easier. (535a1dc)
        * Add a service file for the extractor service, and update the basic
          and test_metadata tests to spin up a private session bus
          to talk to the extractor. (5bbb03f)
        * Split MetadataExtractor backend code into a ExtractorBackend class,
          and make MetadataExtractor proxy the D-Bus service.
          (dd46c20)
        * Move extractor source to src/extractor. (9dcd72a)
        * Skeleton of extractor daemon. (443d555)

2014-10-30 CI bot

        * Releasing 0.105+15.04.20141030.1-0ubuntu1 (1fa4551)

2014-10-30 James Henstridge

        * When a new directory is added and a new inotify watch is set up,
          call fileAdded() on any regular files already in the
          directory so they are not missed.
          Fixes: 1379817, 1387103
          Approved by: Jussi Pakkanen, PS Jenkins bot (272e654)
        * Add a fix to check the sqlite version at runtime to check for
          versions containing the tokenizer regression. (527f846)

2014-10-24 James Henstridge

        * Add a test for the new file+directory case. (cf067ba)

2014-10-23 James Henstridge

        * When a directory is added, call fileAdded() on regular files when
          checking its initial contents, so no files get missed in
          the time between the directory being created and the
          inotify watch being added. (b1e6b72)

2014-10-23 Jussi Pakkanen

        * Skip scanning of special dirs if they point to user home. (575995f)

2014-10-22 Jussi Pakkanen

        * Create blacklist functionality and use it to block audio playlists.
          (5beb056)
        * Use localtime instead of gmtime. (07ed064)

2014-10-10 Jussi Pakkanen

        * Use get_file_info which is a lot more efficient. (f0fda63)

2014-10-09 Jussi Pakkanen

        * Made test work regardless of what the timestamp on the test file
          is. (afc781d)
        * Removed vestigial gfile thingy. (2a6cce5)
        * Extract metadata from images that do not have exif entries (such as
          pngs). (353e966)

2014-10-01 CI bot

        * Releasing 0.105+14.10.20141001-0ubuntu1 (a5a702e)

2014-10-01 James Henstridge

        * Use udisksd to track mounts and unmounts of removable media.
          Fixes:
          1358750 Approved by: Jussi Pakkanen, PS Jenkins bot
          (172eb85)
        * Further narrow the dbus rules to the specific methods. (f708f19)
        * Narrow down the D-Bus apparmor profile rules. (864e58b)

2014-09-30 James Henstridge

        * Merge from trunk, fixing conflicts. (b27cbcd)

2014-09-27 James Henstridge

        * Remove some unneeded #includes. (e50b0fe)

2014-09-26 Jussi Pakkanen

        * Valgrind silencing. (6211c84)

2014-09-26 James Henstridge

        * Ignore mount events outside of /media: on the phone, the root file
          system is erroneously marked as removable. (a8e8605)
        * Remove using directive. (88d9ade)
        * Update AppArmor profile to let us talk to udisksd. (e45733b)
        * Rip out the mountfd code in the scanner daemon and use MountWatcher
          instead. (f838690)
        * Add code to monitor mounts of removable media via udisks2.  Not
          currently integrated into the daemon. (922d8b4)

2014-09-25 CI bot

        * Releasing 0.105+14.10.20140925.1-0ubuntu1 (7e936df)

2014-09-25 Jussi Pakkanen

        * Use fallback data for crasher files so they at least show up in
          scope queries. Approved by: James Henstridge, PS Jenkins
          bot (4b06f9c)
        * Print banner when starting the daemon so upstart logs are easier to
          parse. Approved by: James Henstridge, PS Jenkins bot
          (4c33406)
        * No need to set title on fallback case, it is done automatically.
          (1ccfe23)

2014-09-24 Jussi Pakkanen

        * In case of crasher files, write fallback data so at least something
          shows up. (e76b200)

2014-09-16 Jussi Pakkanen

        * Print banner when starting daemon. (fd67797)

2014-09-09 CI bot

        * Releasing 0.105+14.10.20140909-0ubuntu1 (7e388d4)

2014-09-09 Jussi Pakkanen

        * Print a log message when skipping a broken file. Approved by: James
          Henstridge, PS Jenkins bot (5edeab0)

2014-09-09 Jamie Strandboge

        * debian/usr.bin.mediascanner-service-2.0: - add video abstraction -
          silence access to /run/udev/data/** like we do elsewhere -
          allow read on /dev/video* - allow read on
          /sys/devices/**/video4linux/**/uevent Approved by: Jussi
          Pakkanen, PS Jenkins bot (47a2cf6)

2014-09-05 Jussi Pakkanen

        * More logging. (f2f7627)

2014-09-04 Jamie Strandboge

        * updates for various denials: - add video abstraction - silence
          access to /run/udev/data/** like we do elsewhere - allow
          read on /dev/video* - allow read on
          /sys/devices/**/video4linux/**/uevent (6eb9b31)

2014-09-03 CI bot

        * Releasing 0.105+14.10.20140903-0ubuntu1 (065de6d)
        * Replaced 0replaceme with real versions. (45c32f0)

2014-09-03 James Henstridge

        * Expose embedded album art for Album objects too.  Bump soname to
          account for Album class changing size. Approved by: PS
          Jenkins bot (129c2d2)

2014-09-03 Jussi Pakkanen

        * Fix usage of blocking cache. Approved by: James Henstridge, PS
          Jenkins bot (59742bd)

2014-09-03 James Henstridge

        * Record whether files include embedded artwork in the index, and use
          this to generate artwork URIs that will invoke the
          appropriate image provider (thumbnailer if there is
          embedded art, albumart otherwise). Approved by: Jussi
          Pakkanen, PS Jenkins bot (93eaa51)
        * Fix up D-bus marshalling of Album objects, which was breaking the
          qml_dbus tests. (43f7ad7)

2014-09-02 James Henstridge

        * Ensure that other album attributes are exposed in albums model.
          (04152d6)
        * Update symbols. (1b0787c)
        * Move the logic for building Album's art URI out of MediaStore and
          into Album.  Also expose the album's genre. (ba55152)

2014-09-01 James Henstridge

        * Update symbols. (6bc4a03)
        * Bump library soname, since we've changed the size of Album.
          (997b894)
        * Expose date through QML album model. (de6a24c)
        * Add date and art_uri to Album. (41de067)
        * Add move constructor/assignment to Filter. (d7adc3d)
        * Add a first() aggregate that returns the first result for a group.
          Use this to pick an arbitrary date, filename and
          has_thumbnail value for albums (not actually stored yet).
          (1366628)

2014-08-31 James Henstridge

        * And make sure we don't leak the private struct on assignment.
          (e3a886b)
        * Fix up copy constructors for Album, and add move
          constructors/assignment operators for both Album and
          MediaFile. (362bcfc)
        * Move Album fields to a private struct. (d27c98a)

2014-08-29 James Henstridge

        * Bump package version number. (0995053)
        * Update symbols. (5f8bdae)
        * Use art URIs from the core library in the QML plugin. (4d6bb85)
        * Add getArtUri() method to MediaFile and Album. (0aeae17)

2014-08-28 James Henstridge

        * Merge lp:~jpakkane/mediascanner2/thumbnailinfo fixing conflicts
          (868a4f5)

2014-08-25 Jussi Pakkanen

        * A (1db64e6)
        * Fix usage of dirblock cache. (ee23b0a)

2014-08-25 CI bot

        * Releasing 0.104+14.10.20140825-0ubuntu1 (d1f14ab)
        * Replaced 0replaceme with real versions. (ba46178)

2014-08-25 Jamie Strandboge

        * allow read access to /etc/udev/udev.conf for gstreamer (LP:
          #1356883)
          Fixes: 1356883 Approved by: James Henstridge, PS
          Jenkins bot (8010982)

2014-08-25 James Henstridge

        * Update AppArmor policy to allow read access to
          /sys/devices/**/video4linux/video**
          Fixes: 1353139
          Approved by: Jussi Pakkanen, PS Jenkins bot (2725b77)

2014-08-25 Jussi Pakkanen

        * Add database integrity constraints. Approved by: James Henstridge,
          PS Jenkins bot (4c18b7d)
        * Don't call closedir with a null argument. Approved by: James
          Henstridge, PS Jenkins bot (920675e)
        * Store information on files that break GStreamer and skip them when
          encountered. Approved by: James Henstridge, PS Jenkins bot
          (bb34021)
        * Fix inotify usage. Approved by: James Henstridge, PS Jenkins bot
          (1cf897b)

2014-08-25 James Henstridge

        * Add support for custom sort orders to query(), queryArtists() and
          queryAlbums().  This involves an API break, so the soname
          has been changed. Approved by: Jussi Pakkanen, PS Jenkins
          bot (30e3b78)

2014-08-25 Jussi Pakkanen

        * Detect whether a media file has an embedded thumbnail. (3c3f8e1)
        * Add field that tells whether the file has an embedded thumbnail
          image. (5535d46)
        * Test constraints. (2f2e584)
        * Return if encountering a bad file. (634bd4c)

2014-08-22 Jamie Strandboge

        * Author: Jamie Strandboge <jamie@canonical.com> Description: allow
          read access to /etc/udev/udev.conf for gstreamer Bug:
          https://launchpad.net/bugs/1356883 (2effede)

2014-08-22 Jussi Pakkanen

        * Add data integrity constraints to database. (8d81817)

2014-08-22 James Henstridge

        * Set the library version from the toplevel CMakeLists file.
          (c870825)

2014-08-22 Jussi Pakkanen

        * Symbol fix. (5824495)
        * Store etag info in broken files so they are no longer blocked once
          they get updated. (1f19856)

2014-08-22 James Henstridge

        * Update changelog. (aa1cb5a)
        * Allow read access to video4linux sysfs files to fix AppArmor
          problems on Manta. (0a54187)
        * Add sort order tests for queryAlbums and queryArtists. (e6ecbbd)
        * Add sort order tests for query(). (4a72def)
        * Update symbols. (59d0719)
        * Bump soname. (4dbb8e2)
        * Add sorting code to queryAlbums() and queryArtists(). (7fcbf90)
        * Handle ordering in query(). (8f73fb2)

2014-08-21 James Henstridge

        * Fix up methods that were bypassing the database mutex. (d2a59c4)
        * Update signature of query(), queryAlbums() and queryArtists()
          methods. (1e8a703)

2014-08-19 CI bot

        * Releasing 0.103+14.10.20140819-0ubuntu1 (8c95929)

2014-08-19 Jussi Pakkanen

        * Apparmor fix from jdstrand.
          Fixes: 1357348 Approved by: Pete Woods,
          PS Jenkins bot (201b426)
        * Check for null. (d406d41)
        * Fix symbols file. (8b86fa5)

2014-08-18 Jussi Pakkanen

        * Store and skip broken files when scanning. (3885790)
        * Added functionality to maintain a list of files that break
          GStreamer metadata scanner. (96a8249)
        * Fix inotify usage. (519880c)

2014-08-15 Jussi Pakkanen

        * Apparmor fix from jdstrand. (df4b7af)

2014-08-15 CI bot

        * Releasing 0.103+14.10.20140815.1-0ubuntu1 (5e24cd1)

2014-08-15 Jussi Pakkanen

        * Merge lp:~xnox/mediascanner2/missing-dev-depends,
          lp:~jamesh/mediascanner2/model-auto-update,
          lp:~jpakkane/mediascanner2/libc++ and
          lp:~jpakkane/mediascanner2/premountwatcher Approved by:
          Jussi Pakkanen, PS Jenkins bot (b6074ea)

2014-08-15 James Henstridge

        * Add back the filled signal since music-app started using it.  We
          can remove it when they update. (490e0e0)
        * Update change log. (5679f8d)

2014-08-15 Jussi Pakkanen

        * Handle the case when /media/username does not exist when
          Mediascanner first starts up. (399fc72)
        * Minor fixes for libc++. (2eb64eb)

2014-08-15 James Henstridge

        * Automatically update models when the daemon sends the
          InvalidateResults D-Bus signal. Add a status property to
          models to let loading progress be tracked. Rename rowCount
          property to count, keeping the old name around for
          compatibility. (f49b5f9)

2014-08-15 Dimitri John Ledkov

        * Add missing dependencies to libmediascanner-2.0-dev package.
          (58218f9)

2014-08-14 Jussi Pakkanen

        * Make GSource's unique_ptr always destroy it fully. (bbd9671)
        * Fixed issues raised by James. (648ca48)

2014-08-13 Jussi Pakkanen

        * Print log message when /media/username does not exist on startup.
          (6c2e5f6)

2014-08-12 Jussi Pakkanen

        * The Columbo fix. (b449e53)
        * Handle the case where /media/username does not exist on startup.
          (a9d2be6)

2014-08-12 James Henstridge

        * Rename method and member based on Jussi's review. (d0eea79)

2014-08-11 Jussi Pakkanen

        * A few fixes for libc++. (db32a92)

2014-08-07 James Henstridge

        * s/rowCount/count/ in the QML tests. (3c3ff5c)
        * Make sure AdditionEvent::error is initialised. (aa4a72e)
        * Update qmltypes. (1cc7135)
        * No need to hold onto exception pointer in event. (8b73ef7)
        * Expose error state through the model "status" property. (7b3d5e2)
        * Replace the StreamingModel::filled signal with a status property
          with a corresponding statusChanged notification signal,
          similar to Image.  This should allow hooking up progress
          UI. (a9aedb5)
        * Merge from trunk (4b82feb)
        * Hook the MediaStoreWrapper::updated signal to the
          StreamingModel::invalidate slot when setting the
          associated store so that updates are propagated to the
          models. (e8526f8)
        * Simplify the D-Bus signal connection code, and have the bus filter
          the signals we receive by argument. (e8b6de1)
        * Add an updated() signal to MediaStoreWrapper, emitted when
          mediascanner-service sends out the ResultsInvalidated
          signal. (a37d96d)

2014-08-06 James Henstridge

        * Have mediascanner-service register a name on the session bus
          (different to what mediascanner-dbus uses), and send the
          D-Bus signals directly. (9b238b0)

2014-08-05 CI bot

        * Releasing 0.102+14.10.20140805-0ubuntu1 (9e1de26)

2014-08-05 James Henstridge

        * Fix off by one error when appending new rows to QML models.
          Fixes:
          1350529 Approved by: Pete Woods, PS Jenkins bot (d0126b3)
        * Fix off-by-one error when signaling which rows have been inserted
          in the model.  The third argument to beginInsertRows() is
          the index of the last row being inserted, rather than the
          index after. (ed21a3a)

2014-08-01 Dimitri John Ledkov

        * Add missing dependencies to libmediascanner-2.0-dev package.
          (3162184)

2014-07-30 CI bot

        * Releasing 0.102+14.10.20140730.1-0ubuntu1 (1b6cefa)
        * Replaced 0replaceme with real versions. (876d24e)

2014-07-30 Jussi Pakkanen

        * Merge all approved pending branches. Approved by: PS Jenkins bot
          (8b46a24)

2014-07-30 James Henstridge

        * Bump soname. (14a8440)

2014-07-25 James Henstridge

        * Update changelog. (c1f60d3)

2014-07-25 Jussi Pakkanen

        * Archive items on unmount. (cfee73b)
        * Archive items on external drives when they are unmounted. (9003f2c)

2014-07-25 James Henstridge

        * Update version number in CMakeLists.txt (f794828)
        * Update changelog. (2989cf8)
        * Add MediaStore::queryArtists() method, needed for the new scope
          design. (9ccf45f)

2014-07-25 Jussi Pakkanen

        * Install Filter.hh. (0072534)
        * Fixes for various issues found by flint++. (163752a)

2014-07-25 James Henstridge

        * Stream data to the QML models in chunks through a background thread
          using QtConcurrent. (8be1733)

2014-07-25 Jamie Strandboge

        * Update to in archive version (0.101+14.10.20140627-0ubuntu2).
          (6247894)

2014-07-25 Jussi Pakkanen

        * Added an autopkgtest. (fe45b37)

2014-07-25 James Henstridge

        * Fix up symbols for queryArtists() method. (ce96b58)
        * Install Filter.hh. (b440801)
        * Add queryArtists to D-Bus interface. (6578690)
        * Add queryArtists() method. (0528e01)

2014-07-24 James Henstridge

        * Merge lp:~jamesh/mediascanner2/streaming-model (1bcea83)

2014-07-24 CI bot

        * Releasing 0.101+14.10.20140724.1-0ubuntu1 (96a3e78)
        * Adjust apparmor configuration for MTK device (2dbd32e)

2014-07-24 Alfonso Sanchez-Beato

        * Adjust apparmor configuration for MTK device (3c9ef0f)

2014-07-23 Jussi Pakkanen

        * Install Filter.hh. (8e7a674)

2014-07-21 CI bot

        * Releasing 0.101+14.10.20140721-0ubuntu1 (5b25b1c)

2014-07-21 Jussi Pakkanen

        * Specify GCC 4.9 explicitly to prevent ABI breakage. Approved by:
          James Henstridge (2aaee52)
        * Bump dbus-cpp dependency. (0175a43)

2014-07-17 James Henstridge

        * More review fixes from Jussi. (d50885d)
        * Update based on review comments. (bcf619f)

2014-07-16 Timo Jyrinki

        * Releasing 0.101+14.10.20140715 (8c85ef2)

2014-07-16 Jussi Pakkanen

        * Various fixes for flint++ issues. (f6e03d0)
        * Always include class header first in the corresponding
          implementation file. (1ca584c)
        * Use nullptr consistently. (d4126d3)

2014-07-15 CI bot

        * Releasing 0.101+14.10.20140715-0ubuntu1 (8bed854)
        * Rebuild project du to changes in the dbus-cpp abi. Approved by:
          Jussi Pakkanen (92e8058)

2014-07-10 James Henstridge

        * Update symbols. (dd7c198)
        * Fix songsearchmodel test. (24bab92)
        * Short circuit the concurrent thread when there is no store.
          (4d59147)
        * Update qmltypes. (5126ec0)
        * Port SongsModel and SongsSearchModel to StreamingModel. (0532763)
        * Port AlbumsModel to Streaming code. (58fdd7e)
        * Port Artists model over to streaming model. (c19b3a6)
        * Port GenresModel over to StreamingModel base class. (3454a6a)

2014-07-07 James Henstridge

        * Use the limit/offset options in the filter object rather than using
          a separate argument. (5e836ce)

2014-07-04 James Henstridge

        * Add limit and offset to mediascanner::Filter, and update D-Bus
          codec to handle it. (1cc7c41)

2014-07-02 CI bot

        * Releasing 0.101+14.10.20140702-0ubuntu1 (14b9b63)

2014-07-02 James Henstridge

        * Update the FTS tokenizer to work with SQLite 3.8.5, and reenable
          the MediaStoreTest.query_short test.  Bump libsqlite3-dev
          build dependency to 3.8.5 too. (4795814)

2014-07-01 James Henstridge

        * Bump libsqlite version requirements. (c5d7016)
        * Fix FTS tokenizer to work with new SQLite. (117633a)

2014-07-01 Ricardo Salveti de Araujo

        * releasing package mediascanner2 version
          0.101+14.10.20140627-0ubuntu3 (e752065)
        * apparmor: add missing proc file used by the mediatek soc (f6f2012)
        * releasing package mediascanner2 version
          0.101+14.10.20140627-0ubuntu2 (4a5d43b)

2014-06-27 Jamie Strandboge

        * debian/usr.bin.mediascanner-service-2.0: couple more minor
          updates for   (mostly) noisy denials   - use consoles
          abstraction instead of just the pts interface since we
          need     /dev/tty when crashing   - finetune orcexec rules
          by allowing 'm' in /tmp but explicitly deny the     others
            - allow non-owner read of @{PROC}/cmdline   - use
          attach_disconnected for /dev/socket/property_service
          (c3e16b8)

2014-06-27 CI bot

        * Releasing 0.101+14.10.20140627-0ubuntu1 (feed45c)
        * Disable short query test to work around a behavioral change in
          SQLite.;  debian/usr.bin.mediascanner-service-2.0: updates
          for libhybris based on   work by Ricardo Salveti. (LP:
          #1334940) (31c8b85)

2014-06-27 Jamie Strandboge

        * merge lp:~jpakkane/mediascanner2/sqliteworkaround then update
          changelog to use UNRELEASED (00bc22f)

2014-06-27 Jussi Pakkanen

        * Changelog update. (40f263c)
        * Apparmor fix from jdstrand. (36c73f7)
        * Disable short query test temporarily due to sqlite issue. (6a3020a)
        * Back to no :native. (445de47)
        * Update packaging to keep supporting cross-compilation. (e1231fc)

2014-06-26 Jussi Pakkanen

        * Explicitly select GCC 4.9 to avoid ABI transition issues. (0bb5c15)

2014-06-25 CI bot

        * Releasing 0.101+14.10.20140625-0ubuntu1 (13b1c36)
        * Update symbols (dad9ed7)
        *  * add AppArmor profile (LP: #1319065)    - add
          debian/usr.bin.mediascanner-service-2.0    -
          debian/control: Build-Depends on dh-apparmor    -
          debian/rules: update override_dh_installdeb to use
          dh_apparmor    - debian/mediascanner2.0.dirs: add
          etc/apparmor.d    - debian/mediascanner2.0.install:
          install profile in to place
          Fixes: 1319065 (b2f0f6a)

2014-06-25 Jamie Strandboge

        *  * add AppArmor profile (LP: #1319065)    - add
          debian/usr.bin.mediascanner-service-2.0    -
          debian/control: Build-Depends on dh-apparmor    -
          debian/rules: update override_dh_installdeb to use
          dh_apparmor    - debian/mediascanner2.0.dirs: add
          etc/apparmor.d    - debian/mediascanner2.0.install:
          install profile in to place
          Fixes: 1319065 (f6569ad)

2014-06-25 James Henstridge

        * Enable the QML plugin to pick between two MediaStore backends: the
          direct disk backend and the D-Bus interface.  The choice
          is made via the MEDIASCANNER_USE_DBUS environment
          variable, and defaults to direct access. (c3e163c)

2014-06-24 Jamie Strandboge

        *  * add AppArmor profile (LP: #1319065)    - add
          debian/usr.bin.mediascanner-service-2.0    -
          debian/control: Build-Depends on dh-apparmor    -
          debian/rules: update override_dh_installdeb to use
          dh_apparmor    - debian/mediascanner2.0.dirs: add
          etc/apparmor.d    - debian/mediascanner2.0.install:
          install profile in to place (abec60c)

2014-06-24 James Henstridge

        * Address Jussi's review comments. (4125637)
        * Change environment variable name. (be5587f)
        * Update symbols file. (a831d7f)
        * Pick which MediaStore implementation to use based on an environment
          variable.  Also run the QML tests twice: once for each
          backend. (f284ce3)
        * Add an abstract base class shared by mediascanner::MediaStore and
          mediascanner::dbus::ServiceStub. (c6e4a4f)

2014-06-13 Jussi Pakkanen

        * Documentation fix. (42a29e8)
        * Build a media file, too. (33997fc)
        * Added an autopkgtest. (c306ec8)

2014-06-13 CI bot

        * Releasing 0.101+14.10.20140613-0ubuntu1 (f0a71fd)
        * Update symbols (1517850)

2014-06-13 James Henstridge

        * Add support for scanning photos using libexif.  Adds libexif-dev as
          new build dependency.
          Fixes: 1256334 (799acfa)
        * Catch exceptions in the QML plugin, and print a warning instead.
          QML applications terminate when C++ exceptions bubble up,
          which can not be recovered from.
          Fixes: 1326753 (e6a801d)
        * Increase the timeout on D-Bus method calls.
          Fixes: 1326753
          (4374051)
        * Fix typo in the symbols file. (aafc784)

2014-06-11 James Henstridge

        * Add new symbols, and sort/uniq the list. (eef7f05)
        * Merge lp:~jpakkane/mediascanner2/symbols (c21657d)
        * Fix up misuse of logging API in AlbumsModel. (2ec024f)
        * Longitude and latitude should be doubles. (630cb37)
        * Fix up EXIF date extraction routine based on review from Jussi.
          (d7907d4)
        * Make sure the stream info list gets freed. (75852ec)

2014-06-10 James Henstridge

        * Increase the timeout for dbus-cpp method calls. (ba899da)
        * Protect MediaStore calls with try/catch blocks, since QML code will
          terminate if the exception bubbles up. (2707a01)

2014-06-07 James Henstridge

        * Expose new metadata via QML API too. (0e652f4)
        * Expose ImageMedia constant to QML. (60f03f8)
        * Adjust the indexes so they are used for the list*() methods.
          (6ffc1a9)
        * Also scan the pictures directory. (6ce28d6)
        * Include new metadata fields in D-Bus API. (630334f)

2014-06-06 James Henstridge

        * Update MediaStore tests to include round trip testing of image
          metadata. (fe997c1)
        * Add support for additional metadata fields to media store.
          (05d0f5c)
        * Build-depend on libexif-dev. (99a038f)
        * Remove imagetest, since the code has been incorporated into
          MetadataExtractor. (0e9638f)
        * Include tests for extracting metadata from photos. (d3394cd)
        * Add some test images.  They have been shrunk to keep size down, but
          EXIF data has been left untouched. (5c9c256)
        * Add EXIF parsing code to MetadataExtractor, and also extract height
          and width from videos. (3515f56)
        * Add height, width, latitude and longitude fields to MediaFile.
          (20d0a98)

2014-06-05 James Henstridge

        * Fix up handling of GPS coordinates and width/height. (58be0fd)

2014-06-05 Jussi Pakkanen

        * Added symbol files and removed one unused old test binary that no
          longer linked. (ae32fd8)

2014-06-05 James Henstridge

        * Use libjpeg to read the file size. (9076b12)
        * Merge from lp:~jpakkane/mediascanner2/imagetest (c407ef4)

2014-05-30 CI bot

        * Releasing 0.101+14.10.20140530-0ubuntu1 (5a7d212)

2014-05-30 James Henstridge

        * Merge lp:~jpakkane/mediascanner2/nomedia,
          lp:~jamesh/mediascanner2/mediafile-constructor,
          lp:~jpakkane/mediascanner2/clangfixes,
          lp:~jpakkane/mediascanner2/nullguard,
          lp:~jpakkane/mediascanner2/projectname,
          lp:~jpakkane/mediascanner2/pruneblocked,
          lp:~jamesh/mediascanner2/dbus-transport,
          lp:~jamesh/mediascanner2/dbus-apparmor,
          lp:~jamesh/mediascanner2/media-filter (0937a45)
        * Fix typo in service name. (96fb3ef)

2014-05-29 James Henstridge

        * Use full libdir. (e56aedc)
        * Fix D-Bus name in service file. (f0bfb7a)
        * Update changelog for lp:~jamesh/mediascanner2/media-filter
          (96d29e1)
        * Introduce a mediascanner::Filter type to hold search parameters for
          the various MediaStore::list*() methods, and expand them
          to handle genres. The new API also distinguishes between
          an unset filter and a filter set to "". Make similar
          changes to the QML API, and add notify signals to the
          rowCount properties. (71fe545)
        * Update Debian change log for merged branches. (be0e2d8)
        * Limit access to the MediaScanner D-Bus interface from confined
          processes. (b9634d8)

2014-05-29 Jussi Pakkanen

        * Prune those files that have a scan block file on their path when
          restoring. (b889be5)
        * Apply paper bag to head. (28a988c)

2014-05-29 James Henstridge

        * Add a D-Bus service exposing the MediaStore, and move the QML
          binding over to using it. (eb9d1a3)

2014-05-29 Jussi Pakkanen

        * Fix CMake Project name. (2768b18)
        * Guard against empty MediaFileBuilders. (cea946e)
        * Fix a few warnings emitted by clang. (fed1b76)

2014-05-29 James Henstridge

        * Get rid of the direct constructor for MediaFile, forcing creation
          to go through MediaFileBuilder (which won't break when we
          add more metadata fields). (8d38753)

2014-05-29 Jussi Pakkanen

        * Add support for .nomedia files to prevent chosen subtrees from
          being scanned. (4f1e3e4)

2014-05-29 James Henstridge

        * Merge ~jamesh/mediascanner2/dbus-apparmor (8095bca)
        * If apparmor is not enabled, treat d-bus peers as unconfined.
          (4c69f5f)
        * Add notify signal for rowCount properties. (19e9fbf)
        * Add genres model. (34f2f0a)
        * Test genre property on albums and songs models. (18ed420)
        * Actually reference plugin.qmltypes in qmldir (3fdff26)
        * Add genre property to other models and update QML types. (335d387)

2014-05-28 James Henstridge

        * Add genre property to ArtistsModel. (6520fb2)
        * Distinguish between unset and empty string filters. (06343b9)
        * Use mediascanner::Filter in the D-Bus API and QML plugin. (c9601c8)
        * Include a timeout on the QML test. (dd04236)
        * Convert listing methods over to using mediascanner::Filter.
          (57589a4)
        * Add support for serialising/deserialising mediascanner::Filter with
          dbus-cpp. (9d98b26)

2014-05-27 James Henstridge

        * Add MediaFilter class. (e76b0a1)
        * Limit access to the D-Bus interface from confined applications.
          (9281ca4)

2014-05-24 James Henstridge

        * Remove some excess debug logging. (fa269f0)

2014-05-23 James Henstridge

        * Add a comment explaining why the helper D-Bus library is linked
          with -fPIC. (1639db4)
        * Build-Depend on libproperties-cpp-dev. (0e2e85d)
        * Build-Depend on libdbus-1-dev. (c7113eb)
        * Depend on libdbus-cpp-dev (for dbus service) and dbus (for tests).
          (e51cc6e)
        * Install dbus service along with activation config file. (af89063)
        * Make QML tests run against D-Bus service. (2197059)

2014-05-22 James Henstridge

        * Make the QML binding access the media store over D-Bus. (66a8667)
        * Compile dbus code into a static library so it can be used by the
          QML binding. (bfaa4f5)
        * Add stub class for D-Bus interface. (8c73715)

2014-05-21 James Henstridge

        * Fill out rest of MediaStore API. (bff4a23)

2014-05-20 James Henstridge

        * Start of MediaScanner d-bus interface. (9eb73a0)

2014-05-16 Jussi Pakkanen

        * Fixed CMake project name. (049c9e2)

2014-05-15 Jussi Pakkanen

        * Grab basic data. (7b6318a)
        * Simple image metadata extractiont tool. (3ba0d85)
        * Guard against empty MediaFileBuilders. (230f3c9)

2014-05-15 James Henstridge

        * Remove comment about multiple calls to MediaFileBuilder::set*()
          methods raising an exception. (374665c)

2014-05-14 Jussi Pakkanen

        * Fix clang warnings in third party file. (79fe343)
        * Fixed forward declaration of DetectedFile. (03b589c)
        * Merged trunk. (0bc3ee7)

2014-05-14 James Henstridge

        * Get rid of unneeded build() call. (54a128a)
        * Move fallback title and album_artist code to MediaFile construction
          time: this is safe because the properties can't be changed
          after construction. (5f17ef8)
        * Add a simple move constructor for creating a MediaFile from a
          MediaFileBuilder. (aed4ea6)
        * Add equality operation to MediaFilePrivate. (6f41529)
        * Add missing destructor to MediaFileBuilder. (293b52f)

2014-05-12 James Henstridge

        * Get rid of long constructor on MediaFile. (19c97fa)
        * Switch qml test suite over to MediaFileBuilder. (91bca8b)
        * Switch MediaStore over to using MediaFileBuilder. (1538284)
        * Allow chaining of MediaFileBuilder methods, and convert
          test_mediastore tests over. (604bc00)
        * Make MediaFileBuilder using MediaFilePrivate too, simplifying
          construction of MediaFile instances. (39fe19b)
        * Move MediaFile fields to a private struct. (22a645a)

2014-05-09 Jussi Pakkanen

        * Cache scanblock info. (3be9a0e)
        * Check scan blocks on restore. Also unify the two util files.
          (b0a44d4)

2014-05-08 CI bot

        * Releasing 0.100+14.10.20140508-0ubuntu1 (8717791)

2014-05-08 James Henstridge

        * Add genre and discNumber metadata fields to the media index, and
          expose it in the QML binding. (8563f05)

2014-05-08 Jussi Pakkanen

        * Use generator for file traversal instead of a vector. (ec38265)
        * Don't scan optical discs. (62794fe)

2014-05-08 James Henstridge

        * Update qmltypes. (53eda2d)

2014-05-06 James Henstridge

        * Test that the get() method works. (f5cf2aa)
        * Add get() methods to models. (824d75f)

2014-05-06 Jussi Pakkanen

        * Added support for a .nomedia file which tells mediascanner not to
          scan specified directories. (2d6a492)

2014-05-06 James Henstridge

        * Expose row counts of models to QML. (d55f5b1)
        * Expose genre and discNumber through QML interface. (b3cf5a1)
        * Extract genre and disc number from media. (ca0b487)
        * Store genre and disc_number in index. (2a6b390)
        * Add genre and disc_number properties to MediaFile. (74f3265)

2014-05-05 Jussi Pakkanen

        * Moved generator's functionality inside scanner. (490a8b8)

2014-05-02 Jussi Pakkanen

        * Removed useless if. (6bf1d68)
        * Allocate directory entry only once. (fb619d9)
        * Added test for is_optical. (6555644)

2014-04-28 Jussi Pakkanen

        * Store some more state to make it really work this time. (0d061b0)
        * Use unique ptr. (713c10a)
        * Use the generator for traversal. (96565ef)
        * Create a generator for file traversal. (07202ea)

2014-04-09 Jussi Pakkanen

        * Skip top level mounts that look like optical discs. (1ee715a)

2014-04-03 CI bot

        * Releasing 0.100+14.04.20140403-0ubuntu1 (be2ebbf)

2014-04-03 James Henstridge

        * Before using GStreamer to extract metadata from a file, print a log
          message.  This is intended to help track problems with
          metadata extraction. (c458a08)

2014-04-03 Jussi Pakkanen

        * The output value of stat is undefined when the stat call fails. So
          don't use it. (500940b)

2014-04-03 James Henstridge

        * Remove the Unity scope found in src/utils: it looks like it has
          suffered from bit rot and has never been used (we have
          unity-scope-mediascanner instead). (c11920f)

2014-04-03 Jussi Pakkanen

        * Avoid assert crash by not trying to unregister subvolumes that were
          skipped due to looking like root subdirs.
          Fixes: 1294193
          (03ef0eb)

2014-04-03 James Henstridge

        * Add a full stop to the end of the log message. (140511a)

2014-04-02 James Henstridge

        * Before using GStreamer to extract metadata from a file, print a log
          message.  This is intended to help track problems with
          metadata extraction. (d628c55)

2014-04-01 Jussi Pakkanen

        * And a newline. (fafe06a)
        * When stat fails, the result struct is not populated so do not use
          it. (e811b8a)

2014-03-28 James Henstridge

        * Remove unused (and seemingly bitrotten) test program. (03e866f)
        * Remove the (unused) demo scope: it uses the old scopes API, and is
          incomplete compared to the scope provided by
          unity-scope-mediascanner. (6e99ebd)

2014-03-24 CI bot

        * Releasing 0.100+14.04.20140324-0ubuntu1 (a0332e3)

2014-03-24 James Henstridge

        * Expose an "art" role/property on album and song models, returning a
          URI that can be used with a QML Image component.  The
          actual image provider comes from ubuntu-ui-toolkit.
          (505591f)
        * Update plugin.qmltypes. (93b72aa)
        * Add album art URI roles to MediaFile and Album models. (25bd5c0)

2014-03-21 Jussi Pakkanen

        * Avoid assert crash and improve logging. (d15419f)

2014-03-14 CI bot

        * Releasing 0.100+14.04.20140314-0ubuntu1 (ea1d9d4)

2014-03-14 Jussi Pakkanen

        * Delay signal handling initialisation. (58f1a4e)
        * Skip subdirectories that look like root directories. (f102357)
        * Keep going if inotify watch creation fails. (6547bd9)
        * Initialise signal handling later. (6d410d1)

2014-03-12 Jussi Pakkanen

        * Let us not forget Windows drives. (554ea6c)
        * Added test for rootlike skipping. (53b7fc9)

2014-03-11 Jussi Pakkanen

        * Skip subdirectories that look like top level root directories.
          (9af8f57)

2014-03-10 Jussi Pakkanen

        * Keep going if watch creation fails. (0ebc6ba)

2014-03-10 CI bot

        * Releasing 0.100+14.04.20140310-0ubuntu1 (3df9df7)
        * No change rebuild against Qt 5.2.1. (fa34b53)

2014-03-07 CI bot

        * Releasing 0.100+14.04.20140307.1-0ubuntu1 (51a39a2)

2014-03-07 Michal Hruby

        * Fix incorrect depends (54311c3)

2014-03-07 James Henstridge

        * Merge  lp:~jamesh/mediascanner2/qml-plugin,
          lp:~jamesh/mediascanner2/short-searches,
          lp:~jpakkane/mediascanner2/errmsg,
          lp:~jpakkane/mediascanner2/cleanshutdown,
          lp:~jpakkane/mediascanner2/threadness and
          lp:~jamesh/mediascanner2/glib-main-loop (42313c4)

2014-03-07 Michal Hruby

        * Fix incorrect depends (7e67d1a)

2014-03-07 James Henstridge

        * Update change log to cover merged branches. (7448a22)
        * Convert the scanner daemon over to using the glib main loop rather
          than a hand rolled one, and limit invalidation signals to
          be sent at most once a second. (ddac597)

2014-03-07 Jussi Pakkanen

        * Made SQLite db safe to access from multiple threads. (0d5d884)
        * Shutdown cleanly on signals. (70e4e49)
        * Add sqlite error string to exception. (8014f3a)

2014-03-07 James Henstridge

        * Relax the rules for tokenising the input when it ends with a short
          token followed '*' wildcard. This allows us to produce
          results for short strings when doing incremental searches.
          (9860b5d)
        * First stages of a QML plugin for the Media Scanner. At present it
          only exposes the query() and lookup() interfaces.
          (fd72714)

2014-03-06 James Henstridge

        * Update comment to match new logic. (ae448e0)
        * Don't free the GError if it is NULL. (7d9ca52)
        * Make InvalidationSender send dbus signals from a timeout callback,
          to batch multiple invalidations that occur within a short
          time frame. (ce82808)

2014-03-05 James Henstridge

        * Merge lp:~jpakkane/mediascanner2/cleanshutdown and convert shutdown
          changes over to using g_unix_signal_add(). (5f6c0b2)
        * Remove SubtreeWatcher::pumpEvents() (1ab6af0)
        * Switch ScannerDaemon::run() over to running the glib mainloop, and
          switch mountfd over to a main loop source too. (1564e2e)
        * Fix cast calls. (6d2ac93)
        * Make SubtreeWatcher register a glib mainloop source on
          construction, and give it direct access to the
          InvalidationSender object. (6e02b72)
        * Rather than each subtree watcher running select() again, make
          ScannerDaemon::run() check the FD set before asking each
          watcher to process events. (0da8383)

2014-03-03 Jussi Pakkanen

        * A few cleanups. (7a81bdd)
        * A few leak fixes uncovered by Valgrind. (a74d1b9)

2014-02-28 James Henstridge

        * Add artists model. (830932b)
        * Add support for listing artists. (08913c7)

2014-02-27 James Henstridge

        * Add a test for the MediaStore QML methods. (3deff24)
        * Update plugin.qmltypes (fff5463)
        * Add album list model. (94a2b49)
        * Add songs listing model. (970cc57)
        * Add listSongs() API to MediaStore. (fdbfba9)

2014-02-26 James Henstridge

        * Merge from trunk (40c8408)
        * Build depend on qtdeclarative5-test-plugin. (ac517be)
        * Run tests under minimal platform module. (756e182)

2014-02-25 James Henstridge

        * Add base class for album models. (14b21f3)
        * Add test harness for QML tests. (4a21808)

2014-02-24 Jussi Pakkanen

        * Do not throw in destructor. (cb8b0b5)
        * Made sqlite database queries thread safe. (4fbde47)
        * Shutdown cleanly when signals happen. (556ab46)
        * Add sqlite error string to exception description. (4432d2c)

2014-02-24 James Henstridge

        * Only output short tokens of at least one character long. (037b6e4)
        * Add a test for short queries. (389a3f7)
        * The only case where Mozilla was making use of wildcard searches was
          to match single character CJK queries, where they were
          expanded to "x*" to match bigrams starting with that
          character.  Hence the check that the token was at the
          start of the string and contained a single character
          encoded in UTF-8 as three or more bytes. (c365380)

2014-02-20 CI bot

        * Releasing 0.99+14.04.20140220-0ubuntu1 (4037e61)

2014-02-20 Jussi Pakkanen

        * Send invalidation signal once the db is fully populated. (21bbeee)
        * Nil merge to get on the release train. (2ecee7a)

2014-02-20 James Henstridge

        * Add an abstract list model for searching for songs. (753d9b6)

2014-02-19 Jussi Pakkanen

        * Set invalidation once data is read from disk. (8a5e715)
        * Removed empty grilo subdirectory. (5b12188)
        * Fix path where media cache is stored. (37001ec)
        * Use lstat to avoid loops. (8106658)

2014-02-19 James Henstridge

        * Move plugin classes to a namespace. (35ce37b)

2014-02-18 Jussi Pakkanen

        * Use lstat so we do not get into eternal loops. (9929a91)
        * Renamed storage path. (8870aaa)

2014-02-17 Jussi Pakkanen

        * Added const qualifiers to methods and made album immutable just
          like mediafile. (ace7e0c)
        * Merged trunk. (21972ee)

2014-02-17 James Henstridge

        * Add a limit argument to MediaStore::queryAlbums(), and ensure that
          it returns some results when given an empty query string.
          (e3159b6)
        * Merge from trunk (cf6bc42)

2014-02-12 James Henstridge

        * Ensure that queryAlbums() returns some results for empty queries.
          (8c0fcd0)
        * Ensure that blank queries for albums returns some results.
          (457759e)
        * Add a limit argument to the queryAlbums() method. (a855470)

2014-02-05 CI bot

        * Releasing 0.99+14.04.20140205-0ubuntu1 (1b8983d)
        * Null merge to get changes through CITrain (cb5219c)

2014-01-31 Jussi Pakkanen

        * Merged trunk. (f068aaa)
        * Simpler header reorg. (3fa7cdf)

2014-01-31 James Henstridge

        * Update to match new namespacing. (022b3c4)
        * Merge from trunk (264e610)

2014-01-31 Jussi Pakkanen

        * Add a mediascanner namespace. (b4125f4)

2014-01-30 James Henstridge

        * Add a limit argument to MediaStore::query(), and ensure that it
          produces some results in response to an empty query.
          (845708a)

2014-01-30 Jussi Pakkanen

        * Constify and immutabilize. (5e4e0de)

2014-01-30 James Henstridge

        * Produce some results in response to an empty query, and add tests
          for this case and the limit clause. (2f9fa42)
        * Add a limit argument to the query() method. (e306a7d)

2014-01-29 Jussi Pakkanen

        * Moved non-installed headers to internal subdirectory. (80dbde6)
        * Install MediaFileBuilder's header file. (e1290e1)

2014-01-22 Jussi Pakkanen

        * Simple class for sending result set invalidation messages.
          (37c5d16)

2014-01-20 Jussi Pakkanen

        * Grabbed invalidation code from old branch. (9d4d790)

2014-01-17 Automatic PS uploader

        * Releasing 0.99+14.04.20140117-0ubuntu1 (revision 197 from
          lp:mediascanner2). (5ddf5a1)
        * Releasing 0.99+14.04.20140117-0ubuntu1, based on r197 (2463413)

2014-01-16 James Henstridge

        * Add LGPL headers to QML plugin code. (c683253)
        * Merge from trunk (057b716)
        * Fix the licensing on the public library so that it is correctly
          labelled as LGPL, like the old mediascanner code base.
          (5efef37)

2014-01-16 Jussi Pakkanen

        * Moved class documentation to its proper place. (6597d4a)
        * Added namespace. (e48ad53)

2014-01-15 James Henstridge

        * Fix a few issues that prevent the scanner daemon from running when
          stdin is redirected to /dev/null. (5845dc0)
        * Remove the "Press enter to quit" feature, since it fails if stdin
          is hooked up to /dev/null. (0e020b0)
        * Don't use getlogin() to determine current user, since it fails when
          stdin is redirected. (b747421)
        * The contents of src/mediascanner (the public interface) really
          should be LGPL, like the library it is replacing.
          (6ce863d)

2014-01-10 Automatic PS uploader

        * Releasing 0.99+14.04.20140110-0ubuntu1 (revision 194 from
          lp:mediascanner2). (27726f5)
        * Releasing 0.99+14.04.20140110-0ubuntu1, based on r194 (271222d)

2014-01-10 Łukasz 'sil2100' Zemczak

        * We no longer ship any LGPL sources. Also, fix packaging naming in
          some places - along with Vcs-* (ce4d2a1)
        * Binary name of mediascanner2.0 is ok, but a source package
          shouldn't include a major and minor version - this changes
          far too rapidly. So, maybe rename it to mediascanner2
          instead?. (cc45c59)
        * Binary name of mediascanner2.0 is ok, but a source package
          shouldn't include a major and minor version - this changes
          far too rapidly. So, maybe rename it to mediascanner2
          instead? (8e24e0e)

2014-01-02 James Henstridge

        * Include the generated plugin.qmltypes file under source control,
          and add a "make update-qmltypes" command to update it.
          (0e4d944)
        * Build-depend on QtQuick, since qmlplugindump seems to need it.
          (1a3d1e9)
        * Rearrange source tree to match QML import paths so we can generate
          the plugins.qmltypes file. (a4012d0)
        * Merge from trunk. (0d2596d)

2013-12-29 Łukasz 'sil2100' Zemczak

        * Add bzr-builddeb and the bootstrapping commit for daily-build.
          (4d215e7)

2013-12-20 Łukasz 'sil2100' Zemczak

        * Add bzr-builddeb and the bootstrapping commit for daily-build
          (942488c)

2013-12-18 James Henstridge

        * Adjust packaging to allow parallel installation, and add Upstart
          session job. (aae6154)
        * Add Upstart session job, parallel installable with old media
          scanner. (fb30c57)
        * Name the actual scanner service similar to the original one, with a
          version suffix appended. (199bbf7)
        * Rename source and binary packages so they don't conflict with old
          media scanner. (9cc7474)
        * Add remaining MediaFile properties to QML wrapper. (07ec732)
        * Explicitly set ownership of MediaFileWrapper objects. (451e5b5)

2013-12-17 James Henstridge

        * Version the QML plugin package and installation dir. (0502985)
        * Correctly namespace the QML file. (a6a307b)
        * Depend on qtdeclarative5-dev too. (397e1e3)
        * Update packaging to cover QML plugin, and set plugin version to
          0.1. (4a2b4d3)

2013-12-16 James Henstridge

        * Expose a bit more through the MediaFile wrapper, and expose media
          type through MediaStore.query(). (46d7a52)

2013-12-15 James Henstridge

        * Add qmldir file, and update wrapper constructors. (7b2c29b)

2013-12-14 James Henstridge

        * Use automoc for mediascanner-qml target. (4ae1d9b)

2013-12-13 James Henstridge

        * Split out into separate files. (8896575)
        * Skeleton QML wrapper for MediaStore class. (0898b18)

2013-12-03 James Henstridge

        * In SubtreeWatcher, ignore inotify events for watches we are no
          longer interested in. (e69a696)
        * Run the test suite in series, and always include the test output in
          the build log. (e36368e)
        * Ignore inotify events directed at unknown watches.  This can happen
          when there are queued events for watches we've since
          removed. (23661b2)

2013-12-02 Jussi Pakkanen

        * Made MediaFile immutable. (6a0df57)
        * Fixed initialisation order. (d8d58c4)
        * Use initialisers in a constructor. (ce1f2be)
        * Make MediaFileBuilder take the filename in a constructor because
          that is mandatory. (1ced6b7)
        * Return of getUri. (b160c65)

2013-12-01 Jussi Pakkanen

        * Use EXPECT_TRUE/FALSE instead of EXPECT_EQ(true/false, ...).
          (8b13f3b)

2013-11-29 Jussi Pakkanen

        * Use EXPECT_TRUE/FALSE. (c4c42fe)
        * Removed unnecessary includes. (f4ab443)

2013-11-28 Jussi Pakkanen

        * Capitalisation fix. (443551c)
        * Update tests. (3ab9e33)
        * Merged trunk. (d1eb1cb)

2013-11-28 James Henstridge

        * Store the etag of files in the MediaStore so the scanner can detect
          whether it is necessary to redo the metadata extraction on
          files on start up. (5a291dc)

2013-11-28 Jussi Pakkanen

        * Made MediaFiles immutable. (5003765)
        * Finish MFBuilder. (5f651a9)
        * Some setter functions. More to come. (e64a8ac)
        * Started creating an mfbuilder class. (b2aaa1e)

2013-11-28 James Henstridge

        * Add a test for the skipping of changed metadata.  This really needs
          access to some scannerdaemon.cc methods to be more robust.
          (1f85ad3)
        * Add a MediaStore.lookup() method to look up metadata by a file
          name. (8a61978)
        * Have MetadataExtractor.detect() return a DetectedFile struct, and
          have MetadataExtractor.extract() convert that to a
          MediaFile. (2fdbbea)

2013-11-27 James Henstridge

        * Rather than opening files for read access in
          MediaScanner.pruneDeleted(), just check if the file exists
          with access(). (f8dde9e)
        * Only perform metadata extraction if the file has changed. (8d89f26)

2013-11-26 James Henstridge

        * Add a MediaStore.getETag() routine to get the stored etag for a
          file name, if it exists. (fa66f08)
        * Make MetadataExtractor.extract() annotate a MediaFile rather than
          create a new one. (b60ca09)
        * Delete the media_fts table in the upgrade logic. (3854001)
        * Convert Scanner.scanFiles() to use MetadataExtractor.detect()
          instead of FileTypeDetector. (6ce0d8c)

2013-11-25 James Henstridge

        * Remove some includes of FileTypeDetector.hh in tests. (b146269)
        * Rename MetadataExtractor.stat() to detect(), and make it use the
          fast content type. (65062f1)
        * Move GFile logic into MetadataExtractor so we can record the
          content type and etag.  Expose this as a separate entry
          point so that we can extract this data without continuing
          on to the expensive metadata extraction. (34eee75)
        * Store content type and etag in MediaStore. (a568be9)
        * Add content_type and etag members to MediaFile (21eba0d)

2013-11-23 James Henstridge

        * Add a constructor for MediaStore that opens the default database.
          This removes the need for users of the client locate the
          library themselves. (9c906dc)

2013-11-22 James Henstridge

        * Update the query test program to open the default database.  The
          MEDIASCANNER_CACHE environment variable can be used to
          point it at different databases. (1a0bd82)
        * Make the scanner daemon open the default database, and look up the
          user's music and videos directories using the XDG user
          dirs spec for better i18n support. (989a7fa)
        * Add a second constructor that opens the default database. (40d2dc1)

2013-11-21 James Henstridge

        * Add a ranking function based on the one in the SQLite documentation
          (http://sqlite.org/fts3.html#appendix_a), and use it to
          rank the results of MediaStore.query(). (5f7fc24)
        * Add a test to show that the ranking is being applied and weights
          matches in the various fields correctly. (0031b19)

2013-11-20 James Henstridge

        * Add tests to show that searches by artist or album name work.
          (cff6b64)
        * Introduce a ranking function and use it for query(). (b04679b)

2013-11-18 Jussi Pakkanen

        * Pass test defines through a header file rather than command line
          arguments. (d8d8102)

2013-11-18 James Henstridge

        * Add a method to get a URI for a MediaFile instance. (6143040)

2013-11-15 James Henstridge

        * Ignore files created by package build. (623877c)
        * Update copyright file. (6f71c0e)
        * pc file is in binary dir. (bc34faf)

2013-11-14 James Henstridge

        * Add pkg-config file for mediascanner. (f7ba5e0)
        * Add test video files from old media scanner code base. (db1afc0)
        * Move metadata extractor tests into a separate file. (4589de4)
        * Move test data to test/media/ (884d260)

2013-11-13 James Henstridge

        * Separate out MediaStore related tests into a separate test program
          that doesn't link with the scanner daemon code. (489838a)
        * Use preprocessor defines to pass source/build dir to test rather
          than environment variables.  This lets us easily run the
          tests directly. (53f5245)
        * Convert tokenizer registration over to using Statement helper
          class. (3633feb)
        * Add license text to branch. (bb3dab8)
        * Remove unnecessary includes. (2034ad4)
        * Push LDFLAGS to the various libraries rather than repeating them
          for each executable. (a979229)
        * Fix up packaging to include dev package. (c4998ad)

2013-11-12 James Henstridge

        * Add README for sqlite tokenizer from Mozilla tree. (6d3e492)
        * install daemon to CMAKE_INSTALL_BINDIR (c393b23)
        * Move utils. (2dacba7)
        * Move files related to actual scanning to src/daemon, so
          src/mediascanner only deals with metadata storage and
          retrieval: scanning and extraction is the responsibility
          of the daemon. (7bdd70b)
        * Move daemon to src/daemon/ (0b5db2d)
        * Move the media scanner library code to a separate directory to try
          and separate out what represents the public API. (ee00a56)

2013-11-11 James Henstridge

        * Add tests for album query interface. (8feb5a6)

2013-11-08 James Henstridge

        * Add MediaStore methods to search albums. (0fe1a46)

2013-11-07 James Henstridge

        * CMake fixes suggested by Jussi. (f4a16e6)
        * Round trip additional music metadata. (49b2d73)
        * More updates. (2f94efb)
        * Port insert() over to bound parameters. (5e359b6)
        * Convert query() and pruneDeleted() over to using bound parameters.
          (78eca83)
        * Convert some queries over to using helper class. (a03dc95)
        * Add small helper class to help run sqlite statements with bound
          parameters. (e07a0bd)

2013-11-06 Jussi Pakkanen

        * Some .bzrignore. (b15cbc3)
        * Check system exit value. (7e536bc)
        * Something2. (3eaccf9)
        * Something. (6d12dec)
        * A few polishing fixes. (5f76d88)
        * Test extractor in isolation. (440b0b9)
        * Test detector. (30e49e7)
        * Cleanupping. (3d39247)
        * For great destruction. (84e530b)
        * Subtreewatcher pimpl. (f51a571)
        * Test that subdirectory deletion is properly detected. (606bc45)
        * Quote test. (8552cdc)
        * Add util test. And also an off-by-one fix. (510d473)
        * Merged changes. (c1f85ca)
        * Use gtest. (5100fa4)

2013-11-06 James Henstridge

        * Extract date and track number via GStreamer.  Not yet stored in
          database. (72ec25b)

2013-11-06 Jussi Pakkanen

        * A dep fix. (0fb212b)

2013-11-05 Jussi Pakkanen

        * Packaging now works. (e5b89df)
        * Some basic packaging. (b73b737)
        * Use own assert that works even when NDEBUG is defined. (fb2977b)

2013-11-04 Jussi Pakkanen

        * Removed unused mediaroot table remains. (d2b23fd)
        * Store schema version id in the database to prevent apps from using
          old data by accident. (b8ec8e7)
        * Build uris correctly. Again. (fd7df1f)
        * Gave MetadataExctractor its own private struct. (3b93448)

2013-11-04 James Henstridge

        * Merge in MetadataExtractor changes from last week that didn't get
          pushed correctly. (3df6fc8)

2013-11-01 Jussi Pakkanen

        * Use std::string searcher rather than strncmp. (d7940c0)

2013-10-31 Jussi Pakkanen

        * A few more finals. (8fbd118)
        * Vestigial stuff removal. (ad3269d)
        * Test metadataextractor. (2390c9b)
        * More hidden file ignoring. (db3bd00)
        * Made classes final. (60966b0)
        * Build gstreamer URIs correctly. (07612f8)
        * Made metadata extractor a class. (c3a5936)
        * Only traverse subtrees once. (6bcbbf5)

2013-10-31 James Henstridge

        * Share the GstDiscoverer between metadata extractions. (8e801a6)

2013-10-31 Jussi Pakkanen

        * Some cleanups. (d8e6c02)

2013-10-31 James Henstridge

        * Use GIO to query the content type to determine file type rather
          than working on a small set of file extensions. (1be0cba)
        * Don't bail if the /media/$user directory doesn't exist.  This means
          mount monitoring won't work, but it allows the home
          directory to be scanned. (404a339)

2013-10-30 Jussi Pakkanen

        * Use enum instead of boolean. (8d33f2f)
        * Can open db as read only. (8659e2f)
        * Added mounting test. (1b9a9c2)
        * Remnant removing. (591daed)
        * More work on single table. (01d975e)
        * Experiment to use media attic for files that get unmounted.
          (d42525a)
        * Store more info in exception message. (f7957cb)
        * Throw actual exceptions. (1d2aa06)

2013-10-29 Jussi Pakkanen

        * Tests pass again. (c768548)
        * More work on single media table. (537b251)
        * Started work on moving to a single table. (e790a40)

2013-10-28 Jussi Pakkanen

        * Cleanup. (c191332)
        * Test that query round trips work. (4d31f56)
        * Comparison and tests. (14ef3fd)
        * External db fix. (08e4913)
        * Moved search inside MediaStore. (2bf9c3d)
        * Added coverage support. (083e4b2)

2013-10-25 Jussi Pakkanen

        * Check that files removed and added during downtime are processed.
          (44d7a5f)
        * Test that subdir tracking works. (46601a1)
        * Initialize and check that added files are really added. (a6be80c)
        * Cleanup. (381773c)
        * A basic indexing test. (8ecaeb1)
        * Delete from videos too. (392266f)
        * Trigger fix. (7c81e10)
        * Created test audio file. (c69069a)
        * Test subtreewatcher initialisation too. (028e320)
        * Added a test. (582c252)
        * Moved files into src subdirectory. (f999f97)

2013-10-25 James Henstridge

        * Import the tokenizer used by Mozilla's Gloda search index.
          (d95c747)

2013-10-24 Jussi Pakkanen

        * Can query stuff. (0ec2f87)
        * Write generated data to db. (705bc1c)
        * Create scalability tester app. (dd8d981)
        * Use reference instead of pointer. (b50537e)

2013-10-23 Jussi Pakkanen

        * Some unique_ptr lovin. (ab825ee)
        * Do video queries too. (c99ade3)
        * Through the wonders of SQL magic you can now do queries again.
          (7e39b01)
        * Put duration to backing store. (0089cc5)
        * Reworked backing store. (8ff61af)

2013-10-23 James Henstridge

        * Convert getMetadata() over to using GstDiscoverer. (41ab823)

2013-10-23 Jussi Pakkanen

        * Let's noexcept love. (ad2c2f5)
        * Do not store duration yet. Need to figure out table details.
          (3d6c439)
        * Determine duration of files. (a10214d)

2013-10-22 Jussi Pakkanen

        * Watch for changes in backend files. (5354e5c)
        * Store db files in .cache. (7eb3aa0)
        * Mount dir fixing. (ef54191)

2013-10-21 Jussi Pakkanen

        * Palm of face. (4bba8bd)
        * Use unique_ptrs. (6e2da35)
        * Close inotify fd. (9169028)

2013-10-18 Jussi Pakkanen

        * Query mounted volumes too, if they exist. (3faacee)
        * Query multiple directories. (337e5d6)
        * Use readdir_r. (d3f0452)
        * Unique_ptring. (032a3a2)
        * Use readdir_r. (958e7a4)
        * Do not add same subdir several times. (6c5a987)
        * Add those volumes that are already mounted. (d8afc06)
        * Watch mounts and unmounts. (06c600f)
        * Made function method. (254ea23)
        * Can watch arbitrary number of subdirectories. (3cd4bb1)
        * Made daemon into a dynamic class. (06a18cb)
        * Query video results, too. (74bb301)
        * Build title from file name if it is missing. (5352765)
        * Basic support for video files. (df10bb3)
        * Do not archive hidden files. (3c6a0ba)

2013-10-17 Jussi Pakkanen

        * Fffafaffafddddh. (25e2afd)
        * Micro-optimisation. (9f64107)
        * Detect files that have been deleted while scanner was down.
          (55a7078)
        * Added SQL quote function. (653737c)
        * Renamed exe. (1a0fe68)
        * Made scannerdemo work daemon-like. (3982603)
        * Make subtreewatcher runnable from the outside. (2450f9d)
        * No longer delete mediastore on start. (a0f444a)
        * Better error diagnostics. (96dcc34)

2013-09-04 Jussi Pakkanen

        * Some initialization. (c361d16)

2013-09-03 Jussi Pakkanen

        * Better error text. (68ae9d3)
        * Store artist name if it is known. (f6303ce)
        * Can haz query results. (7f03b3b)
        * Return dummy data. (eee21f8)
        * Basic scope skeleton works. (605d3c9)
        * Scope experiment starts now. (f615023)

2013-08-30 Jussi Pakkanen

        * Can delete and query files. (1209664)
        * Consting. (8847edb)
        * Measure size and print it. (dabf7e1)
        * Do not run file system watcher for the time being. (e0b3d18)
        * Use only one query. (ae6cebf)
        * Open in read only mode. (a5dcea7)
        * Added query src file to bzr too. (7f57780)
        * Can haz queries. (c1362d7)
        * Put data into backing store. (cc5d14f)
        * Create a backing db. (af90bb1)

2013-08-05 Jussi Pakkanen

        * Typo fix from jamesh. (7ddba8b)

2013-07-12 Jussi Pakkanen

        * Comment. (692a2fb)
        * Close dirs after traversal. (a45cad9)
        * Betterer meta data. (9a201dc)
        * Use exceptions for errors. (dc572b0)
        * Putting pieces together. (f8193a1)
        * Renamed exe. (e19b5d4)
        * Work work work. (96fe2d4)
        * Moved subtreewatcher to a class file. (f6d3250)

2013-07-10 Jussi Pakkanen

        * Even more cleanups. (c25100b)
        * Even more inotify flag mangling. (3758f93)
        * Inotify flag cleanup. (0557a46)
        * Update watch subscriptions as subdirs come and go. (70eb86f)
        * Refactoring. (cef76ee)
        * Print what is happening. (1e752ea)
        * Watch for it. (fdae716)
        * Initialise and shutdown inotify. (1b84d50)
        * Started on subtree change watcher. (1fc0e98)
        * Extract meta data properly. (090e18a)
        * Started work on GStreamer based metadata extractor. (d8d8c98)

2013-07-09 Jussi Pakkanen

        * Can store and query for media files. (38919ab)
        * Created MediaFile class. (18f062c)
        * Do not crash. Which is always nice. (21c5333)
        * Created a test app to watch for mounted files. (f57587c)
        * Something. (2dead3a)
        * Created a simple file type autodetector. (97f72ff)
        * Can traverse subdirs. (7b75e38)
        * Started work on scanning experiment. (bcd1aa3)
