| 819 | void WaitToDelete(ProgramInfo *pginfo) |
| 820 | { |
| 821 | QDateTime startOfWaiting = mythCurrentDateTime(); |
| 822 | |
| 823 | VERBOSE(VB_GENERAL, |
| 824 | "Transcode: delete old file: " |
| 825 | "waiting while program is in use."); |
| 826 | bool inUse = true; |
| 827 | MSqlQuery query(MSqlQuery::InitCon()); |
| 828 | while (inUse) |
| 829 | { |
| 830 | query.prepare("SELECT count(*) FROM inuseprograms " |
| 831 | "WHERE chanid = :CHANID " |
| 832 | "AND starttime = :STARTTIME " |
| 833 | "AND lastupdatetime < :LASTUPDATETIME " |
| 834 | "AND recusage = 'player' ;"); |
| 835 | query.bindValue(":CHANID", pginfo->chanid); |
| 836 | query.bindValue(":STARTTIME", pginfo->recstartts); |
| 837 | query.bindValue(":LASTUPDATETIME", startOfWaiting); |
| 838 | if (!query.exec() || !query.next()) |
| 839 | { |
| 840 | VERBOSE(VB_GENERAL, |
| 841 | "Transcode: delete old file: in-use query failed;"); |
| 842 | inUse = false; |
| 843 | } |
| 844 | else |
| 845 | { |
| 846 | inUse = (query.value(0).toUInt() != 0); |
| 847 | } |
| 848 | |
| 849 | if (inUse) |
| 850 | { |
| 851 | unsigned secondsToWait = 10; |
| 852 | VERBOSE(VB_GENERAL, |
| 853 | QString("Transcode: program in use, " |
| 854 | "rechecking in %1 seconds.").arg(secondsToWait)); |
| 855 | sleep(secondsToWait); |
| 856 | } |
| 857 | } |
| 858 | VERBOSE(VB_GENERAL, "Transcode: program is no longer in use."); |
| 859 | } |
| 860 | |
| 914 | MSqlQuery query(MSqlQuery::InitCon()); |
| 915 | |
| 916 | if (useCutlist) |
| 917 | { |
| 918 | query.prepare("DELETE FROM recordedmarkup " |
| 919 | "WHERE chanid = :CHANID " |
| 920 | "AND starttime = :STARTTIME "); |
| 921 | query.bindValue(":CHANID", pginfo->chanid); |
| 922 | query.bindValue(":STARTTIME", pginfo->recstartts); |
| 923 | |
| 924 | if (!query.exec()) |
| 925 | MythDB::DBError("Error in mythtranscode", query); |
| 926 | |
| 927 | query.prepare("UPDATE recorded " |
| 928 | "SET cutlist = :CUTLIST, bookmark = :BOOKMARK, " |
| 929 | "watched = :WATCHED WHERE chanid = :CHANID " |
| 930 | "AND starttime = :STARTTIME ;"); |
| 931 | query.bindValue(":CUTLIST", "0"); |
| 932 | query.bindValue(":BOOKMARK", "0"); |
| 933 | query.bindValue(":WATCHED", "0"); |
| 934 | query.bindValue(":CHANID", pginfo->chanid); |
| 935 | query.bindValue(":STARTTIME", pginfo->recstartts); |
| 936 | |
| 937 | if (!query.exec()) |
| 938 | MythDB::DBError("Error in mythtranscode", query); |
| 939 | |
| 940 | pginfo->SetCommFlagged(COMM_FLAG_NOT_FLAGGED); |
| 941 | } |
| 942 | else |
| 943 | { |
| 944 | query.prepare("DELETE FROM recordedmarkup " |
| 945 | "WHERE chanid = :CHANID " |
| 946 | "AND starttime = :STARTTIME " |
| 947 | "AND type not in ( :COMM_START, " |
| 948 | " :COMM_END, :BOOKMARK, " |
| 949 | " :CUTLIST_START, :CUTLIST_END) ;"); |
| 950 | query.bindValue(":CHANID", pginfo->chanid); |
| 951 | query.bindValue(":STARTTIME", pginfo->recstartts); |
| 952 | query.bindValue(":COMM_START", MARK_COMM_START); |
| 953 | query.bindValue(":COMM_END", MARK_COMM_END); |
| 954 | query.bindValue(":BOOKMARK", MARK_BOOKMARK); |
| 955 | query.bindValue(":CUTLIST_START", MARK_CUT_START); |
| 956 | query.bindValue(":CUTLIST_END", MARK_CUT_END); |
| 957 | |
| 958 | if (!query.exec()) |
| 959 | MythDB::DBError("Error in mythtranscode", query); |
| 960 | } |
| 961 | |
974 | | MSqlQuery query(MSqlQuery::InitCon()); |
975 | | |
976 | | if (useCutlist) |
977 | | { |
978 | | query.prepare("DELETE FROM recordedmarkup " |
979 | | "WHERE chanid = :CHANID " |
980 | | "AND starttime = :STARTTIME "); |
981 | | query.bindValue(":CHANID", pginfo->chanid); |
982 | | query.bindValue(":STARTTIME", pginfo->recstartts); |
983 | | |
984 | | if (!query.exec()) |
985 | | MythDB::DBError("Error in mythtranscode", query); |
986 | | |
987 | | query.prepare("UPDATE recorded " |
988 | | "SET cutlist = :CUTLIST, bookmark = :BOOKMARK, " |
989 | | "watched = :WATCHED WHERE chanid = :CHANID " |
990 | | "AND starttime = :STARTTIME ;"); |
991 | | query.bindValue(":CUTLIST", "0"); |
992 | | query.bindValue(":BOOKMARK", "0"); |
993 | | query.bindValue(":WATCHED", "0"); |
994 | | query.bindValue(":CHANID", pginfo->chanid); |
995 | | query.bindValue(":STARTTIME", pginfo->recstartts); |
996 | | |
997 | | if (!query.exec()) |
998 | | MythDB::DBError("Error in mythtranscode", query); |
999 | | |
1000 | | pginfo->SetCommFlagged(COMM_FLAG_NOT_FLAGGED); |
1001 | | } |
1002 | | else |
1003 | | { |
1004 | | query.prepare("DELETE FROM recordedmarkup " |
1005 | | "WHERE chanid = :CHANID " |
1006 | | "AND starttime = :STARTTIME " |
1007 | | "AND type not in ( :COMM_START, " |
1008 | | " :COMM_END, :BOOKMARK, " |
1009 | | " :CUTLIST_START, :CUTLIST_END) ;"); |
1010 | | query.bindValue(":CHANID", pginfo->chanid); |
1011 | | query.bindValue(":STARTTIME", pginfo->recstartts); |
1012 | | query.bindValue(":COMM_START", MARK_COMM_START); |
1013 | | query.bindValue(":COMM_END", MARK_COMM_END); |
1014 | | query.bindValue(":BOOKMARK", MARK_BOOKMARK); |
1015 | | query.bindValue(":CUTLIST_START", MARK_CUT_START); |
1016 | | query.bindValue(":CUTLIST_END", MARK_CUT_END); |
1017 | | |
1018 | | if (!query.exec()) |
1019 | | MythDB::DBError("Error in mythtranscode", query); |
1020 | | } |
1021 | | |