diff options
author | Monsta <[email protected]> | 2015-01-06 13:34:48 +0300 |
---|---|---|
committer | Stefano Karapetsas <[email protected]> | 2015-03-15 22:45:54 +0100 |
commit | 821e4a1be8a16a59316c5cca1f200b667c0c93d1 (patch) | |
tree | c75549d52ca2fba7742ab1a16ac7f782d8eaa582 /src/eom-jobs.c | |
parent | 6621348ea4f4fd49a959ac3dbf78efd5f7c0b1dd (diff) | |
download | eom-821e4a1be8a16a59316c5cca1f200b667c0c93d1.tar.bz2 eom-821e4a1be8a16a59316c5cca1f200b667c0c93d1.tar.xz |
some fixes from upstream:
https://git.gnome.org/browse/eog/commit/?id=ffd057a0be9610b49f2dc718060c82c4ee1065be
https://git.gnome.org/browse/eog/commit/?id=40919ebb2ce1fd70edae61c7b578c6a7ce8ef432
https://git.gnome.org/browse/eog/commit/?id=a3b769506abbbf7b24547b95c9c99349e99d44c0
Closes https://github.com/mate-desktop/eom/pull/67
Diffstat (limited to 'src/eom-jobs.c')
-rw-r--r-- | src/eom-jobs.c | 44 |
1 files changed, 36 insertions, 8 deletions
diff --git a/src/eom-jobs.c b/src/eom-jobs.c index d122a91..df5c714 100644 --- a/src/eom-jobs.c +++ b/src/eom-jobs.c @@ -613,10 +613,24 @@ eom_job_save_run (EomJob *ejob) eom_image_data_ref (image); if (!eom_image_has_data (image, EOM_IMAGE_DATA_ALL)) { - eom_image_load (image, - EOM_IMAGE_DATA_ALL, - NULL, - &ejob->error); + EomImageMetadataStatus m_status; + gint data2load = 0; + + m_status = eom_image_get_metadata_status (image); + if (!eom_image_has_data (image, EOM_IMAGE_DATA_IMAGE)) { + // Queue full read in this case + data2load = EOM_IMAGE_DATA_ALL; + } else if (m_status == EOM_IMAGE_METADATA_NOT_READ) { + // Load only if we haven't read it yet + data2load = EOM_IMAGE_DATA_EXIF | EOM_IMAGE_DATA_XMP; + } + + if (data2load != 0) { + eom_image_load (image, + data2load, + NULL, + &ejob->error); + } } handler_id = g_signal_connect (G_OBJECT (image), @@ -720,10 +734,24 @@ eom_job_save_as_run (EomJob *ejob) eom_image_data_ref (image); if (!eom_image_has_data (image, EOM_IMAGE_DATA_ALL)) { - eom_image_load (image, - EOM_IMAGE_DATA_ALL, - NULL, - &ejob->error); + EomImageMetadataStatus m_status; + gint data2load = 0; + + m_status = eom_image_get_metadata_status (image); + if (!eom_image_has_data (image, EOM_IMAGE_DATA_IMAGE)) { + // Queue full read in this case + data2load = EOM_IMAGE_DATA_ALL; + } else if (m_status == EOM_IMAGE_METADATA_NOT_READ) { + // Load only if we haven't read it yet + data2load = EOM_IMAGE_DATA_EXIF | EOM_IMAGE_DATA_XMP; + } + + if (data2load != 0) { + eom_image_load (image, + data2load, + NULL, + &ejob->error); + } } g_assert (ejob->error == NULL); |