diff options
Diffstat (limited to 'src/view/viewer.c')
-rw-r--r-- | src/view/viewer.c | 40 |
1 files changed, 29 insertions, 11 deletions
diff --git a/src/view/viewer.c b/src/view/viewer.c index 61cc384..4968fc4 100644 --- a/src/view/viewer.c +++ b/src/view/viewer.c @@ -471,7 +471,9 @@ static void _set_image_orientation(struct _priv *priv) { app_media *am; app_media_info *mi; - Evas_Object *image, *obj; + image_meta_h image; + media_content_orientation_e orient; + int r; if (priv->viewer.cur != VIEWER_PHOTO) return; @@ -488,24 +490,40 @@ static void _set_image_orientation(struct _priv *priv) return; } - image = elm_image_add(priv->base); + image = app_media_get_image_handle(am); if (!image) { - _ERR("failed to add image"); + _ERR("failed to getting image handle"); return; } - elm_image_file_set(image, mi->file_path, NULL); - elm_image_orient_set(image, ELM_IMAGE_ROTATE_270); - - obj = elm_image_object_get(image); - if (!obj) { - _ERR("failed to get image object"); + switch (mi->image->orientation) { + case MEDIA_CONTENT_ORIENTATION_NORMAL: + orient = MEDIA_CONTENT_ORIENTATION_ROT_270; + break; + case MEDIA_CONTENT_ORIENTATION_ROT_90: + orient = MEDIA_CONTENT_ORIENTATION_NORMAL; + break; + case MEDIA_CONTENT_ORIENTATION_ROT_180: + orient = MEDIA_CONTENT_ORIENTATION_ROT_90; + break; + case MEDIA_CONTENT_ORIENTATION_ROT_270: + orient = MEDIA_CONTENT_ORIENTATION_ROT_180; + break; + default: return; } - evas_object_image_save(obj, mi->file_path, NULL, "quality=100"); + r = image_meta_set_orientation(image, orient); + if (r != MEDIA_CONTENT_ERROR_NONE) { + _ERR("failed to set played position"); + return; + } - media_info_refresh_metadata_to_db(mi->media_id); + r = image_meta_update_to_db(image); + if (r != MEDIA_CONTENT_ERROR_NONE) { + _ERR("failed to update db"); + return; + } app_media_update(am); } |