summaryrefslogtreecommitdiff
path: root/src/eom-jobs.c
diff options
context:
space:
mode:
authorMonsta <[email protected]>2015-01-06 13:34:48 +0300
committerStefano Karapetsas <[email protected]>2015-03-15 22:45:54 +0100
commit821e4a1be8a16a59316c5cca1f200b667c0c93d1 (patch)
treec75549d52ca2fba7742ab1a16ac7f782d8eaa582 /src/eom-jobs.c
parent6621348ea4f4fd49a959ac3dbf78efd5f7c0b1dd (diff)
downloadeom-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.c44
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);