Improve of showing channel program 71/44971/1 accepted/tizen/tv/20150731.005403 submit/tizen/20150730.133648
authorjinwoo.shin <jw0227.shin@samsung.com>
Thu, 30 Jul 2015 07:23:22 +0000 (16:23 +0900)
committerjinwoo.shin <jw0227.shin@samsung.com>
Thu, 30 Jul 2015 07:23:22 +0000 (16:23 +0900)
Change-Id: I3205f79b3df2bb73d4cb9fd801dd861e663b7e21
Signed-off-by: jinwoo.shin <jw0227.shin@samsung.com>
include/define.h
src/layout_channelinfo_list.c
src/tv.c
src/view_channelinfo.c

index 94c2c4b..ed6f92c 100644 (file)
@@ -19,7 +19,7 @@
 
 #include "strings.h"
 
-#define KEY_SVCID "svcid"
+#define KEY_SVCID "service_id"
 
 #define PART_CONTENT "elm.swallow.content"
 #define PART_TEXT "elm.text"
index a6ab0b9..89d71ff 100644 (file)
@@ -306,6 +306,8 @@ static void _update(void *layout_data, int type, void *data)
                                        priv->channel_info->service_id);
                        if (r < 0)
                                _ERR("failed to tune next channel");
+
+                       _update_channel_info(priv);
                }
        }
 }
index b0da082..9685aa2 100644 (file)
--- a/src/tv.c
+++ b/src/tv.c
@@ -335,6 +335,7 @@ int tv_epg_get_program(int service_id, struct tv_program_request *request)
                        (TvServiceEpgCallback) _tv_epg_event_cb, request);
        if (r != TVS_ERROR_OK) {
                _ERR("failed to get epg get current program : %d", service_id);
+               free(request);
                return -1;
        }
 
index 0bd6426..14e2960 100644 (file)
@@ -201,7 +201,11 @@ static void _load_program_info(Evas_Object *obj,
                const struct tv_program_info *prog)
 {
        char buf[BUF_MAX];
-       int r;
+       int r, service_id;
+
+       service_id = evas_object_data_get(obj, KEY_SVCID);
+       if (service_id != prog->service_id)
+               return;
 
        if (prog->start_time && prog->end_time) {
                r = _get_program_time(buf, sizeof(buf),
@@ -261,16 +265,21 @@ void draw_channel_info(Evas_Object *obj,
 
        _load_channel_text(obj, channel_info);
        _set_icon_box(obj, channel_info);
+       evas_object_data_set(obj, KEY_SVCID, channel_info->service_id);
 
        prog_req = calloc(1, sizeof(*prog_req));
        prog_req->tv_program_cb = _tv_program_cb;
        prog_req->user_data = obj;
 
-       if (channel_info->service_id == current_service)
+       r = tv_epg_get_cache_program(channel_info->service_id,
+                       prog_req);
+
+       if (channel_info->service_id == current_service) {
+               prog_req = calloc(1, sizeof(*prog_req));
+               prog_req->tv_program_cb = _tv_program_cb;
+               prog_req->user_data = obj;
                r = tv_epg_get_program(channel_info->service_id, prog_req);
-       else
-               r = tv_epg_get_cache_program(channel_info->service_id,
-                               prog_req);
+       }
 
        if (r < 0)
                viewmgr_update_view(VIEW_CHANNELINFO,