Update EPG Cache(thanks to open source community)
[vuplus_dvbapp] / lib / service / servicedvbrecord.cpp
index 6ce66ae..b3d0992 100644 (file)
@@ -171,43 +171,10 @@ RESULT eDVBServiceRecord::prepare(const char *filename, time_t begTime, time_t e
                        ret = meta.updateMeta(m_filename) ? -255 : 0;
                        if (!ret)
                        {
-                               const eit_event_struct *event = 0;
-                               eEPGCache::getInstance()->Lock();
-                               if ( eit_event_id != -1 )
-                               {
-                                       eDebug("query epg event id %d", eit_event_id);
-                                       eEPGCache::getInstance()->lookupEventId(ref, eit_event_id, event);
-                               }
-                               if ( !event && (begTime != -1 && endTime != -1) )
-                               {
-                                       time_t queryTime = begTime + ((endTime-begTime)/2);
-                                       tm beg, end, query;
-                                       localtime_r(&begTime, &beg);
-                                       localtime_r(&endTime, &end);
-                                       localtime_r(&queryTime, &query);
-                                       eDebug("query stime %d:%d:%d, etime %d:%d:%d, qtime %d:%d:%d",
-                                               beg.tm_hour, beg.tm_min, beg.tm_sec,
-                                               end.tm_hour, end.tm_min, end.tm_sec,
-                                               query.tm_hour, query.tm_min, query.tm_sec);
-                                       eEPGCache::getInstance()->lookupEventTime(ref, queryTime, event);
-                               }
-                               if ( event )
-                               {
-                                       eDebug("found event.. store to disc");
-                                       std::string fname = m_filename;
-                                       fname.erase(fname.length()-2, 2);
-                                       fname+="eit";
-                                       int fd = open(fname.c_str(), O_CREAT|O_WRONLY, 0777);
-                                       if (fd>-1)
-                                       {
-                                               int evLen=HILO(event->descriptors_loop_length)+12/*EIT_LOOP_SIZE*/;
-                                               int wr = ::write( fd, (unsigned char*)event, evLen );
-                                               if ( wr != evLen )
-                                                       eDebug("eit write error (%m)");
-                                               ::close(fd);
-                                       }
-                               }
-                               eEPGCache::getInstance()->Unlock();
+                               std::string fname = filename;
+                               fname.erase(fname.length()-2, 2);
+                               fname += "eit";
+                               eEPGCache::getInstance()->saveEventToFile(fname.c_str(), ref, eit_event_id, begTime, endTime);
                        }
                }
                return ret;