From 821e4a1be8a16a59316c5cca1f200b667c0c93d1 Mon Sep 17 00:00:00 2001 From: Monsta Date: Tue, 6 Jan 2015 13:34:48 +0300 Subject: 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 --- src/eom-jobs.c | 44 ++++++++++++++++++++++++++++++++++++-------- 1 file changed, 36 insertions(+), 8 deletions(-) (limited to 'src/eom-jobs.c') 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); -- cgit v1.2.1